겸손한 개발을 위한 자양분

User32 Dll 에서 제공하는 변환 API

0: kd> u USER32!WCSToMBEx
USER32!WCSToMBEx:
77d0d446 8bff            mov     edi,edi
77d0d448 55              push    ebp
77d0d449 8bec            mov     ebp,esp
77d0d44b 53              push    ebx
77d0d44c 8b5d18          mov     ebx,dword ptr [ebp+18h]
77d0d44f 85db            test    ebx,ebx
77d0d451 56              push    esi
77d0d452 57              push    edi
0: kd> u USER32!MBToWCSEx
USER32!MBToWCSEx:
77cfadad 8bff            mov     edi,edi
77cfadaf 55              push    ebp
77cfadb0 8bec            mov     ebp,esp
77cfadb2 53              push    ebx
77cfadb3 56              push    esi
77cfadb4 57              push    edi
77cfadb5 8b7d10          mov     edi,dword ptr [ebp+10h]
77cfadb8 85ff            test    edi,edi

에서 확인

Proto Type :
DWORD STDCALL WCSToMBEx(
                                 WORD CodePage,
                                 LPWSTR UnicodeString,
                                 DWORD UnicodeSize,
                                 LPSTR *MBString,
                                 DWORD MBSize,
                                 BOOL Allocate);


DWORD STDCALL MBToWCSEx(
                                 WORD CodePage,
                                 LPSTR MBString,
                                 DWORD MBSize,
                                 LPWSTR UnicodeString,
                                 DWORD UnicodeSize,
                                 BOOL Allocate);


주목할 Parameters

Size : -1 일 경우 사이즈 자동 체크.
Allocate : TRUE 일 경우, 받는 버퍼의 메모리를 할당. ( MultiByteToWideChar 계열 함수와 차이 )