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