1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 //! ApiSet Contract for api-ms-win-core-file-l1
4 pub const CREATE_NEW
: ::DWORD
= 1;
5 pub const CREATE_ALWAYS
: ::DWORD
= 2;
6 pub const OPEN_EXISTING
: ::DWORD
= 3;
7 pub const OPEN_ALWAYS
: ::DWORD
= 4;
8 pub const TRUNCATE_EXISTING
: ::DWORD
= 5;
9 pub const INVALID_FILE_SIZE
: ::DWORD
= 0xFFFFFFFF;
10 pub const INVALID_SET_FILE_POINTER
: ::DWORD
= 0xFFFFFFFF;
11 pub const INVALID_FILE_ATTRIBUTES
: ::DWORD
= 0xFFFFFFFF;
12 STRUCT
!{struct WIN32_FILE_ATTRIBUTE_DATA
{
13 dwFileAttributes
: ::DWORD
,
14 ftCreationTime
: ::FILETIME
,
15 ftLastAccessTime
: ::FILETIME
,
16 ftLastWriteTime
: ::FILETIME
,
17 nFileSizeHigh
: ::DWORD
,
18 nFileSizeLow
: ::DWORD
,
20 pub type LPWIN32_FILE_ATTRIBUTE_DATA
= *mut WIN32_FILE_ATTRIBUTE_DATA
;
21 STRUCT
!{struct BY_HANDLE_FILE_INFORMATION
{
22 dwFileAttributes
: ::DWORD
,
23 ftCreationTime
: ::FILETIME
,
24 ftLastAccessTime
: ::FILETIME
,
25 ftLastWriteTime
: ::FILETIME
,
26 dwVolumeSerialNumber
: ::DWORD
,
27 nFileSizeHigh
: ::DWORD
,
28 nFileSizeLow
: ::DWORD
,
29 nNumberOfLinks
: ::DWORD
,
30 nFileIndexHigh
: ::DWORD
,
31 nFileIndexLow
: ::DWORD
,
33 pub type PBY_HANDLE_FILE_INFORMATION
= *mut BY_HANDLE_FILE_INFORMATION
;
34 pub type LPBY_HANDLE_FILE_INFORMATION
= *mut BY_HANDLE_FILE_INFORMATION
;
35 STRUCT
!{struct CREATEFILE2_EXTENDED_PARAMETERS
{
37 dwFileAttributes
: ::DWORD
,
39 dwSecurityQosFlags
: ::DWORD
,
40 lpSecurityAttributes
: ::LPSECURITY_ATTRIBUTES
,
41 hTemplateFile
: ::HANDLE
,
43 pub type PCREATEFILE2_EXTENDED_PARAMETERS
= *mut CREATEFILE2_EXTENDED_PARAMETERS
;
44 pub type LPCREATEFILE2_EXTENDED_PARAMETERS
= *mut CREATEFILE2_EXTENDED_PARAMETERS
;
45 ENUM
!{enum PRIORITY_HINT
{
46 IoPriorityHintVeryLow
= 0,
47 IoPriorityHintLow
= 1,
48 IoPriorityHintNormal
= 2,
49 MaximumIoPriorityHintType
= 3,
51 STRUCT
!{struct FILE_BASIC_INFO
{
52 CreationTime
: ::LARGE_INTEGER
,
53 LastAccessTime
: ::LARGE_INTEGER
,
54 LastWriteTime
: ::LARGE_INTEGER
,
55 ChangeTime
: ::LARGE_INTEGER
,
56 FileAttributes
: ::DWORD
,
58 STRUCT
!{struct FILE_STANDARD_INFO
{
59 AllocationSize
: ::LARGE_INTEGER
,
60 EndOfFile
: ::LARGE_INTEGER
,
61 NumberOfLinks
: ::DWORD
,
62 DeletePending
: ::BOOLEAN
,
65 STRUCT
!{struct FILE_NAME_INFO
{
66 FileNameLength
: ::DWORD
,
67 FileName
: [::WCHAR
; 0],
69 STRUCT
!{struct FILE_RENAME_INFO
{
70 ReplaceIfExists
: ::BOOL
,
71 RootDirectory
: ::HANDLE
,
72 FileNameLength
: ::DWORD
,
73 FileName
: [::WCHAR
; 0],
75 STRUCT
!{struct FILE_DISPOSITION_INFO
{
78 STRUCT
!{struct FILE_ALLOCATION_INFO
{
79 AllocationSize
: ::LARGE_INTEGER
,
81 STRUCT
!{struct FILE_END_OF_FILE_INFO
{
82 EndOfFile
: ::LARGE_INTEGER
,
84 STRUCT
!{struct FILE_STREAM_INFO
{
85 NextEntryOffset
: ::DWORD
,
86 StreamNameLength
: ::DWORD
,
88 StreamAllocationSize
: ::DWORD
,
89 StreamName
: [::WCHAR
; 0],
91 STRUCT
!{struct FILE_COMPRESSION_INFO
{
92 CompressedFileSize
: ::LARGE_INTEGER
,
93 CompressionFormat
: ::WORD
,
94 CompressionUnitShift
: ::UCHAR
,
96 ClusterShift
: ::UCHAR
,
97 Reserved
: [::UCHAR
; 3],
99 STRUCT
!{struct FILE_ATTRIBUTE_TAG_INFO
{
100 NextEntryOffset
: ::DWORD
,
103 STRUCT
!{struct FILE_ID_BOTH_DIR_INFO
{
104 NextEntryOffset
: ::DWORD
,
106 CreationTime
: ::LARGE_INTEGER
,
107 LastAccessTime
: ::LARGE_INTEGER
,
108 LastWriteTime
: ::LARGE_INTEGER
,
109 ChangeTime
: ::LARGE_INTEGER
,
110 EndOfFile
: ::LARGE_INTEGER
,
111 AllocationSize
: ::LARGE_INTEGER
,
112 FileAttributes
: ::DWORD
,
113 FileNameLength
: ::DWORD
,
115 ShortNameLength
: ::CCHAR
,
116 ShortName
: [::WCHAR
; 12],
117 FileId
: ::LARGE_INTEGER
,
118 FileName
: [::WCHAR
; 0],
120 STRUCT
!{struct FILE_IO_PRIORITY_HINT_INFO
{
121 PriorityHint
: ::PRIORITY_HINT
,
123 STRUCT
!{struct FILE_FULL_DIR_INFO
{
124 NextEntryOffset
: ::ULONG
,
126 CreationTime
: ::LARGE_INTEGER
,
127 LastAccessTime
: ::LARGE_INTEGER
,
128 LastWriteTime
: ::LARGE_INTEGER
,
129 ChangeTime
: ::LARGE_INTEGER
,
130 EndOfFile
: ::LARGE_INTEGER
,
131 AllocationSize
: ::LARGE_INTEGER
,
132 FileAttributes
: ::ULONG
,
133 FileNameLength
: ::ULONG
,
135 FileName
: [::WCHAR
; 0],
137 STRUCT
!{struct FILE_STORAGE_INFO
{
138 LogicalBytesPerSector
: ::ULONG
,
139 PhysicalBytesPerSectorForAtomicity
: ::ULONG
,
140 PhysicalBytesPerSectorForPerformance
: ::ULONG
,
141 FileSystemEffectivePhysicalBytesPerSectorForAtomicity
: ::ULONG
,
143 ByteOffsetForSectorAlignment
: ::ULONG
,
144 ByteOffsetForPartitionAlignment
: ::ULONG
,
146 STRUCT
!{struct FILE_ALIGNMENT_INFO
{
147 AlignmentRequirement
: ::ULONG
,
149 STRUCT
!{struct FILE_ID_INFO
{
150 VolumeSerialNumber
: ::ULONGLONG
,
151 FileId
: ::FILE_ID_128
,