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
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct SECURITY_ATTRIBUTES {
pub nLength: ::DWORD,
pub lpSecurityDescriptor: ::LPVOID,
pub bInheritHandle: ::BOOL,
}
pub type PSECURITY_ATTRIBUTES = *mut SECURITY_ATTRIBUTES;
pub type LPSECURITY_ATTRIBUTES = *mut SECURITY_ATTRIBUTES;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct OVERLAPPED {
pub Internal: ::ULONG_PTR,
pub InternalHigh: ::ULONG_PTR,
pub Offset: ::DWORD,
pub OffsetHigh: ::DWORD,
pub hEvent: ::HANDLE,
}
pub type LPOVERLAPPED = *mut OVERLAPPED;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct OVERLAPPED_ENTRY {
pub lpCompletionKey: ::ULONG_PTR,
pub lpOverlapped: LPOVERLAPPED,
pub Internal: ::ULONG_PTR,
pub dwNumberOfBytesTransferred: ::DWORD,
}
pub type LPOVERLAPPED_ENTRY = *mut OVERLAPPED_ENTRY;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct SYSTEMTIME {
pub wYear: ::WORD,
pub wMonth: ::WORD,
pub wDayOfWeek: ::WORD,
pub wDay: ::WORD,
pub wHour: ::WORD,
pub wMinute: ::WORD,
pub wSecond: ::WORD,
pub wMilliseconds: ::WORD,
}
pub type PSYSTEMTIME = *mut SYSTEMTIME;
pub type LPSYSTEMTIME = *mut SYSTEMTIME;
#[repr(C)] #[derive(Copy)]
pub struct WIN32_FIND_DATAA {
pub dwFileAttributes: ::DWORD,
pub ftCreationTime: ::FILETIME,
pub ftLastAccessTime: ::FILETIME,
pub ftLastWriteTime: ::FILETIME,
pub nFileSizeHigh: ::DWORD,
pub nFileSizeLow: ::DWORD,
pub dwReserved0: ::DWORD,
pub dwReserved1: ::DWORD,
pub cFileName: [::CHAR; ::MAX_PATH],
pub cAlternateFileName: [::CHAR; 14],
}
impl Clone for WIN32_FIND_DATAA { fn clone(&self) -> WIN32_FIND_DATAA { *self } }
pub type PWIN32_FIND_DATAA = *mut WIN32_FIND_DATAA;
pub type LPWIN32_FIND_DATAA = *mut WIN32_FIND_DATAA;
#[repr(C)] #[derive(Copy)]
pub struct WIN32_FIND_DATAW {
pub dwFileAttributes: ::DWORD,
pub ftCreationTime: ::FILETIME,
pub ftLastAccessTime: ::FILETIME,
pub ftLastWriteTime: ::FILETIME,
pub nFileSizeHigh: ::DWORD,
pub nFileSizeLow: ::DWORD,
pub dwReserved0: ::DWORD,
pub dwReserved1: ::DWORD,
pub cFileName: [::WCHAR; ::MAX_PATH],
pub cAlternateFileName: [::WCHAR; 14],
}
impl Clone for WIN32_FIND_DATAW { fn clone(&self) -> WIN32_FIND_DATAW { *self } }
pub type PWIN32_FIND_DATAW = *mut WIN32_FIND_DATAW;
pub type LPWIN32_FIND_DATAW = *mut WIN32_FIND_DATAW;
#[repr(i32)] #[derive(Clone, Copy, Debug)]
pub enum FINDEX_INFO_LEVELS {
FindExInfoStandard = 0,
FindExInfoBasic = 1,
FindExInfoMaxInfoLevel = 2,
}
pub const FIND_FIRST_EX_CASE_SENSITIVE: ::DWORD = 0x00000001;
pub const FIND_FIRST_EX_LARGE_FETCH: ::DWORD = 0x00000002;
#[repr(i32)] #[derive(Clone, Copy, Debug)]
pub enum FINDEX_SEARCH_OPS {
FindExSearchNameMatch = 0,
FindExSearchLimitToDirectories = 1,
FindExSearchLimitToDevices = 2,
FindExSearchMaxSearchOp = 3,
}
#[repr(i32)] #[derive(Clone, Copy, Debug)]
pub enum GET_FILEEX_INFO_LEVELS {
GetFileExInfoStandard = 0,
GetFileExMaxInfoLevel = 1,
}
#[repr(i32)] #[derive(Clone, Copy, Debug)]
pub enum FILE_INFO_BY_HANDLE_CLASS {
FileBasicInfo = 0,
FileStandardInfo = 1,
FileNameInfo = 2,
FileRenameInfo = 3,
FileDispositionInfo = 4,
FileAllocationInfo = 5,
FileEndOfFileInfo = 6,
FileStreamInfo = 7,
FileCompressionInfo = 8,
FileAttributeTagInfo = 9,
FileIdBothDirectoryInfo = 10,
FileIdBothDirectoryRestartInfo = 11,
FileIoPriorityHintInfo = 12,
FileRemoteProtocolInfo = 13,
FileFullDirectoryInfo = 14,
FileFullDirectoryRestartInfo = 15,
FileStorageInfo = 16,
FileAlignmentInfo = 17,
FileIdInfo = 18,
FileIdExtdDirectoryInfo = 19,
FileIdExtdDirectoryRestartInfo = 20,
MaximumFileInfoByHandleClass = 21,
}
pub type PFILE_INFO_BY_HANDLE_CLASS = *mut FILE_INFO_BY_HANDLE_CLASS;
pub type LPOVERLAPPED_COMPLETION_ROUTINE = Option<unsafe extern "system" fn(
dwErrorCode: ::DWORD, dwNumberOfBytesTransfered: ::DWORD, lpOverlapped: LPOVERLAPPED,
)>;
pub const LOCKFILE_FAIL_IMMEDIATELY: ::DWORD = 0x00000001;
pub const LOCKFILE_EXCLUSIVE_LOCK: ::DWORD = 0x00000002;