1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 #ifndef _APISETFILE_ 6 #define _APISETFILE_ 7 8 #include <apiset.h> 9 #include <apisetcconv.h> 10 #include <minwindef.h> 11 #include <minwinbase.h> 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) 18 #define CREATE_NEW 1 19 #define CREATE_ALWAYS 2 20 #define OPEN_EXISTING 3 21 #define OPEN_ALWAYS 4 22 #define TRUNCATE_EXISTING 5 23 24 #define INVALID_FILE_SIZE ((DWORD)0xffffffff) 25 #define INVALID_SET_FILE_POINTER ((DWORD)-1) 26 #define INVALID_FILE_ATTRIBUTES ((DWORD)-1) 27 #endif 28 29 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || defined(WINSTORECOMPAT) 30 WINBASEAPI HANDLE WINAPI CreateFileW (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); 31 #define CreateFile __MINGW_NAME_AW(CreateFile) 32 WINBASEAPI DWORD WINAPI GetFileAttributesW (LPCWSTR lpFileName); 33 #define GetFileAttributes __MINGW_NAME_AW(GetFileAttributes) 34 WINBASEAPI DWORD WINAPI GetFileSize (HANDLE hFile, LPDWORD lpFileSizeHigh); 35 WINBASEAPI DWORD WINAPI SetFilePointer (HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); 36 #endif 37 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 38 typedef struct _BY_HANDLE_FILE_INFORMATION { 39 DWORD dwFileAttributes; 40 FILETIME ftCreationTime; 41 FILETIME ftLastAccessTime; 42 FILETIME ftLastWriteTime; 43 DWORD dwVolumeSerialNumber; 44 DWORD nFileSizeHigh; 45 DWORD nFileSizeLow; 46 DWORD nNumberOfLinks; 47 DWORD nFileIndexHigh; 48 DWORD nFileIndexLow; 49 } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, 50 *LPBY_HANDLE_FILE_INFORMATION; 51 52 WINBASEAPI LONG WINAPI CompareFileTime (CONST FILETIME *lpFileTime1, CONST FILETIME *lpFileTime2); 53 WINBASEAPI HANDLE WINAPI CreateFileA (LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); 54 WINBASEAPI WINBOOL WINAPI DefineDosDeviceW (DWORD dwFlags, LPCWSTR lpDeviceName, LPCWSTR lpTargetPath); 55 WINBASEAPI WINBOOL WINAPI DeleteVolumeMountPointW (LPCWSTR lpszVolumeMountPoint); 56 WINBASEAPI WINBOOL WINAPI FileTimeToLocalFileTime (CONST FILETIME *lpFileTime, LPFILETIME lpLocalFileTime); 57 WINBASEAPI WINBOOL WINAPI FindCloseChangeNotification (HANDLE hChangeHandle); 58 WINBASEAPI HANDLE WINAPI FindFirstChangeNotificationA (LPCSTR lpPathName, WINBOOL bWatchSubtree, DWORD dwNotifyFilter); 59 WINBASEAPI HANDLE WINAPI FindFirstChangeNotificationW (LPCWSTR lpPathName, WINBOOL bWatchSubtree, DWORD dwNotifyFilter); 60 WINBASEAPI HANDLE WINAPI FindFirstFileA (LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); 61 WINBASEAPI HANDLE WINAPI FindFirstFileW (LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData); 62 WINBASEAPI HANDLE WINAPI FindFirstVolumeW (LPWSTR lpszVolumeName, DWORD cchBufferLength); 63 WINBASEAPI WINBOOL WINAPI FindNextChangeNotification (HANDLE hChangeHandle); 64 WINBASEAPI WINBOOL WINAPI FindNextVolumeW (HANDLE hFindVolume, LPWSTR lpszVolumeName, DWORD cchBufferLength); 65 WINBASEAPI WINBOOL WINAPI FindVolumeClose (HANDLE hFindVolume); 66 WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceA (LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters); 67 WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceW (LPCWSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters); 68 WINBASEAPI UINT WINAPI GetDriveTypeA (LPCSTR lpRootPathName); 69 WINBASEAPI UINT WINAPI GetDriveTypeW (LPCWSTR lpRootPathName); 70 WINBASEAPI DWORD WINAPI GetFileAttributesA (LPCSTR lpFileName); 71 WINBASEAPI WINBOOL WINAPI GetFileInformationByHandle (HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation); 72 WINBASEAPI WINBOOL WINAPI GetFileSizeEx (HANDLE hFile, PLARGE_INTEGER lpFileSize); 73 WINBASEAPI WINBOOL WINAPI GetFileTime (HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime); 74 WINBASEAPI DWORD WINAPI GetFileType (HANDLE hFile); 75 WINBASEAPI DWORD WINAPI GetFullPathNameA (LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart); 76 WINBASEAPI DWORD WINAPI GetFullPathNameW (LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart); 77 WINBASEAPI DWORD WINAPI GetLogicalDrives (VOID); 78 WINBASEAPI DWORD WINAPI GetLogicalDriveStringsW (DWORD nBufferLength, LPWSTR lpBuffer); 79 WINBASEAPI DWORD WINAPI GetLongPathNameA (LPCSTR lpszShortPath, LPSTR lpszLongPath, DWORD cchBuffer); 80 WINBASEAPI DWORD WINAPI GetLongPathNameW (LPCWSTR lpszShortPath, LPWSTR lpszLongPath, DWORD cchBuffer); 81 WINBASEAPI DWORD WINAPI GetShortPathNameW (LPCWSTR lpszLongPath, LPWSTR lpszShortPath, DWORD cchBuffer); 82 WINBASEAPI UINT WINAPI GetTempFileNameW (LPCWSTR lpPathName, LPCWSTR lpPrefixString, UINT uUnique, LPWSTR lpTempFileName); 83 WINBASEAPI WINBOOL WINAPI GetVolumeInformationW (LPCWSTR lpRootPathName, LPWSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPWSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize); 84 WINBASEAPI WINBOOL WINAPI GetVolumePathNameW (LPCWSTR lpszFileName, LPWSTR lpszVolumePathName, DWORD cchBufferLength); 85 WINBASEAPI WINBOOL WINAPI LocalFileTimeToFileTime (CONST FILETIME *lpLocalFileTime, LPFILETIME lpFileTime); 86 WINBASEAPI WINBOOL WINAPI LockFile (HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh); 87 WINBASEAPI DWORD WINAPI QueryDosDeviceW (LPCWSTR lpDeviceName, LPWSTR lpTargetPath, DWORD ucchMax); 88 WINBASEAPI WINBOOL WINAPI ReadFileEx (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 89 WINBASEAPI WINBOOL WINAPI ReadFileScatter (HANDLE hFile, FILE_SEGMENT_ELEMENT aSegmentArray[], DWORD nNumberOfBytesToRead, LPDWORD lpReserved, LPOVERLAPPED lpOverlapped); 90 WINBASEAPI WINBOOL WINAPI SetFileTime (HANDLE hFile, CONST FILETIME *lpCreationTime, CONST FILETIME *lpLastAccessTime, CONST FILETIME *lpLastWriteTime); 91 WINBASEAPI WINBOOL WINAPI SetFileValidData (HANDLE hFile, LONGLONG ValidDataLength); 92 WINBASEAPI WINBOOL WINAPI UnlockFile (HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh); 93 WINBASEAPI WINBOOL WINAPI WriteFileEx (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 94 WINBASEAPI WINBOOL WINAPI WriteFileGather (HANDLE hFile, FILE_SEGMENT_ELEMENT aSegmentArray[], DWORD nNumberOfBytesToWrite, LPDWORD lpReserved, LPOVERLAPPED lpOverlapped); 95 WINBASEAPI WINBOOL WINAPI GetVolumeNameForVolumeMountPointW (LPCWSTR lpszVolumeMountPoint, LPWSTR lpszVolumeName, DWORD cchBufferLength); 96 WINBASEAPI WINBOOL WINAPI GetVolumePathNamesForVolumeNameW (LPCWSTR lpszVolumeName, LPWCH lpszVolumePathNames, DWORD cchBufferLength, PDWORD lpcchReturnLength); 97 98 #ifdef UNICODE 99 #define DefineDosDevice DefineDosDeviceW 100 #define DeleteVolumeMountPoint DeleteVolumeMountPointW 101 #define FindFirstVolume FindFirstVolumeW 102 #define FindNextVolume FindNextVolumeW 103 #define GetLogicalDriveStrings GetLogicalDriveStringsW 104 #define GetShortPathName GetShortPathNameW 105 #define GetTempFileName GetTempFileNameW 106 #define GetVolumeInformation GetVolumeInformationW 107 #define GetVolumePathName GetVolumePathNameW 108 #define QueryDosDevice QueryDosDeviceW 109 #define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointW 110 #define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameW 111 #endif 112 #define FindFirstChangeNotification __MINGW_NAME_AW(FindFirstChangeNotification) 113 #define FindFirstFile __MINGW_NAME_AW(FindFirstFile) 114 #define GetDiskFreeSpace __MINGW_NAME_AW(GetDiskFreeSpace) 115 #define GetDriveType __MINGW_NAME_AW(GetDriveType) 116 #define GetFullPathName __MINGW_NAME_AW(GetFullPathName) 117 #define GetLongPathName __MINGW_NAME_AW(GetLongPathName) 118 119 #if _WIN32_WINNT >= 0x0600 120 WINBASEAPI DWORD WINAPI GetFinalPathNameByHandleA (HANDLE hFile, LPSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags); 121 WINBASEAPI DWORD WINAPI GetFinalPathNameByHandleW (HANDLE hFile, LPWSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags); 122 WINBASEAPI WINBOOL WINAPI GetVolumeInformationByHandleW (HANDLE hFile, LPWSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPWSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize); 123 124 #define GetFinalPathNameByHandle __MINGW_NAME_AW(GetFinalPathNameByHandle) 125 #endif 126 #endif 127 128 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) 129 typedef struct _WIN32_FILE_ATTRIBUTE_DATA { 130 DWORD dwFileAttributes; 131 FILETIME ftCreationTime; 132 FILETIME ftLastAccessTime; 133 FILETIME ftLastWriteTime; 134 DWORD nFileSizeHigh; 135 DWORD nFileSizeLow; 136 } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA; 137 138 #if _WIN32_WINNT >= 0x0602 139 typedef struct _CREATEFILE2_EXTENDED_PARAMETERS { 140 DWORD dwSize; 141 DWORD dwFileAttributes; 142 DWORD dwFileFlags; 143 DWORD dwSecurityQosFlags; 144 LPSECURITY_ATTRIBUTES lpSecurityAttributes; 145 HANDLE hTemplateFile; 146 } CREATEFILE2_EXTENDED_PARAMETERS, *PCREATEFILE2_EXTENDED_PARAMETERS, 147 *LPCREATEFILE2_EXTENDED_PARAMETERS; 148 #endif 149 150 WINBASEAPI WINBOOL WINAPI CreateDirectoryA (LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); 151 WINBASEAPI WINBOOL WINAPI CreateDirectoryW (LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); 152 WINBASEAPI WINBOOL WINAPI DeleteFileA (LPCSTR lpFileName); 153 WINBASEAPI WINBOOL WINAPI DeleteFileW (LPCWSTR lpFileName); 154 WINBASEAPI WINBOOL WINAPI FindClose (HANDLE hFindFile); 155 WINBASEAPI HANDLE WINAPI FindFirstFileExA (LPCSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags); 156 WINBASEAPI HANDLE WINAPI FindFirstFileExW (LPCWSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags); 157 WINBASEAPI WINBOOL WINAPI FindNextFileA (HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); 158 WINBASEAPI WINBOOL WINAPI FindNextFileW (HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData); 159 WINBASEAPI WINBOOL WINAPI FlushFileBuffers (HANDLE hFile); 160 WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceExA (LPCSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes); 161 WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceExW (LPCWSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes); 162 WINBASEAPI DWORD WINAPI GetFileType (HANDLE hFile); 163 WINBASEAPI WINBOOL WINAPI GetFileAttributesExA (LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation); 164 WINBASEAPI WINBOOL WINAPI GetFileAttributesExW (LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation); 165 WINBASEAPI DWORD WINAPI GetTempPathW (DWORD nBufferLength, LPWSTR lpBuffer); 166 WINBASEAPI WINBOOL WINAPI LockFileEx (HANDLE hFile, DWORD dwFlags, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped); 167 WINBASEAPI WINBOOL WINAPI ReadFile (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); 168 WINBASEAPI WINBOOL WINAPI RemoveDirectoryA (LPCSTR lpPathName); 169 WINBASEAPI WINBOOL WINAPI RemoveDirectoryW (LPCWSTR lpPathName); 170 WINBASEAPI WINBOOL WINAPI SetEndOfFile (HANDLE hFile); 171 WINBASEAPI WINBOOL WINAPI SetFileAttributesA (LPCSTR lpFileName, DWORD dwFileAttributes); 172 WINBASEAPI WINBOOL WINAPI SetFileAttributesW (LPCWSTR lpFileName, DWORD dwFileAttributes); 173 WINBASEAPI WINBOOL WINAPI SetFilePointerEx (HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod); 174 WINBASEAPI WINBOOL WINAPI UnlockFileEx (HANDLE hFile, DWORD dwReserved, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh, LPOVERLAPPED lpOverlapped); 175 WINBASEAPI WINBOOL WINAPI WriteFile (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); 176 177 #define CreateDirectory __MINGW_NAME_AW(CreateDirectory) 178 #define DeleteFile __MINGW_NAME_AW(DeleteFile) 179 #define FindFirstFileEx __MINGW_NAME_AW(FindFirstFileEx) 180 #define FindNextFile __MINGW_NAME_AW(FindNextFile) 181 #define GetDiskFreeSpaceEx __MINGW_NAME_AW(GetDiskFreeSpaceEx) 182 #define GetFileAttributesEx __MINGW_NAME_AW(GetFileAttributesEx) 183 #define RemoveDirectory __MINGW_NAME_AW(RemoveDirectory) 184 #define SetFileAttributes __MINGW_NAME_AW(SetFileAttributes) 185 #ifdef UNICODE 186 #define GetTempPath GetTempPathW 187 #endif 188 189 #if _WIN32_WINNT >= 0x0600 190 WINBASEAPI WINBOOL WINAPI SetFileInformationByHandle (HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, LPVOID lpFileInformation, DWORD dwBufferSize); 191 #endif 192 #if _WIN32_WINNT >= 0x0602 193 WINBASEAPI HANDLE WINAPI CreateFile2 (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, DWORD dwCreationDisposition, LPCREATEFILE2_EXTENDED_PARAMETERS pCreateExParams); 194 #endif 195 #endif 196 197 #ifdef __cplusplus 198 } 199 #endif 200 #endif 201