SHAnsiToUnicode 함수(shlwapi.h)
[이 함수는 Windows XP 및 Windows Server 2003을 통해 사용할 수 있습니다. 이후 버전의 Windows에서는 변경되거나 사용하지 못할 수 있습니다.]
ANSI 코드 페이지에서 유니코드 코드 페이지로 문자열을 변환합니다.
구문
int SHAnsiToUnicode(
[in] PCSTR pszSrc,
[out] PWSTR pwszDst,
int cwchBuf
);
매개 변수
[in] pszSrc
형식: PCSTR
유니코드로 변환할 null로 종료된 ANSI 문자열에 대한 포인터입니다.
[out] pwszDst
형식: PWSTR
이 함수가 성공적으로 반환될 때 ANSI 문자가 WCHAR(유니코드)로 변환된 후 pszSrc에서 지정한 문자열을 수신하는 버퍼에 대한 포인터입니다. 버퍼는 종료 null 문자를 포함하여 cwchBuf 매개 변수에 지정된 유니코드 문자 수를 포함할 수 있을 만큼 커야 합니다.
cwchBuf
형식: int
pwszDst가 가리키는 버퍼에 포함될 수 있는 유니코드 문자 수입니다. 이 매개 변수는 0보다 커야 합니다.
반환 값
형식: int
종료 null 문자를 포함하여 pwszDst에 기록된 유니코드 문자 수를 반환합니다. 실패하면 0을 반환합니다.
설명
보안 경고: 이 함수를 잘못 사용하면 애플리케이션의 보안이 손상됩니다. 예를 들어 pwszDst 버퍼가 cwchBuf에 지정된 문자 수를 포함할 만큼 크지 않으면 버퍼 오버런이 발생할 수 있습니다. 버퍼 오버런은 액세스 위반이 발생하는 경우 애플리케이션에 대한 서비스 거부 공격을 일으킬 수 있습니다. 최악의 경우 버퍼 오버런을 통해 공격자가 실행 코드를 프로세스에 삽입할 수 있습니다( 특히 pwszDst 가 스택 기반 버퍼인 경우). 전체 문자열을 복사할 때 sizeof는 cwchBuf 매개 변수에 사용할 올바른 값이 아닌 바이트 수를 반환합니다. 대신 sizeof(pwszDst)/sizeof(WCHAR)를 사용합니다. 이 기술은 pwszDst 가 포인터가 아닌 배열이라고 가정합니다.
pwszDst 버퍼가 변환된 전체 출력 문자열을 포함할 만큼 크지 않으면 버퍼에 맞게 문자열이 잘립니다. 반환 문자열이 잘렸는지 검색할 수 있는 방법은 없습니다. 문자열은 잘린 경우에도 항상 null로 종료됩니다. 이렇게 하면 cwchBuf 문자가 pwszDst에 복사되지 않습니다. 유니코드 서로게이트 쌍의 중간에 문자열이 잘리지 않도록 시도하지 않습니다.
pszSrc 및 pwszDst 버퍼가 겹치면 함수의 동작이 정의되지 않습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional, Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server, Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | shlwapi.h |
DLL | Shlwapi.dll(버전 5.0 이상) |
추가 정보
StringCchLength