다음을 통해 공유


FoldStringW 함수(stringapiset.h)

한 유니코드 문자열을 다른 문자열에 매핑하여 지정된 변환을 수행합니다. 문자열 함수 사용에 대한 개요는 문자열을 참조하세요.

주의FoldString을 잘못 사용하면 애플리케이션의 보안이 손상됩니다. 올바르게 매핑되지 않은 문자열은 잘못된 입력을 생성할 수 있습니다. 문자열을 사용하기 전에 유효한지 테스트하고 오류 처리기를 제공합니다. 자세한 내용은 보안 고려 사항: 국가별 기능을 참조하세요.
 

구문

int FoldStringW(
  [in]            DWORD                         dwMapFlags,
  [in]            _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
  [in]            int                           cchSrc,
  [out, optional] LPWSTR                        lpDestStr,
  [in]            int                           cchDest
);

매개 변수

[in] dwMapFlags

문자열 매핑 중에 사용할 변환 유형을 지정하는 플래그입니다. 이 매개 변수는 다음 값의 조합일 수 있습니다.

플래그 의미
MAP_COMPOSITE
악센트가 있는 문자를 분해된 문자에 매핑합니다. 즉, 기본 문자와 하나 이상의 비스페이스 문자가 각각 고유한 코드 포인트 값을 갖는 문자입니다. 예를 들어 Ä는 A + 으로 표시됩니다. LATIN CAPITAL LETTER A(U+0041) + COMBINING DIAERESIS(U+0308). 이 플래그는 Windows Vista의 정규화 양식 D와 동일합니다. 이 플래그는 MB_PRECOMPOSED 사용할 수 없습니다.
MAP_EXPAND_LIGATURES
모든 합자 문자를 확장하여 두 문자로 표시되도록 합니다. 예를 들어 합자 "æ"(U+00e6)는 두 문자 "a"(U+0061) + "e"(U+0065)로 확장됩니다. 이 값은 MAP_PRECOMPOSED 또는 MAP_COMPOSITE 결합할 수 없습니다.
MAP_FOLDCZONE
호환성 영역 문자를 표준 유니코드 등가물로 접습니다. 이 플래그는 MAP_COMPOSITE 플래그도 설정된 경우 Windows Vista의 정규화 형식 KD와 동일합니다. 복합 플래그가 설정되지 않은 경우(기본값) 이 플래그는 Windows Vista의 정규화 형식 KC와 동일합니다.
MAP_FOLDDIGITS
모든 숫자를 유니코드 문자 0~9에 매핑합니다.
MAP_PRECOMPOSED
강조 문자와 기본 문자가 단일 문자 값으로 결합되는 미리 구성된 문자에 강조 문자를 매핑합니다. 이 플래그는 Windows Vista의 정규화 형식 C와 동일합니다. 이 값은 MAP_COMPOSITE 결합할 수 없습니다.

[in] lpSrcStr

함수가 매핑하는 원본 문자열에 대한 포인터입니다.

[in] cchSrc

종료 null 문자를 제외하고 lpSrcStr로 표시된 원본 문자열의 크기(문자)입니다. 애플리케이션은 매개 변수를 음수 값으로 설정하여 원본 문자열이 null로 종료되도록 지정할 수 있습니다. 이 경우 함수는 문자열 길이를 자동으로 계산하고 null은 lpDestStr로 표시된 매핑된 문자열을 종료합니다.

[out, optional] lpDestStr

이 함수가 매핑된 문자열을 검색하는 버퍼에 대한 포인터입니다.

[in] cchDest

lpDestStr로 표시된 대상 문자열의 크기(문자)입니다. 종료 null 문자의 공간이 cchSrc에 포함된 경우 cchDest 에는 종료 null 문자에 대한 공간도 포함되어야 합니다.

애플리케이션은 cchDest 를 0으로 설정할 수 있습니다. 이 경우 함수는 lpDestStr 매개 변수를 사용하지 않고 매핑된 문자열에 필요한 버퍼 크기를 반환합니다. MAP_FOLDDIGITS 플래그를 지정하면 필요한 실제 문자 수가 최대 크기보다 작더라도 반환 값은 필요한 최대 크기입니다. 최대 크기가 전달되지 않으면 함수는 ERROR_INSUFFICIENT_BUFFER 함께 실패합니다.

반환 값

성공한 경우 종료 null 문자를 포함하여 변환된 문자열의 문자 수를 반환합니다. 함수가 성공하고 cchDest 값이 0이면 반환 값은 종료 null 문자를 포함하여 변환된 문자열을 보유하는 데 필요한 버퍼의 크기입니다.

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

  • ERROR_INSUFFICIENT_BUFFER. 제공된 버퍼 크기가 충분히 크지 않거나 NULL로 잘못 설정되었습니다.
  • ERROR_INVALID_DATA. 데이터가 잘못되었습니다.
  • ERROR_INVALID_FLAGS. 플래그에 제공된 값이 잘못되었습니다.
  • ERROR_INVALID_PARAMETER. 매개 변수 값이 잘못되었습니다.
  • ERROR_MOD_NOT_FOUND. 모듈을 찾을 수 없습니다.
  • ERROR_OUTOFMEMORY. 이 작업을 완료할 수 있는 스토리지가 부족했습니다.
  • ERROR_PROC_NOT_FOUND. 필요한 절차를 찾을 수 없습니다.

설명

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

유니코드의 호환성 영역은 문자에 대한 다른 인코딩 표준의 문자에 할당되는 0xFFEF 통해 0xF900 범위의 문자로 구성되지만 실제로는 유니코드에 이미 있는 문자의 변형입니다. 호환성 영역은 이러한 표준에 대한 왕복 매핑을 지원하는 데 사용됩니다. 애플리케이션은 MAP_FOLDCZONE 플래그를 사용하여 호환성 영역에서 문자의 중복을 지원하지 않도록 할 수 있습니다.

Windows Vista부터: 이 함수는 유니코드 정규화를 지원합니다. 모든 유니코드 호환성 문자가 매핑됩니다.

Windows Vista부터: MAP_FOLDCZONE, MAP_PRECOMPOSED 및 MAP_COMPOSITE 플래그로 표시된 변환은 유니코드 정규화 형식 KC, C 및 D( NormalizeString 함수를 통해)를 사용하여 매핑을 수행합니다.

Windows 8 시작: 함수의 ANSI 버전은 Winnls.h에서 선언되고 유니코드 버전은 Stringapiset.h로 선언됩니다. Windows 8 전에 두 버전 모두 Winnls.h에서 선언되었습니다.

요구 사항

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

참고 항목

국가 언어 지원

국가 언어 지원 기능

NormalizeString

보안 고려 사항: 국가별 기능

정렬

유니코드 정규화를 사용하여 문자열 표시