1*9eab2a37SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*9eab2a37SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*9eab2a37SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*9eab2a37SAndrew Rist * distributed with this work for additional information 6*9eab2a37SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*9eab2a37SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*9eab2a37SAndrew Rist * "License"); you may not use this file except in compliance 9*9eab2a37SAndrew Rist * with the License. You may obtain a copy of the License at 10*9eab2a37SAndrew Rist * 11*9eab2a37SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*9eab2a37SAndrew Rist * 13*9eab2a37SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*9eab2a37SAndrew Rist * software distributed under the License is distributed on an 15*9eab2a37SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*9eab2a37SAndrew Rist * KIND, either express or implied. See the License for the 17*9eab2a37SAndrew Rist * specific language governing permissions and limitations 18*9eab2a37SAndrew Rist * under the License. 19*9eab2a37SAndrew Rist * 20*9eab2a37SAndrew Rist *************************************************************/ 21*9eab2a37SAndrew Rist 22*9eab2a37SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #pragma once 25cdf0e10cSrcweir 26cdf0e10cSrcweir #ifndef _WINDOWS_ 27cdf0e10cSrcweir #include <windows.h> 28cdf0e10cSrcweir #endif 29cdf0e10cSrcweir 30cdf0e10cSrcweir #ifdef __cplusplus 31cdf0e10cSrcweir extern "C" { 32cdf0e10cSrcweir #endif 33cdf0e10cSrcweir 34cdf0e10cSrcweir //------------------------------------------------------------------------ 35cdf0e10cSrcweir // undefine the macros defined in the winbase.h file in order to avoid 36cdf0e10cSrcweir // warnings because of multiple defines 37cdf0e10cSrcweir //------------------------------------------------------------------------ 38cdf0e10cSrcweir 39cdf0e10cSrcweir #ifdef LoadLibraryW 40cdf0e10cSrcweir #undef LoadLibraryW 41cdf0e10cSrcweir #endif 42cdf0e10cSrcweir 43cdf0e10cSrcweir #ifdef LoadLibraryExW 44cdf0e10cSrcweir #undef LoadLibraryExW 45cdf0e10cSrcweir #endif 46cdf0e10cSrcweir 47cdf0e10cSrcweir #ifdef GetModuleFileNameW 48cdf0e10cSrcweir #undef GetModuleFileNameW 49cdf0e10cSrcweir #endif 50cdf0e10cSrcweir 51cdf0e10cSrcweir #ifdef GetLogicalDriveStringsW 52cdf0e10cSrcweir #undef GetLogicalDriveStringsW 53cdf0e10cSrcweir #endif 54cdf0e10cSrcweir 55cdf0e10cSrcweir #ifdef DeleteFileW 56cdf0e10cSrcweir #undef DeleteFileW 57cdf0e10cSrcweir #endif 58cdf0e10cSrcweir 59cdf0e10cSrcweir #ifdef CopyFileW 60cdf0e10cSrcweir #undef CopyFileW 61cdf0e10cSrcweir #endif 62cdf0e10cSrcweir 63cdf0e10cSrcweir #ifdef MoveFileW 64cdf0e10cSrcweir #undef MoveFileW 65cdf0e10cSrcweir #endif 66cdf0e10cSrcweir 67cdf0e10cSrcweir #ifdef MoveFileExW 68cdf0e10cSrcweir #undef MoveFileExW 69cdf0e10cSrcweir #endif 70cdf0e10cSrcweir 71cdf0e10cSrcweir #ifdef CreateFileW 72cdf0e10cSrcweir #undef CreateFileW 73cdf0e10cSrcweir #endif 74cdf0e10cSrcweir 75cdf0e10cSrcweir #ifdef RemoveDirectoryW 76cdf0e10cSrcweir #undef RemoveDirectoryW 77cdf0e10cSrcweir #endif 78cdf0e10cSrcweir 79cdf0e10cSrcweir #ifdef CreateDirectoryW 80cdf0e10cSrcweir #undef CreateDirectoryW 81cdf0e10cSrcweir #endif 82cdf0e10cSrcweir 83cdf0e10cSrcweir #ifdef CreateDirectoryExW 84cdf0e10cSrcweir #undef CreateDirectoryExW 85cdf0e10cSrcweir #endif 86cdf0e10cSrcweir 87cdf0e10cSrcweir #ifdef CreateFileW 88cdf0e10cSrcweir #undef CreateFileW 89cdf0e10cSrcweir #endif 90cdf0e10cSrcweir 91cdf0e10cSrcweir #ifdef GetLongPathNameW 92cdf0e10cSrcweir #undef GetLongPathNameW 93cdf0e10cSrcweir #endif 94cdf0e10cSrcweir 95cdf0e10cSrcweir #ifdef GetLocaleInfoW 96cdf0e10cSrcweir #undef GetLocaleInfoW 97cdf0e10cSrcweir #endif 98cdf0e10cSrcweir 99cdf0e10cSrcweir #ifdef GetFullPathNameW 100cdf0e10cSrcweir #undef GetFullPathNameW 101cdf0e10cSrcweir #endif 102cdf0e10cSrcweir 103cdf0e10cSrcweir #ifdef CreateProcessW 104cdf0e10cSrcweir #undef CreateProcessW 105cdf0e10cSrcweir #endif 106cdf0e10cSrcweir 107cdf0e10cSrcweir #ifdef CreateProcessAsUserW 108cdf0e10cSrcweir #undef CreateProcessAsUserW 109cdf0e10cSrcweir #endif 110cdf0e10cSrcweir 111cdf0e10cSrcweir #ifdef GetEnvironmentVariableW 112cdf0e10cSrcweir #undef GetEnvironmentVariableW 113cdf0e10cSrcweir #endif 114cdf0e10cSrcweir 115cdf0e10cSrcweir #ifdef GetDriveTypeW 116cdf0e10cSrcweir #undef GetDriveTypeW 117cdf0e10cSrcweir #endif 118cdf0e10cSrcweir 119cdf0e10cSrcweir #ifdef GetCurrentDirectoryW 120cdf0e10cSrcweir #undef GetCurrentDirectoryW 121cdf0e10cSrcweir #endif 122cdf0e10cSrcweir 123cdf0e10cSrcweir #ifdef SetCurrentDirectoryW 124cdf0e10cSrcweir #undef SetCurrentDirectoryW 125cdf0e10cSrcweir #endif 126cdf0e10cSrcweir 127cdf0e10cSrcweir #ifdef GetVolumeInformationW 128cdf0e10cSrcweir #undef GetVolumeInformationW 129cdf0e10cSrcweir #endif 130cdf0e10cSrcweir 131cdf0e10cSrcweir 132cdf0e10cSrcweir #ifdef GetDiskFreeSpaceExA 133cdf0e10cSrcweir #undef GetDiskFreeSpaceExA 134cdf0e10cSrcweir #endif 135cdf0e10cSrcweir 136cdf0e10cSrcweir #ifdef GetDiskFreeSpaceExW 137cdf0e10cSrcweir #undef GetDiskFreeSpaceExW 138cdf0e10cSrcweir #endif 139cdf0e10cSrcweir 140cdf0e10cSrcweir //------------------------------------------------------------------------ 141cdf0e10cSrcweir // set the compiler directives for the function pointer we declare below 142cdf0e10cSrcweir // if we build sal or sal will be used as static library we define extern 143cdf0e10cSrcweir // else sal exports the function pointers from a dll and we use __declspec 144cdf0e10cSrcweir //------------------------------------------------------------------------ 145cdf0e10cSrcweir 146cdf0e10cSrcweir #define KERNEL9X_API extern 147cdf0e10cSrcweir 148cdf0e10cSrcweir //------------------------------------------------------------------------ 149cdf0e10cSrcweir // declare function pointers to the appropriate kernel functions 150cdf0e10cSrcweir //------------------------------------------------------------------------ 151cdf0e10cSrcweir 152cdf0e10cSrcweir //BOOL WINAPI RegisterServiceProcess( DWORD dwProcessID, BOOL fRegister ); 153cdf0e10cSrcweir 154cdf0e10cSrcweir KERNEL9X_API HMODULE (WINAPI *lpfnLoadLibraryExW ) ( 155cdf0e10cSrcweir LPCWSTR lpLibFileName, // file name of module 156cdf0e10cSrcweir HANDLE hFile, // reserved, must be NULL 157cdf0e10cSrcweir DWORD dwFlags // entry-point execution option 158cdf0e10cSrcweir ); 159cdf0e10cSrcweir 160cdf0e10cSrcweir KERNEL9X_API DWORD (WINAPI *lpfnGetModuleFileNameW ) ( 161cdf0e10cSrcweir HMODULE hModule, // handle to module 162cdf0e10cSrcweir LPWSTR lpFilename, // file name of module 163cdf0e10cSrcweir DWORD nSize // size of buffer 164cdf0e10cSrcweir ); 165cdf0e10cSrcweir 166cdf0e10cSrcweir KERNEL9X_API DWORD (WINAPI *lpfnGetLogicalDriveStringsW ) ( 167cdf0e10cSrcweir DWORD nBufferLength, // size of buffer 168cdf0e10cSrcweir LPWSTR lpBuffer // drive strings buffer 169cdf0e10cSrcweir ); 170cdf0e10cSrcweir 171cdf0e10cSrcweir KERNEL9X_API HANDLE ( WINAPI *lpfnCreateFileW )( 172cdf0e10cSrcweir LPCWSTR lpFileName, 173cdf0e10cSrcweir DWORD dwDesiredAccess, 174cdf0e10cSrcweir DWORD dwShareMode, 175cdf0e10cSrcweir LPSECURITY_ATTRIBUTES lpSecurityAttributes, 176cdf0e10cSrcweir DWORD dwCreationDisposition, 177cdf0e10cSrcweir DWORD dwFlagsAndAttributes, 178cdf0e10cSrcweir HANDLE hTemplateFile 179cdf0e10cSrcweir ); 180cdf0e10cSrcweir 181cdf0e10cSrcweir KERNEL9X_API DWORD WINAPI GetCanonicalPathNameA( 182cdf0e10cSrcweir LPCSTR lpszPath, // file name 183cdf0e10cSrcweir LPSTR lpszCanonicalPath, // path buffer 184cdf0e10cSrcweir DWORD cchBuffer // size of path buffer 185cdf0e10cSrcweir ); 186cdf0e10cSrcweir 187cdf0e10cSrcweir KERNEL9X_API DWORD WINAPI GetCanonicalPathNameW( 188cdf0e10cSrcweir LPCWSTR lpszPath, // file name 189cdf0e10cSrcweir LPWSTR lpszCanonicalPath, // path buffer 190cdf0e10cSrcweir DWORD cchBuffer // size of path buffer 191cdf0e10cSrcweir ); 192cdf0e10cSrcweir 193cdf0e10cSrcweir KERNEL9X_API HANDLE ( WINAPI * lpfnCreateFileW ) ( 194cdf0e10cSrcweir LPCWSTR lpFileName, 195cdf0e10cSrcweir DWORD dwDesiredAccess, 196cdf0e10cSrcweir DWORD dwShareMode, 197cdf0e10cSrcweir LPSECURITY_ATTRIBUTES lpSecurityAttributes, 198cdf0e10cSrcweir DWORD dwCreationDisposition, 199cdf0e10cSrcweir DWORD dwFlagsAndAttributes, 200cdf0e10cSrcweir HANDLE hTemplateFile ); 201cdf0e10cSrcweir 202cdf0e10cSrcweir KERNEL9X_API BOOL (WINAPI *lpfnDeleteFileW ) ( 203cdf0e10cSrcweir LPCWSTR lpFileName // file name 204cdf0e10cSrcweir ); 205cdf0e10cSrcweir 206cdf0e10cSrcweir KERNEL9X_API BOOL (WINAPI *lpfnCopyFileW ) ( 207cdf0e10cSrcweir LPCWSTR lpExistingFileName, // file name 208cdf0e10cSrcweir LPCWSTR lpNewFileName, // new file name 209cdf0e10cSrcweir BOOL bFailIfExist // operation if file exists 210cdf0e10cSrcweir ); 211cdf0e10cSrcweir 212cdf0e10cSrcweir KERNEL9X_API BOOL (WINAPI *lpfnMoveFileW ) ( 213cdf0e10cSrcweir LPCWSTR lpExistingFileName, // file name 214cdf0e10cSrcweir LPCWSTR lpNewFileName // new file name 215cdf0e10cSrcweir ); 216cdf0e10cSrcweir 217cdf0e10cSrcweir KERNEL9X_API BOOL (WINAPI *lpfnMoveFileExW ) ( 218cdf0e10cSrcweir LPCWSTR lpExistingFileName, // file name 219cdf0e10cSrcweir LPCWSTR lpNewFileName, // new file name 220cdf0e10cSrcweir DWORD dwFlags // move options 221cdf0e10cSrcweir ); 222cdf0e10cSrcweir 223cdf0e10cSrcweir KERNEL9X_API BOOL (WINAPI *lpfnRemoveDirectoryW ) ( 224cdf0e10cSrcweir LPCWSTR lpPathName // directory name 225cdf0e10cSrcweir ); 226cdf0e10cSrcweir 227cdf0e10cSrcweir KERNEL9X_API BOOL ( WINAPI * lpfnCreateDirectoryW ) ( 228cdf0e10cSrcweir LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes ); 229cdf0e10cSrcweir 230cdf0e10cSrcweir KERNEL9X_API BOOL ( WINAPI * lpfnCreateDirectoryExW ) ( 231cdf0e10cSrcweir LPCWSTR lpTemplateDirectory, 232cdf0e10cSrcweir LPCWSTR lpNewDirectory, 233cdf0e10cSrcweir LPSECURITY_ATTRIBUTES lpSecurityAttributes ); 234cdf0e10cSrcweir 235cdf0e10cSrcweir KERNEL9X_API DWORD ( WINAPI * lpfnGetLongPathNameW ) ( 236cdf0e10cSrcweir LPCWSTR lpszShortPath, // file name 237cdf0e10cSrcweir LPWSTR lpszLongPath, // path buffer 238cdf0e10cSrcweir DWORD cchBuffer // size of path buffer 239cdf0e10cSrcweir ); 240cdf0e10cSrcweir 241cdf0e10cSrcweir // GetCanonicalPath is a tool function with no exact counterpart 242cdf0e10cSrcweir // in the win32 api; we use nevertheless a function pointer 243cdf0e10cSrcweir // because every variable etc. must root in the Kernel9x.lib else 244cdf0e10cSrcweir // we loose our AutoSystoolInit object during linking 245cdf0e10cSrcweir KERNEL9X_API DWORD ( WINAPI * lpfnGetCanonicalPathW ) ( 246cdf0e10cSrcweir LPCWSTR lpszPath, // file name 247cdf0e10cSrcweir LPWSTR lpszCanonicalPath, // path buffer 248cdf0e10cSrcweir DWORD cchBuffer // size of path buffer 249cdf0e10cSrcweir ); 250cdf0e10cSrcweir 251cdf0e10cSrcweir KERNEL9X_API int ( WINAPI* lpfnGetLocaleInfoW ) ( 252cdf0e10cSrcweir LCID Locale, // locale identifier 253cdf0e10cSrcweir LCTYPE LCType, // information type 254cdf0e10cSrcweir LPWSTR lpLCData, // information buffer 255cdf0e10cSrcweir int cchData // size of buffer 256cdf0e10cSrcweir ); 257cdf0e10cSrcweir 258cdf0e10cSrcweir KERNEL9X_API DWORD ( WINAPI * lpfnGetFullPathNameW )( 259cdf0e10cSrcweir LPCWSTR lpFileName, // file name 260cdf0e10cSrcweir DWORD nBufferLength, // size of path buffer 261cdf0e10cSrcweir LPWSTR lpBuffer, // path buffer 262cdf0e10cSrcweir LPWSTR *lpFilePart // address of file name in path 263cdf0e10cSrcweir ); 264cdf0e10cSrcweir 265cdf0e10cSrcweir KERNEL9X_API BOOL ( WINAPI * lpfnCreateProcessW )( 266cdf0e10cSrcweir LPCWSTR lpApplicationName, // name of executable module 267cdf0e10cSrcweir LPWSTR lpCommandLine, // command line string 268cdf0e10cSrcweir LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD 269cdf0e10cSrcweir LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD 270cdf0e10cSrcweir BOOL bInheritHandles, // handle inheritance option 271cdf0e10cSrcweir DWORD dwCreationFlags, // creation flags 272cdf0e10cSrcweir LPVOID lpEnvironment, // new environment block 273cdf0e10cSrcweir LPCWSTR lpCurrentDirectory, // current directory name 274cdf0e10cSrcweir LPSTARTUPINFOW lpStartupInfo, // startup information 275cdf0e10cSrcweir LPPROCESS_INFORMATION lpProcessInformation // process information 276cdf0e10cSrcweir ); 277cdf0e10cSrcweir 278cdf0e10cSrcweir KERNEL9X_API BOOL ( WINAPI * lpfnCreateProcessAsUserW )( 279cdf0e10cSrcweir HANDLE hToken, // handle to user token 280cdf0e10cSrcweir LPCWSTR lpApplicationName, // name of executable module 281cdf0e10cSrcweir LPWSTR lpCommandLine, // command-line string 282cdf0e10cSrcweir LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD 283cdf0e10cSrcweir LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD 284cdf0e10cSrcweir BOOL bInheritHandles, // inheritance option 285cdf0e10cSrcweir DWORD dwCreationFlags, // creation flags 286cdf0e10cSrcweir LPVOID lpEnvironment, // new environment block 287cdf0e10cSrcweir LPCWSTR lpCurrentDirectory, // current directory name 288cdf0e10cSrcweir LPSTARTUPINFOW lpStartupInfo, // startup information 289cdf0e10cSrcweir LPPROCESS_INFORMATION lpProcessInformation // process information 290cdf0e10cSrcweir ); 291cdf0e10cSrcweir 292cdf0e10cSrcweir KERNEL9X_API DWORD ( WINAPI * lpfnGetEnvironmentVariableW )( 293cdf0e10cSrcweir LPCWSTR lpName, // environment variable name 294cdf0e10cSrcweir LPWSTR lpBuffer, // buffer for variable value 295cdf0e10cSrcweir DWORD nSize // size of buffer 296cdf0e10cSrcweir ); 297cdf0e10cSrcweir 298cdf0e10cSrcweir 299cdf0e10cSrcweir KERNEL9X_API UINT ( WINAPI * lpfnGetDriveTypeW )( 300cdf0e10cSrcweir LPCWSTR lpRootPathName // root directory 301cdf0e10cSrcweir ); 302cdf0e10cSrcweir 303cdf0e10cSrcweir KERNEL9X_API DWORD ( WINAPI * lpfnGetCurrentDirectoryW )( 304cdf0e10cSrcweir DWORD nBufferLength, // size of directory buffer 305cdf0e10cSrcweir LPWSTR lpBuffer // directory buffer 306cdf0e10cSrcweir ); 307cdf0e10cSrcweir 308cdf0e10cSrcweir KERNEL9X_API BOOL ( WINAPI * lpfnSetCurrentDirectoryW )( 309cdf0e10cSrcweir LPCWSTR lpPathName // new directory name 310cdf0e10cSrcweir ); 311cdf0e10cSrcweir 312cdf0e10cSrcweir // GetVolumeInformation 313cdf0e10cSrcweir KERNEL9X_API BOOL ( WINAPI* lpfnGetVolumeInformationW )( 314cdf0e10cSrcweir LPCWSTR lpRootPathName, // root directory 315cdf0e10cSrcweir LPWSTR lpVolumeNameBuffer, // volume name buffer 316cdf0e10cSrcweir DWORD nVolumeNameSize, // length of name buffer 317cdf0e10cSrcweir LPDWORD lpVolumeSerialNumber, // volume serial number 318cdf0e10cSrcweir LPDWORD lpMaximumComponentLength, // maximum file name length 319cdf0e10cSrcweir LPDWORD lpFileSystemFlags, // file system options 320cdf0e10cSrcweir LPWSTR lpFileSystemName, // file system name buffer 321cdf0e10cSrcweir DWORD nFileSystemNameSize // length of file system name buffer 322cdf0e10cSrcweir ); 323cdf0e10cSrcweir 324cdf0e10cSrcweir // GetDiskFreeSpaceExA 325cdf0e10cSrcweir KERNEL9X_API BOOL (WINAPI *lpfnGetDiskFreeSpaceExA)( 326cdf0e10cSrcweir LPCSTR lpDirectoryName, // directory name 327cdf0e10cSrcweir PULARGE_INTEGER lpFreeBytesAvailable, // bytes available to caller 328cdf0e10cSrcweir PULARGE_INTEGER lpTotalNumberOfBytes, // bytes on disk 329cdf0e10cSrcweir PULARGE_INTEGER lpTotalNumberOfFreeBytes // free bytes on disk 330cdf0e10cSrcweir ); 331cdf0e10cSrcweir 332cdf0e10cSrcweir // GetDiskFreeSpaceExW 333cdf0e10cSrcweir KERNEL9X_API BOOL (WINAPI *lpfnGetDiskFreeSpaceExW)( 334cdf0e10cSrcweir LPCWSTR lpDirectoryName, // directory name 335cdf0e10cSrcweir PULARGE_INTEGER lpFreeBytesAvailable, // bytes available to caller 336cdf0e10cSrcweir PULARGE_INTEGER lpTotalNumberOfBytes, // bytes on disk 337cdf0e10cSrcweir PULARGE_INTEGER lpTotalNumberOfFreeBytes // free bytes on disk 338cdf0e10cSrcweir ); 339cdf0e10cSrcweir 340cdf0e10cSrcweir //------------------------------------------------------------------------ 341cdf0e10cSrcweir // redefine the above undefined macros so that the preprocessor replaces 342cdf0e10cSrcweir // all occurrences of this macros with our function pointer 343cdf0e10cSrcweir //------------------------------------------------------------------------ 344cdf0e10cSrcweir 345cdf0e10cSrcweir #define LoadLibraryExW lpfnLoadLibraryExW 346cdf0e10cSrcweir #define LoadLibraryW(c) LoadLibraryExW(c, NULL, 0) 347cdf0e10cSrcweir #define GetModuleFileNameW lpfnGetModuleFileNameW 348cdf0e10cSrcweir #define GetLogicalDriveStringsW lpfnGetLogicalDriveStringsW 349cdf0e10cSrcweir #define CreateFileW lpfnCreateFileW 350cdf0e10cSrcweir #define DeleteFileW lpfnDeleteFileW 351cdf0e10cSrcweir #define CopyFileW lpfnCopyFileW 352cdf0e10cSrcweir #define MoveFileW lpfnMoveFileW 353cdf0e10cSrcweir #define MoveFileExW lpfnMoveFileExW 354cdf0e10cSrcweir #define RemoveDirectoryW lpfnRemoveDirectoryW 355cdf0e10cSrcweir #define CreateDirectoryW lpfnCreateDirectoryW 356cdf0e10cSrcweir #define CreateDirectoryExW lpfnCreateDirectoryExW 357cdf0e10cSrcweir #define GetLongPathNameW lpfnGetLongPathNameW 358cdf0e10cSrcweir #define GetFullPathNameW lpfnGetFullPathNameW 359cdf0e10cSrcweir 360cdf0e10cSrcweir #define GetCanonicalPath lpfnGetCanonicalPathW 361cdf0e10cSrcweir #define GetLocaleInfoW lpfnGetLocaleInfoW 362cdf0e10cSrcweir 363cdf0e10cSrcweir #define CreateProcessW lpfnCreateProcessW 364cdf0e10cSrcweir #define CreateProcessAsUserW lpfnCreateProcessAsUserW 365cdf0e10cSrcweir #define GetEnvironmentVariableW lpfnGetEnvironmentVariableW 366cdf0e10cSrcweir #define GetDriveTypeW lpfnGetDriveTypeW 367cdf0e10cSrcweir 368cdf0e10cSrcweir #define GetCurrentDirectoryW lpfnGetCurrentDirectoryW 369cdf0e10cSrcweir #define SetCurrentDirectoryW lpfnSetCurrentDirectoryW 370cdf0e10cSrcweir 371cdf0e10cSrcweir #define GetVolumeInformationW lpfnGetVolumeInformationW 372cdf0e10cSrcweir #define GetDiskFreeSpaceExA lpfnGetDiskFreeSpaceExA 373cdf0e10cSrcweir #define GetDiskFreeSpaceExW lpfnGetDiskFreeSpaceExW 374cdf0e10cSrcweir 375cdf0e10cSrcweir #ifdef __cplusplus 376cdf0e10cSrcweir } 377cdf0e10cSrcweir #endif 378cdf0e10cSrcweir 379cdf0e10cSrcweir 380