#include HANDLE WINAPI FindFirstFileA( LPCSTR path, LPWIN32_FIND_DATAA data ) { WCHAR wbuffer[MAX_PATH]; HANDLE ret; WIN32_FIND_DATAW wdata; if( !MultiByteToWideChar( CP_ACP, 0, path, -1, wbuffer, MAX_PATH ) ) { return INVALID_HANDLE_VALUE; } ret = FindFirstFileW( wbuffer, &wdata ); if( ret != INVALID_HANDLE_VALUE ) { memcpy( data, &wdata, FIELD_OFFSET( WIN32_FIND_DATAA, cFileName ) ); WideCharToMultiByte( CP_ACP, 0, wdata.cFileName, -1, data->cFileName, MAX_PATH, NULL, NULL ); } return ret; } BOOL WINAPI FindNextFileA( HANDLE handle, LPWIN32_FIND_DATAA data ) { BOOL ret; WIN32_FIND_DATAW wdata; ret = FindNextFileW( handle, &wdata ); if( ret != FALSE ) { memcpy( data, &wdata, FIELD_OFFSET( WIN32_FIND_DATAA, cFileName ) ); WideCharToMultiByte( CP_ACP, 0, wdata.cFileName, -1, data->cFileName, MAX_PATH, NULL, NULL ); } return ret; } HINSTANCE WINAPI LoadLibraryA( LPCSTR path ) { WCHAR wbuffer[MAX_PATH]; if( !MultiByteToWideChar( CP_ACP, 0, path, -1, wbuffer, MAX_PATH ) ) { return NULL; } return LoadLibraryW( wbuffer ); } int WINAPI MessageBoxA( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType ) { WCHAR wText[4096]; WCHAR wCaption[256]; if( !MultiByteToWideChar( CP_ACP, 0, lpText, -1, wText, 4096 ) ) { return 0; } if( !MultiByteToWideChar( CP_ACP, 0, lpCaption, -1, wCaption, 256 ) ) { return 0; } return MessageBoxW( hWnd, wText, wCaption, uType ); } BOOL WINAPI CreateDirectoryA( LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes ) { WCHAR wbuffer[MAX_PATH]; if( !MultiByteToWideChar( CP_ACP, 0, lpPathName, -1, wbuffer, MAX_PATH ) ) { return FALSE; } return CreateDirectoryW( wbuffer, lpSecurityAttributes ); } BOOL WINAPI GetFileAttributesExA( LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation ) { WCHAR wbuffer[MAX_PATH]; if( !MultiByteToWideChar( CP_ACP, 0, lpFileName, -1, wbuffer, MAX_PATH ) ) { return FALSE; } return GetFileAttributesExW( wbuffer, fInfoLevelId, lpFileInformation ); } DWORD WINAPI GetModuleFileNameA( HMODULE hModule, LPSTR lpFileName, DWORD nSize ) { WCHAR wbuffer[MAX_PATH]; DWORD ret; if( nSize > MAX_PATH ) { nSize = MAX_PATH; } ret = GetModuleFileNameW( hModule, wbuffer, nSize ); if( ret ) { if( !WideCharToMultiByte( CP_ACP, 0, wbuffer, ret, lpFileName, ret, NULL, NULL ) ) { return 0; } } return ret; }