| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| //! ApiSet Contract for api-ms-win-core-file-l1 |
| use shared::minwindef::{ |
| BOOL, DWORD, FILETIME, LPCVOID, LPDWORD, LPFILETIME, LPVOID, PDWORD, PUCHAR, UCHAR, UINT, |
| ULONG, WORD, |
| }; |
| use um::minwinbase::{ |
| FILE_INFO_BY_HANDLE_CLASS, FINDEX_INFO_LEVELS, FINDEX_SEARCH_OPS, GET_FILEEX_INFO_LEVELS, |
| LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE, LPSECURITY_ATTRIBUTES, LPWIN32_FIND_DATAA, |
| LPWIN32_FIND_DATAW |
| }; |
| use um::winnt::{ |
| BOOLEAN, CCHAR, FILE_ID_128, FILE_SEGMENT_ELEMENT, HANDLE, LARGE_INTEGER, LONG, LONGLONG, |
| LPCSTR, LPCWSTR, LPSTR, LPWCH, LPWSTR, PLARGE_INTEGER, PLONG, PULARGE_INTEGER, PWSTR, |
| ULONGLONG, WCHAR, |
| }; |
| pub const CREATE_NEW: DWORD = 1; |
| pub const CREATE_ALWAYS: DWORD = 2; |
| pub const OPEN_EXISTING: DWORD = 3; |
| pub const OPEN_ALWAYS: DWORD = 4; |
| pub const TRUNCATE_EXISTING: DWORD = 5; |
| pub const INVALID_FILE_SIZE: DWORD = 0xFFFFFFFF; |
| pub const INVALID_SET_FILE_POINTER: DWORD = 0xFFFFFFFF; |
| pub const INVALID_FILE_ATTRIBUTES: DWORD = 0xFFFFFFFF; |
| STRUCT!{struct WIN32_FILE_ATTRIBUTE_DATA { |
| dwFileAttributes: DWORD, |
| ftCreationTime: FILETIME, |
| ftLastAccessTime: FILETIME, |
| ftLastWriteTime: FILETIME, |
| nFileSizeHigh: DWORD, |
| nFileSizeLow: DWORD, |
| }} |
| pub type LPWIN32_FILE_ATTRIBUTE_DATA = *mut WIN32_FILE_ATTRIBUTE_DATA; |
| STRUCT!{struct BY_HANDLE_FILE_INFORMATION { |
| dwFileAttributes: DWORD, |
| ftCreationTime: FILETIME, |
| ftLastAccessTime: FILETIME, |
| ftLastWriteTime: FILETIME, |
| dwVolumeSerialNumber: DWORD, |
| nFileSizeHigh: DWORD, |
| nFileSizeLow: DWORD, |
| nNumberOfLinks: DWORD, |
| nFileIndexHigh: DWORD, |
| nFileIndexLow: DWORD, |
| }} |
| pub type PBY_HANDLE_FILE_INFORMATION = *mut BY_HANDLE_FILE_INFORMATION; |
| pub type LPBY_HANDLE_FILE_INFORMATION = *mut BY_HANDLE_FILE_INFORMATION; |
| STRUCT!{struct CREATEFILE2_EXTENDED_PARAMETERS { |
| dwSize: DWORD, |
| dwFileAttributes: DWORD, |
| dwFileFlags: DWORD, |
| dwSecurityQosFlags: DWORD, |
| lpSecurityAttributes: LPSECURITY_ATTRIBUTES, |
| hTemplateFile: HANDLE, |
| }} |
| pub type PCREATEFILE2_EXTENDED_PARAMETERS = *mut CREATEFILE2_EXTENDED_PARAMETERS; |
| pub type LPCREATEFILE2_EXTENDED_PARAMETERS = *mut CREATEFILE2_EXTENDED_PARAMETERS; |
| ENUM!{enum PRIORITY_HINT { |
| IoPriorityHintVeryLow = 0, |
| IoPriorityHintLow = 1, |
| IoPriorityHintNormal = 2, |
| MaximumIoPriorityHintType = 3, |
| }} |
| STRUCT!{struct FILE_BASIC_INFO { |
| CreationTime: LARGE_INTEGER, |
| LastAccessTime: LARGE_INTEGER, |
| LastWriteTime: LARGE_INTEGER, |
| ChangeTime: LARGE_INTEGER, |
| FileAttributes: DWORD, |
| }} |
| STRUCT!{struct FILE_STANDARD_INFO { |
| AllocationSize: LARGE_INTEGER, |
| EndOfFile: LARGE_INTEGER, |
| NumberOfLinks: DWORD, |
| DeletePending: BOOLEAN, |
| Directory: BOOLEAN, |
| }} |
| STRUCT!{struct FILE_NAME_INFO { |
| FileNameLength: DWORD, |
| FileName: [WCHAR; 1], |
| }} |
| STRUCT!{struct FILE_RENAME_INFO { |
| ReplaceIfExists: BOOL, |
| RootDirectory: HANDLE, |
| FileNameLength: DWORD, |
| FileName: [WCHAR; 1], |
| }} |
| STRUCT!{struct FILE_DISPOSITION_INFO { |
| DeleteFile: BOOLEAN, |
| }} |
| STRUCT!{struct FILE_ALLOCATION_INFO { |
| AllocationSize: LARGE_INTEGER, |
| }} |
| STRUCT!{struct FILE_END_OF_FILE_INFO { |
| EndOfFile: LARGE_INTEGER, |
| }} |
| STRUCT!{struct FILE_STREAM_INFO { |
| NextEntryOffset: DWORD, |
| StreamNameLength: DWORD, |
| StreamSize: LARGE_INTEGER, |
| StreamAllocationSize: LARGE_INTEGER, |
| StreamName: [WCHAR; 1], |
| }} |
| STRUCT!{struct FILE_COMPRESSION_INFO { |
| CompressedFileSize: LARGE_INTEGER, |
| CompressionFormat: WORD, |
| CompressionUnitShift: UCHAR, |
| ChunkShift: UCHAR, |
| ClusterShift: UCHAR, |
| Reserved: [UCHAR; 3], |
| }} |
| STRUCT!{struct FILE_ATTRIBUTE_TAG_INFO { |
| NextEntryOffset: DWORD, |
| ReparseTag: DWORD, |
| }} |
| STRUCT!{struct FILE_ID_BOTH_DIR_INFO { |
| NextEntryOffset: DWORD, |
| FileIndex: DWORD, |
| CreationTime: LARGE_INTEGER, |
| LastAccessTime: LARGE_INTEGER, |
| LastWriteTime: LARGE_INTEGER, |
| ChangeTime: LARGE_INTEGER, |
| EndOfFile: LARGE_INTEGER, |
| AllocationSize: LARGE_INTEGER, |
| FileAttributes: DWORD, |
| FileNameLength: DWORD, |
| EaSize: DWORD, |
| ShortNameLength: CCHAR, |
| ShortName: [WCHAR; 12], |
| FileId: LARGE_INTEGER, |
| FileName: [WCHAR; 1], |
| }} |
| STRUCT!{struct FILE_IO_PRIORITY_HINT_INFO { |
| PriorityHint: PRIORITY_HINT, |
| }} |
| STRUCT!{struct FILE_FULL_DIR_INFO { |
| NextEntryOffset: ULONG, |
| FileIndex: ULONG, |
| CreationTime: LARGE_INTEGER, |
| LastAccessTime: LARGE_INTEGER, |
| LastWriteTime: LARGE_INTEGER, |
| ChangeTime: LARGE_INTEGER, |
| EndOfFile: LARGE_INTEGER, |
| AllocationSize: LARGE_INTEGER, |
| FileAttributes: ULONG, |
| FileNameLength: ULONG, |
| EaSize: ULONG, |
| FileName: [WCHAR; 1], |
| }} |
| STRUCT!{struct FILE_STORAGE_INFO { |
| LogicalBytesPerSector: ULONG, |
| PhysicalBytesPerSectorForAtomicity: ULONG, |
| PhysicalBytesPerSectorForPerformance: ULONG, |
| FileSystemEffectivePhysicalBytesPerSectorForAtomicity: ULONG, |
| Flags: ULONG, |
| ByteOffsetForSectorAlignment: ULONG, |
| ByteOffsetForPartitionAlignment: ULONG, |
| }} |
| STRUCT!{struct FILE_ALIGNMENT_INFO { |
| AlignmentRequirement: ULONG, |
| }} |
| STRUCT!{struct FILE_ID_INFO { |
| VolumeSerialNumber: ULONGLONG, |
| FileId: FILE_ID_128, |
| }} |
| extern "system" { |
| pub fn CompareFileTime( |
| lpFileTime1: *const FILETIME, |
| lpFileTime2: *const FILETIME, |
| ) -> LONG; |
| pub fn CreateDirectoryA( |
| lpPathName: LPCSTR, |
| lpSecurityAttributes: LPSECURITY_ATTRIBUTES, |
| ) -> BOOL; |
| pub fn CreateDirectoryW( |
| lpPathName: LPCWSTR, |
| lpSecurityAttributes: LPSECURITY_ATTRIBUTES, |
| ) -> BOOL; |
| pub fn CreateFileA( |
| lpFileName: LPCSTR, |
| dwDesiredAccess: DWORD, |
| dwShareMode: DWORD, |
| lpSecurityAttributes: LPSECURITY_ATTRIBUTES, |
| dwCreationDisposition: DWORD, |
| dwFlagsAndAttributes: DWORD, |
| hTemplateFile: HANDLE, |
| ) -> HANDLE; |
| pub fn CreateFileW( |
| lpFileName: LPCWSTR, |
| dwDesiredAccess: DWORD, |
| dwShareMode: DWORD, |
| lpSecurityAttributes: LPSECURITY_ATTRIBUTES, |
| dwCreationDisposition: DWORD, |
| dwFlagsAndAttributes: DWORD, |
| hTemplateFile: HANDLE, |
| ) -> HANDLE; |
| pub fn DefineDosDeviceW( |
| dwFlags: DWORD, |
| lpDeviceName: LPCWSTR, |
| lpTargetPath: LPCWSTR, |
| ) -> BOOL; |
| pub fn DeleteFileA( |
| lpFileName: LPCSTR, |
| ) -> BOOL; |
| pub fn DeleteFileW( |
| lpFileName: LPCWSTR, |
| ) -> BOOL; |
| pub fn DeleteVolumeMountPointW( |
| lpszVolumeMountPoint: LPCWSTR, |
| ) -> BOOL; |
| pub fn FileTimeToLocalFileTime( |
| lpFileTime: *const FILETIME, |
| lpLocalFileTime: LPFILETIME, |
| ) -> BOOL; |
| pub fn FindClose( |
| hFindFile: HANDLE, |
| ) -> BOOL; |
| pub fn FindCloseChangeNotification( |
| hChangeHandle: HANDLE, |
| ) -> BOOL; |
| pub fn FindFirstChangeNotificationA( |
| lpPathName: LPCSTR, |
| bWatchSubtree: BOOL, |
| dwNotifyFilter: DWORD, |
| ) -> HANDLE; |
| pub fn FindFirstChangeNotificationW( |
| lpPathName: LPCWSTR, |
| bWatchSubtree: BOOL, |
| dwNotifyFilter: DWORD, |
| ) -> HANDLE; |
| pub fn FindFirstFileA( |
| lpFileName: LPCSTR, |
| lpFindFileData: LPWIN32_FIND_DATAA, |
| ) -> HANDLE; |
| pub fn FindFirstFileW( |
| lpFileName: LPCWSTR, |
| lpFindFileData: LPWIN32_FIND_DATAW, |
| ) -> HANDLE; |
| pub fn FindFirstFileExA( |
| lpFileName: LPCSTR, |
| fInfoLevelId: FINDEX_INFO_LEVELS, |
| lpFindFileData: LPVOID, |
| fSearchOp: FINDEX_SEARCH_OPS, |
| lpSearchFilter: LPVOID, |
| dwAdditionalFlags: DWORD, |
| ) -> HANDLE; |
| pub fn FindFirstFileExW( |
| lpFileName: LPCWSTR, |
| fInfoLevelId: FINDEX_INFO_LEVELS, |
| lpFindFileData: LPVOID, |
| fSearchOp: FINDEX_SEARCH_OPS, |
| lpSearchFilter: LPVOID, |
| dwAdditionalFlags: DWORD, |
| ) -> HANDLE; |
| pub fn FindFirstVolumeW( |
| lpszVolumeName: LPWSTR, |
| cchBufferLength: DWORD, |
| ) -> HANDLE; |
| pub fn FindNextChangeNotification( |
| hChangeHandle: HANDLE, |
| ) -> BOOL; |
| pub fn FindNextFileA( |
| hFindFile: HANDLE, |
| lpFindFileData: LPWIN32_FIND_DATAA, |
| ) -> BOOL; |
| pub fn FindNextFileW( |
| hFindFile: HANDLE, |
| lpFindFileData: LPWIN32_FIND_DATAW, |
| ) -> BOOL; |
| pub fn FindNextVolumeW( |
| hFindVolume: HANDLE, |
| lpszVolumeName: LPWSTR, |
| cchBufferLength: DWORD, |
| ) -> BOOL; |
| pub fn FindVolumeClose( |
| hFindVolume: HANDLE, |
| ) -> BOOL; |
| pub fn FlushFileBuffers( |
| hFile: HANDLE, |
| ) -> BOOL; |
| pub fn GetDiskFreeSpaceA( |
| lpRootPathName: LPCSTR, |
| lpSectorsPerCluster: LPDWORD, |
| lpBytesPerSector: LPDWORD, |
| lpNumberOfFreeClusters: LPDWORD, |
| lpTotalNumberOfClusters: LPDWORD, |
| ) -> BOOL; |
| pub fn GetDiskFreeSpaceW( |
| lpRootPathName: LPCWSTR, |
| lpSectorsPerCluster: LPDWORD, |
| lpBytesPerSector: LPDWORD, |
| lpNumberOfFreeClusters: LPDWORD, |
| lpTotalNumberOfClusters: LPDWORD, |
| ) -> BOOL; |
| pub fn GetDiskFreeSpaceExA( |
| lpDirectoryName: LPCSTR, |
| lpFreeBytesAvailableToCaller: PULARGE_INTEGER, |
| lpTotalNumberOfBytes: PULARGE_INTEGER, |
| lpTotalNumberOfFreeBytes: PULARGE_INTEGER, |
| ) -> BOOL; |
| pub fn GetDiskFreeSpaceExW( |
| lpDirectoryName: LPCWSTR, |
| lpFreeBytesAvailableToCaller: PULARGE_INTEGER, |
| lpTotalNumberOfBytes: PULARGE_INTEGER, |
| lpTotalNumberOfFreeBytes: PULARGE_INTEGER, |
| ) -> BOOL; |
| pub fn GetDriveTypeA( |
| lpRootPathName: LPCSTR, |
| ) -> UINT; |
| pub fn GetDriveTypeW( |
| lpRootPathName: LPCWSTR, |
| ) -> UINT; |
| pub fn GetFileAttributesA( |
| lpFileName: LPCSTR, |
| ) -> DWORD; |
| pub fn GetFileAttributesW( |
| lpFileName: LPCWSTR, |
| ) -> DWORD; |
| pub fn GetFileAttributesExA( |
| lpFileName: LPCSTR, |
| fInfoLevelId: GET_FILEEX_INFO_LEVELS, |
| lpFileInformation: LPVOID, |
| ) -> BOOL; |
| pub fn GetFileAttributesExW( |
| lpFileName: LPCWSTR, |
| fInfoLevelId: GET_FILEEX_INFO_LEVELS, |
| lpFileInformation: LPVOID, |
| ) -> BOOL; |
| pub fn GetFileInformationByHandle( |
| hFile: HANDLE, |
| lpFileInformation: LPBY_HANDLE_FILE_INFORMATION, |
| ) -> BOOL; |
| pub fn GetFileSize( |
| hFile: HANDLE, |
| lpFileSizeHigh: LPDWORD, |
| ) -> DWORD; |
| pub fn GetFileSizeEx( |
| hFile: HANDLE, |
| lpFileSize: PLARGE_INTEGER, |
| ) -> BOOL; |
| pub fn GetFileType( |
| hFile: HANDLE, |
| ) -> DWORD; |
| pub fn GetFinalPathNameByHandleA( |
| hFile: HANDLE, |
| lpszFilePath: LPSTR, |
| cchFilePath: DWORD, |
| dwFlags: DWORD, |
| ) -> DWORD; |
| pub fn GetFinalPathNameByHandleW( |
| hFile: HANDLE, |
| lpszFilePath: LPWSTR, |
| cchFilePath: DWORD, |
| dwFlags: DWORD, |
| ) -> DWORD; |
| pub fn GetFileTime( |
| hFile: HANDLE, |
| lpCreationTime: LPFILETIME, |
| lpLastAccessTime: LPFILETIME, |
| lpLastWriteTime: LPFILETIME, |
| ) -> BOOL; |
| pub fn GetFullPathNameW( |
| lpFileName: LPCWSTR, |
| nBufferLength: DWORD, |
| lpBuffer: LPWSTR, |
| lpFilePart: *mut LPWSTR, |
| ) -> DWORD; |
| pub fn GetFullPathNameA( |
| lpFileName: LPCSTR, |
| nBufferLength: DWORD, |
| lpBuffer: LPSTR, |
| lpFilePart: *mut LPSTR, |
| ) -> DWORD; |
| pub fn GetLogicalDrives() -> DWORD; |
| pub fn GetLogicalDriveStringsW( |
| nBufferLength: DWORD, |
| lpBuffer: LPWSTR, |
| ) -> DWORD; |
| pub fn GetLongPathNameA( |
| lpszShortPath: LPCSTR, |
| lpszLongPath: LPSTR, |
| cchBuffer: DWORD, |
| ) -> DWORD; |
| pub fn GetLongPathNameW( |
| lpszShortPath: LPCWSTR, |
| lpszLongPath: LPWSTR, |
| cchBuffer: DWORD, |
| ) -> DWORD; |
| pub fn GetShortPathNameW( |
| lpszLongPath: LPCWSTR, |
| lpszShortPath: LPWSTR, |
| cchBuffer: DWORD, |
| ) -> DWORD; |
| pub fn GetTempFileNameW( |
| lpPathName: LPCWSTR, |
| lpPrefixString: LPCWSTR, |
| uUnique: UINT, |
| lpTempFileName: LPWSTR, |
| ) -> UINT; |
| pub fn GetVolumeInformationByHandleW( |
| hFile: HANDLE, |
| lpVolumeNameBuffer: LPWSTR, |
| nVolumeNameSize: DWORD, |
| lpVolumeSerialNumber: LPDWORD, |
| lpMaximumComponentLength: LPDWORD, |
| lpFileSystemFlags: LPDWORD, |
| lpFileSystemNameBuffer: LPWSTR, |
| nFileSystemNameSize: DWORD, |
| ) -> BOOL; |
| pub fn GetVolumeInformationW( |
| lpRootPathName: LPCWSTR, |
| lpVolumeNameBuffer: LPWSTR, |
| nVolumeNameSize: DWORD, |
| lpVolumeSerialNumber: LPDWORD, |
| lpMaximumComponentLength: LPDWORD, |
| lpFileSystemFlags: LPDWORD, |
| lpFileSystemNameBuffer: LPWSTR, |
| nFileSystemNameSize: DWORD, |
| ) -> BOOL; |
| pub fn GetVolumePathNameW( |
| lpszFileName: LPCWSTR, |
| lpszVolumePathName: LPWSTR, |
| cchBufferLength: DWORD, |
| ) -> BOOL; |
| pub fn LocalFileTimeToFileTime( |
| lpLocalFileTime: *const FILETIME, |
| lpFileTime: LPFILETIME, |
| ) -> BOOL; |
| pub fn LockFile( |
| hFile: HANDLE, |
| dwFileOffsetLow: DWORD, |
| dwFileOffsetHigh: DWORD, |
| nNumberOfBytesToLockLow: DWORD, |
| nNumberOfBytesToLockHigh: DWORD, |
| ) -> BOOL; |
| pub fn LockFileEx( |
| hFile: HANDLE, |
| dwFlags: DWORD, |
| dwReserved: DWORD, |
| nNumberOfBytesToLockLow: DWORD, |
| nNumberOfBytesToLockHigh: DWORD, |
| lpOverlapped: LPOVERLAPPED, |
| ) -> BOOL; |
| pub fn QueryDosDeviceW( |
| lpDeviceName: LPCWSTR, |
| lpTargetPath: LPWSTR, |
| ucchMax: DWORD, |
| ) -> DWORD; |
| pub fn ReadFile( |
| hFile: HANDLE, |
| lpBuffer: LPVOID, |
| nNumberOfBytesToRead: DWORD, |
| lpNumberOfBytesRead: LPDWORD, |
| lpOverlapped: LPOVERLAPPED, |
| ) -> BOOL; |
| pub fn ReadFileEx( |
| hFile: HANDLE, |
| lpBuffer: LPVOID, |
| nNumberOfBytesToRead: DWORD, |
| lpOverlapped: LPOVERLAPPED, |
| lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE, |
| ) -> BOOL; |
| pub fn ReadFileScatter( |
| hFile: HANDLE, |
| aSegmentArray: *mut FILE_SEGMENT_ELEMENT, |
| nNumberOfBytesToRead: DWORD, |
| lpReserved: LPDWORD, |
| lpOverlapped: LPOVERLAPPED, |
| ) -> BOOL; |
| pub fn RemoveDirectoryA( |
| lpPathName: LPCSTR, |
| ) -> BOOL; |
| pub fn RemoveDirectoryW( |
| lpPathName: LPCWSTR, |
| ) -> BOOL; |
| pub fn SetEndOfFile( |
| hFile: HANDLE, |
| ) -> BOOL; |
| pub fn SetFileAttributesA( |
| lpFileName: LPCSTR, |
| dwFileAttributes: DWORD, |
| ) -> BOOL; |
| pub fn SetFileAttributesW( |
| lpFileName: LPCWSTR, |
| dwFileAttributes: DWORD, |
| ) -> BOOL; |
| pub fn SetFileInformationByHandle( |
| hFile: HANDLE, |
| FileInformationClass: FILE_INFO_BY_HANDLE_CLASS, |
| lpFileInformation: LPVOID, |
| dwBufferSize: DWORD, |
| ) -> BOOL; |
| pub fn SetFilePointer( |
| hFile: HANDLE, |
| lDistanceToMove: LONG, |
| lpDistanceToMoveHigh: PLONG, |
| dwMoveMethod: DWORD, |
| ) -> DWORD; |
| pub fn SetFilePointerEx( |
| hFile: HANDLE, |
| liDistanceToMove: LARGE_INTEGER, |
| lpNewFilePointer: PLARGE_INTEGER, |
| dwMoveMethod: DWORD, |
| ) -> BOOL; |
| pub fn SetFileTime( |
| hFile: HANDLE, |
| lpCreationTime: *const FILETIME, |
| lpLastAccessTime: *const FILETIME, |
| lpLastWriteTime: *const FILETIME, |
| ) -> BOOL; |
| pub fn SetFileValidData( |
| hFile: HANDLE, |
| ValidDataLength: LONGLONG, |
| ) -> BOOL; |
| pub fn UnlockFile( |
| hFile: HANDLE, |
| dwFileOffsetLow: DWORD, |
| dwFileOffsetHigh: DWORD, |
| nNumberOfBytesToUnlockLow: DWORD, |
| nNumberOfBytesToUnlockHigh: DWORD, |
| ) -> BOOL; |
| pub fn UnlockFileEx( |
| hFile: HANDLE, |
| dwReserved: DWORD, |
| nNumberOfBytesToUnlockLow: DWORD, |
| nNumberOfBytesToUnlockHigh: DWORD, |
| lpOverlapped: LPOVERLAPPED, |
| ) -> BOOL; |
| pub fn WriteFile( |
| hFile: HANDLE, |
| lpBuffer: LPCVOID, |
| nNumberOfBytesToWrite: DWORD, |
| lpNumberOfBytesWritten: LPDWORD, |
| lpOverlapped: LPOVERLAPPED, |
| ) -> BOOL; |
| pub fn WriteFileEx( |
| hFile: HANDLE, |
| lpBuffer: LPCVOID, |
| nNumberOfBytesToWrite: DWORD, |
| lpOverlapped: LPOVERLAPPED, |
| lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE, |
| ) -> BOOL; |
| pub fn WriteFileGather( |
| hFile: HANDLE, |
| aSegmentArray: *mut FILE_SEGMENT_ELEMENT, |
| nNumberOfBytesToWrite: DWORD, |
| lpReserved: LPDWORD, |
| lpOverlapped: LPOVERLAPPED, |
| ) -> BOOL; |
| pub fn GetTempPathW( |
| nBufferLength: DWORD, |
| lpBuffer: LPWSTR, |
| ) -> DWORD; |
| pub fn GetVolumeNameForVolumeMountPointW( |
| lpszVolumeMountPoint: LPCWSTR, |
| lpszVolumeName: LPWSTR, |
| cchBufferLength: DWORD, |
| ) -> BOOL; |
| pub fn GetVolumePathNamesForVolumeNameW( |
| lpszVolumeName: LPCWSTR, |
| lpszVolumePathNames: LPWCH, |
| cchBufferLength: DWORD, |
| lpcchReturnLength: PDWORD, |
| ) -> BOOL; |
| pub fn CreateFile2( |
| lpFileName: LPCWSTR, |
| dwDesiredAccess: DWORD, |
| dwShareMode: DWORD, |
| dwCreationDisposition: DWORD, |
| pCreateExParams: LPCREATEFILE2_EXTENDED_PARAMETERS, |
| ) -> HANDLE; |
| pub fn SetFileIoOverlappedRange( |
| FileHandle: HANDLE, |
| OverlappedRangeStart: PUCHAR, |
| Length: ULONG, |
| ) -> BOOL; |
| pub fn GetCompressedFileSizeA( |
| lpFileName: LPCSTR, |
| lpFileSizeHigh: LPDWORD, |
| ) -> DWORD; |
| pub fn GetCompressedFileSizeW( |
| lpFileName: LPCWSTR, |
| lpFileSizeHigh: LPDWORD, |
| ) -> DWORD; |
| } |
| ENUM!{enum STREAM_INFO_LEVELS { |
| FindStreamInfoStandard, |
| FindStreamInfoMaxInfoLevel, |
| }} |
| extern "system" { |
| pub fn FindFirstStreamW( |
| lpFileName: LPCWSTR, |
| InfoLevel: STREAM_INFO_LEVELS, |
| lpFindStreamData: LPVOID, |
| dwFlags: DWORD, |
| ) -> HANDLE; |
| pub fn FindNextStreamW( |
| hFindStream: HANDLE, |
| lpFindStreamData: LPVOID, |
| ) -> BOOL; |
| pub fn AreFileApisANSI() -> BOOL; |
| pub fn GetTempPathA( |
| nBufferLength: DWORD, |
| lpBuffer: LPSTR, |
| ) -> DWORD; |
| pub fn FindFirstFileNameW( |
| lpFileName: LPCWSTR, |
| dwFlags: DWORD, |
| StringLength: LPDWORD, |
| LinkName: PWSTR, |
| ) -> HANDLE; |
| pub fn FindNextFileNameW( |
| hFindStream: HANDLE, |
| StringLength: LPDWORD, |
| LinkName: PWSTR, |
| ) -> BOOL; |
| pub fn GetVolumeInformationA( |
| lpRootPathName: LPCSTR, |
| lpVolumeNameBuffer: LPSTR, |
| nVolumeNameSize: DWORD, |
| lpVolumeSerialNumber: LPDWORD, |
| lpMaximumComponentLength: LPDWORD, |
| lpFileSystemFlags: LPDWORD, |
| lpFileSystemNameBuffer: LPSTR, |
| nFileSystemNameSize: DWORD, |
| ) -> BOOL; |
| pub fn GetTempFileNameA( |
| lpPathName: LPCSTR, |
| lpPrefixString: LPCSTR, |
| uUnique: UINT, |
| lpTempFileName: LPSTR, |
| ) -> UINT; |
| pub fn SetFileApisToOEM(); |
| pub fn SetFileApisToANSI(); |
| } |