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
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
// Copyright © 2015, Peter Atashian
// Licensed under the MIT License <LICENSE.md>
//! ApiSet Contract for api-ms-win-core-file-l1
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; 0],
}}
STRUCT!{struct FILE_RENAME_INFO {
    ReplaceIfExists: ::BOOL,
    RootDirectory: ::HANDLE,
    FileNameLength: ::DWORD,
    FileName: [::WCHAR; 0],
}}
STRUCT!{struct FILE_DISPOSITION_INFO {
    DeleteFile: ::BOOL,
}}
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: ::DWORD,
    StreamAllocationSize: ::DWORD,
    StreamName: [::WCHAR; 0],
}}
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; 0],
}}
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; 0],
}}
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,
}}