GetStringTypeExW 함수(stringapiset.h)

지정된 소스 문자열의 문자에 대한 문자 형식 정보를 검색합니다. 문자열의 각 문자에 대해 함수는 출력 배열의 해당 16비트 요소에서 하나 이상의 비트를 설정합니다. 각 비트는 지정된 문자 형식(예: 문자, 숫자 또는 둘 다)을 식별합니다.

주의GetStringTypeEx 함수를 잘못 사용하면 애플리케이션의 보안이 손상됩니다. 버퍼 오버플로를 방지하려면 애플리케이션이 출력 버퍼 크기를 올바르게 설정해야 합니다. 자세한 보안 정보는 보안 고려 사항: Windows 사용자 인터페이스를 참조하세요.
 
참고 가까운 상대 인 GetStringTypeAGetStringTypeW와 달리 이 함수는 #define 유니코드 스위치를 사용하여 적절한 ANSI 또는 유니코드 동작을 표시합니다. 문자 형식 검색에 권장되는 함수입니다.
 

구문

BOOL GetStringTypeExW(
  [in]  LCID                          Locale,
  [in]  DWORD                         dwInfoType,
  [in]  _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
  [in]  int                           cchSrc,
  [out] LPWORD                        lpCharType
);

매개 변수

[in] Locale

로캘을 지정하는 로캘 식별자입니다. 이 값은 ANSI 코드 페이지를 고유하게 정의합니다. MAKELCID 매크로를 사용하여 로캘 식별자를 만들거나 다음 미리 정의된 값 중 하나를 사용할 수 있습니다.

Windows Vista 이상: 다음 사용자 지정 로캘 식별자도 지원됩니다.

[in] dwInfoType

검색할 문자 형식 정보를 지정하는 플래그입니다. 가능한 플래그 값은 GetStringTypeWdwInfoType 매개 변수를 참조하세요. 문자 형식 비트에 대한 자세한 내용은 GetStringTypeW에 대한 설명을 참조하세요.

[in] lpSrcStr

문자 형식을 검색할 문자열에 대한 포인터입니다. cchSrc가 음수 값으로 설정된 경우 문자열은 null로 종료된 것으로 간주됩니다.

[in] cchSrc

lpSrcStr로 표시된 문자열의 크기(문자)입니다. 크기는 함수의 ANSI 버전에 대한 바이트 또는 유니코드 버전의 와이드 문자를 나타냅니다. 크기에 종료 null 문자가 포함된 경우 함수는 해당 문자에 대한 문자 형식 정보를 검색합니다. 애플리케이션에서 크기를 음수 정수로 설정하면 원본 문자열은 null로 종료된 것으로 간주되고 함수는 null 종료에 대한 추가 문자를 사용하여 크기를 자동으로 계산합니다.

[out] lpCharType

16비트 값 배열에 대한 포인터입니다. 이 배열의 길이는 원본 문자열의 각 문자에 대해 하나의 16비트 값을 받을 수 있을 만큼 커야 합니다. cchSrc가 음수가 아닌 경우 lpCharTypecchSrc 요소가 있는 단어 배열이어야 합니다. cchSrc가 음수로 설정된 경우 lpCharTypelpSrcStr + 1 요소가 있는 단어 배열입니다. 함수가 반환되면 이 배열에는 원본 문자열의 각 문자에 해당하는 한 단어가 포함됩니다.

반환 값

성공하면 0이 아닌 값을 반환하고, 그렇지 않으면 0을 반환합니다. 확장 오류 정보를 가져오기 위해 애플리케이션은 GetLastError를 호출할 수 있으며, 다음 오류 코드 중 하나를 반환할 수 있습니다.

  • ERROR_INVALID_FLAGS. 플래그에 제공된 값이 잘못되었습니다.
  • ERROR_INVALID_PARAMETER. 매개 변수 값이 잘못되었습니다.

설명

문자열 함수 사용에 대한 개요는 문자열을 참조하세요.

이 함수는 제공된 로캘에 대한 ANSI 코드 페이지를 사용하여 원본 문자열을 ANSI에서 유니코드로 변환합니다. 그런 다음 각 유니코드 문자에서 문자 형식 정보를 분석합니다.

이 함수의 ANSI 버전은 원본 문자열을 유니코드로 변환하고 해당 GetStringTypeW 함수를 호출합니다. 따라서 출력 버퍼의 단어는 원래 ANSI 문자열이 아니라 해당 유니코드에 해당합니다. ANSI에서 유니코드로 변환하면 문자열 길이가 변경됩니다. 예를 들어 ANSI 문자 쌍이 단일 유니코드 문자에 매핑할 수 있습니다. 따라서 출력 버퍼의 단어와 원래 ANSI 문자열의 문자 간의 대응은 멀티바이트 문자열과 같은 모든 경우에 일대일이 아닙니다. 따라서 이 함수의 ANSI 버전은 다중 문자 문자열에 한정되어 있습니다. 대신 함수의 유니코드 버전을 사용하는 것이 좋습니다.

이 함수는 GetStringTypeA와 GetStringTypeW 간의 매개 변수 차이로 인한 제한을 우회 합니다. 매개 변수 차이로 인해 애플리케이션은 #define UNICODE 스위치를 사용하여 GetStringType* 함수의 적절한 ANSI 또는 유니코드 버전을 자동으로 호출할 수 없습니다. 반면 GetStringTypeEx는 해당 스위치와 관련하여 제대로 작동합니다. 따라서 권장되는 함수입니다.

이 함수의 ANSI 버전을 유니코드 전용 로캘 식별자와 함께 사용하면 운영 체제에서 시스템 코드 페이지를 사용하기 때문에 함수가 성공할 수 있습니다. 그러나 시스템 코드 페이지에서 정의되지 않은 문자는 문자열에 물음표(?)로 표시됩니다.

lpSrcStrlpCharType 매개 변수의 값은 동일하지 않아야 합니다. 동일한 경우 함수는 ERROR_INVALID_PARAMETER 실패합니다.

Locale 매개 변수는 유니코드로 문자열 변환을 수행하는 데만 사용됩니다. 애플리케이션에서 제공하는 CTYPE* 값과는 아무 상관이 없습니다. 이러한 값은 유니코드 코드 포인트에 의해서만 결정되며 로캘에 따라 달라지지 않습니다. 예를 들어 그리스어 문자는 로 값에 대한 C1_ALPHA 지정됩니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 stringapiset.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

GetStringTypeW

국가 언어 지원

국가 언어 지원 기능