GetStringScripts 함수(winnls.h)

지정된 유니코드 문자열에 사용되는 스크립트 목록을 제공합니다.

구문

int GetStringScripts(
  [in]            DWORD   dwFlags,
  [in]            LPCWSTR lpString,
  [in]            int     cchString,
  [out, optional] LPWSTR  lpScripts,
  [in]            int     cchScripts
);

매개 변수

[in] dwFlags

스크립트 검색 옵션을 지정하는 플래그입니다.

의미
GSS_ALLOW_INHERITED_COMMON
"Qaii"(INHERITED) 및 "Zyyy"(COMMON) 스크립트 정보를 검색합니다. 이 플래그는 할당되지 않은 문자의 처리에 영향을 주지 않습니다. 입력 문자열의 이러한 문자는 항상 스크립트 문자열에 "Zzzz"(UNASSIGNED 스크립트)를 표시합니다.
 
참고 기본적으로 GetStringScriptslpString으로 표시된 입력 문자열에서 상속되거나 일반적인 문자를 무시합니다. GSS_ALLOW_INHERITED_COMMON 설정되지 않은 경우 입력 문자열에 이러한 문자가 포함되어 있더라도 스크립트 문자열에 "Qaii" 또는 "Zyyy"가 나타나지 않습니다. GSS_ALLOW_INHERITED_COMMON 설정되고 입력 문자열에 상속된 및/또는 공통 문자가 포함된 경우 각각 "Qaii" 및/또는 "Zyyy"가 스크립트 문자열에 표시됩니다. 주의 섹션을 참조하십시오.
 

[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

참고 항목

DownlevelGetStringScripts

IDN(Internationalized Domain Names) 처리

국가 언어 지원

국가 언어 지원 함수

VerifyScripts