1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#include <windows.h>
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;
}
|