GetStringScripts 함수(winnls.h)
지정된 유니코드 문자열에 사용되는 스크립트 목록을 제공합니다.
구문
int GetStringScripts(
[in] DWORD dwFlags,
[in] LPCWSTR lpString,
[in] int cchString,
[out, optional] LPWSTR lpScripts,
[in] int cchScripts
);
매개 변수
[in] dwFlags
스크립트 검색 옵션을 지정하는 플래그입니다.
값 | 의미 |
---|---|
|
"Qaii"(INHERITED) 및 "Zyyy"(COMMON) 스크립트 정보를 검색합니다. 이 플래그는 할당되지 않은 문자의 처리에 영향을 주지 않습니다. 입력 문자열의 이러한 문자는 항상 스크립트 문자열에 "Zzzz"(UNASSIGNED 스크립트)를 표시합니다. |
[in] lpString
분석할 유니코드 문자열에 대한 포인터입니다.
[in] cchString
lpString으로 표시된 유니코드 문자열의 크기(문자)입니다. 유니코드 문자열이 null로 끝나는 경우 애플리케이션은 이 매개 변수를 -1로 설정합니다. 애플리케이션이 이 매개 변수를 0으로 설정하면 함수는 lpScripts 에서 null 유니코드 문자열(L"\0")을 검색하고 1을 반환합니다.
[out, optional] lpScripts
ISO 15924에서 사용되는 4자 표기법을 사용하여 스크립트 목록을 나타내는 null로 끝나는 문자열을 검색하는 버퍼에 대한 포인터입니다. 각 스크립트 이름은 4개의 라틴 문자로 구성되며 이름은 사전순으로 검색됩니다. 마지막을 포함한 각 이름 뒤에 세미콜론이 옵니다.
또는 cchScripts가 0으로 설정된 경우 이 매개 변수에 NULL이 포함됩니다. 이 경우 함수는 스크립트 버퍼에 필요한 크기를 반환합니다.
[in] cchScripts
lpScripts로 표시된 스크립트 버퍼의 크기(문자 단위)입니다.
또는 애플리케이션에서 이 매개 변수를 0으로 설정할 수 있습니다. 이 경우 함수는 lpScripts에서 NULL을 검색하고 스크립트 버퍼에 필요한 크기를 반환합니다.
반환 값
성공하고 cchScripts 가 0이 아닌 값으로 설정된 경우 종료 null 문자를 포함하여 출력 버퍼에서 검색된 문자 수를 반환합니다. 예를 들어 입력 문자열에 COMMON 또는 INHERITED 문자만 포함되고 GSS_ALLOW_INHERITED_COMMON 설정되지 않은 경우 함수는 1을 반환하여 스크립트를 찾을 수 없음을 나타냅니다. 발견된 각 스크립트가 5자(4자 + 구분 기호)를 추가한다는 점을 감안할 때 간단한 수학 연산은 스크립트 수를 (return_code - 1) /5로 제공합니다.
함수가 성공하고 cchScripts 값이 0이면 함수는 스크립트 버퍼에 대해 종료 null 문자를 포함한 문자로 필요한 크기를 반환합니다. 스크립트 수는 위에서 설명한 대로 입니다.
이 함수는 성공하지 못하면 0을 반환합니다. 확장된 오류 정보를 가져오기 위해 애플리케이션은 다음 오류 코드 중 하나를 반환할 수 있는 GetLastError를 호출할 수 있습니다.
- ERROR_BADDB. 함수가 데이터에 액세스할 수 없습니다. 이 상황은 일반적으로 발생하지 않아야 하며 일반적으로 잘못된 설치, 디스크 문제 등을 나타냅니다.
- ERROR_INSUFFICIENT_BUFFER. 제공된 버퍼 크기가 충분히 크지 않거나 NULL로 잘못 설정되었습니다.
- ERROR_INVALID_FLAGS. 플래그에 제공된 값이 잘못되었습니다.
- ERROR_INVALID_PARAMETER. 매개 변수 값이 잘못되었습니다.
설명
이 함수는 IDN(국제화된 도메인 이름)과 관련된 보안 문제를 완화하기 위한 전략의 일부로 유용합니다.
스크립트 결정은 할당되지 않은 문자가 "Zyyy"(COMMON) 대신 "Zzzz"(UNASSIGNED) 값을 갖는다는 점을 제외하고 의 유니코드 컨소시엄 http://www.unicode.org/Public/4.1.0/ucd/Scripts.txt에서 게시한 스크립트 값을 기반으로 합니다.
다음은 이 함수의 동작에 대한 몇 가지 예입니다.
입력 문자열 | dwFlags | lpScripts | 스크립트 | |
---|---|---|---|---|
Microsoft.com | 0 | Latn; | 라틴어 | |
Microsoft.com | GSS_ALLOW_INHERITED_COMMON | Latn; Zyyy; | 라틴어 + 일반 | |
니 뇨 | 004E 0069 0241 006F | GSS_ALLOW_INHERITED_COMMON | Latn; | 라틴어 |
TILDE와 함께 LATIN SMALL LETTER N 사용 | ||||
니 뇨 | 004E 0069 006E 0303 006F | GSS_ALLOW_INHERITED_COMMON | Latn; Qaii; | 라틴어 + 상속됨 |
COMBINING TILDE 사용 | ||||
Spооf | 0053 0070 043e 043e 0066 | 0 | Latn; Cyrl; | 라틴어 + 키릴 자모 |
키릴 자모 작은 문자 O 사용 | ||||
| U+f000 | 0 | Zzzz; | 할당되지 않음 |
| U+f000 | GSS_ALLOW_INHERITED_COMMON | Zzzz; | 할당되지 않음 |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winnls.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |