RtlAnsiStringToUnicodeString 함수(wdm.h)

RtlAnsiStringToUnicodeString 은 지정된 ANSI 원본 문자열을 유니코드 문자열로 변환합니다.

구문

NTSYSAPI NTSTATUS RtlAnsiStringToUnicodeString(
  [in, out] PUNICODE_STRING DestinationString,
  [in]      PCANSI_STRING   SourceString,
  [in]      BOOLEAN         AllocateDestinationString
);

매개 변수

[in, out] DestinationString

변환된 유니코드 문자열을 저장할 UNICODE_STRING 구조체에 대한 포인터입니다. AllocateDestinationStringTRUE이면 루틴은 문자열 데이터를 저장할 새 버퍼를 할당하고 DestinationString버퍼 멤버를 업데이트하여 새 버퍼를 가리킵니다. 그렇지 않으면 루틴은 현재 지정된 버퍼를 사용하여 문자열을 저장합니다.

[in] SourceString

유니코드로 변환할 ANSI 문자열에 대한 포인터입니다.

[in] AllocateDestinationString

이 루틴이 대상 문자열에 대한 버퍼 공간을 할당해야 하는지를 지정합니다. 이 경우 호출자는 RtlFreeUnicodeString을 호출하여 버퍼의 할당을 취소해야 합니다.

반환 값

변환에 성공하면 RtlAnsiStringToUnicodeString은 STATUS_SUCCESS 반환합니다. 실패 시 루틴은 메모리를 할당하지 않습니다.

설명

번역은 현재 시스템 로캘 정보를 준수합니다.

호출자가 AllocateDestinationString을TRUE로 설정하면 루틴은 DestinationString버퍼 멤버를 할당하는 버퍼에 대한 포인터로 바꿉니다. 루틴이 오류 상태 코드를 반환하는 경우에도 이전 값을 덮어쓸 수 있습니다.

이 루틴은 헤더 파일에 선언되지 않습니다. 그러나 다음 선언을 소스 코드에 복사할 수 있습니다.

NTSYSAPI
WCHAR
NTAPI
RtlAnsiCharToUnicodeChar(
    __inout PUCHAR *SourceCharacter
    );

다음 루틴을 사용하여 싱글 바이트 및 더블 바이트 문자를 유니코드 문자로 변환할 수 있습니다.

이러한 루틴 및 기타 문자열 처리 루틴에 대한 자세한 내용은 RTL(런타임 라이브러리) 루틴을 참조하세요.

RtlAnsiCharToUnicodeChar 에는 보안 결함이 있습니다. 대신 RtlAnsiStringToUnicodeString 루틴을 사용하는 것이 좋습니다.

항목에서 *SourceCharacter 가 2 바이트 문자 코드의 첫 번째 바이트를 포함하는 1 바이트 버퍼를 가리키는 경우 RtlAnsiCharToUnicodeChar 는 두 번째 바이트를 읽으려고 할 때 버퍼를 오버런합니다.

시스템 시작 시 운영 체제는 로캘 설정에서 사용자 언어를 결정하고 적절한 시스템 ANSI 코드 페이지를 설치합니다. RtlAnsiCharToUnicodeChar 는 이 코드 페이지를 사용하여 싱글 바이트 또는 더블 바이트 문자를 해당 유니코드 문자로 변환합니다.

시스템 ANSI 코드 페이지에서 단일 바이트 문자 집합(즉, ANSI 문자 집합)을 정의하는 경우 RtlAnsiCharToUnicodeChar 는 해당 유니코드 문자를 생성하기 위해 0x7f 0x00 범위에서 ANSI 문자를 0으로 확장 하여 변환 작업의 속도를 향상합니다. 루틴은 싱글 바이트 코드 페이지에서 이 문자를 yen 기호로 정의하더라도 0x5c ANSI 값을 백슬래시 문자("\")로 변환합니다.

항목에서 *SourceCharacter 가 잘못된 문자 코드를 가리키는 경우 RtlAnsiCharToUnicodeChar 는 0x0020 유니코드 공간 문자 코드를 반환합니다. 다음 목록에서는 잘못된 문자 코드의 예를 보여 줍니다.

  • 문자 코드의 첫 번째 바이트는 2 바이트 문자 코드의 두 번째 바이트로만 유효한 값입니다.

  • 2 바이트 문자 코드의 두 번째 바이트는 첫 번째 바이트로만 유효한 값입니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

추가 정보

ANSI_STRING

RtlAnsiStringToUnicodeSize

RtlFreeUnicodeString

RtlInitAnsiString

RtlUnicodeStringToAnsiString

UNICODE_STRING