1 // Copyright © 2015, Peter Atashian 2 // Licensed under the MIT License <LICENSE.md> 3 //! This module defines the 32-Bit Windows Base APIs 4 pub const FILE_BEGIN: ::DWORD = 0; 5 pub const FILE_CURRENT: ::DWORD = 1; 6 pub const FILE_END: ::DWORD = 2; 7 pub const WAIT_FAILED: ::DWORD = 0xFFFFFFFF; 8 pub const WAIT_OBJECT_0: ::DWORD = ::STATUS_WAIT_0 as ::DWORD; 9 pub const WAIT_ABANDONED: ::DWORD = ::STATUS_ABANDONED_WAIT_0 as ::DWORD; 10 pub const WAIT_ABANDONED_0: ::DWORD = ::STATUS_ABANDONED_WAIT_0 as ::DWORD; 11 pub const WAIT_IO_COMPLETION: ::DWORD = ::STATUS_USER_APC as ::DWORD; 12 pub const FILE_FLAG_WRITE_THROUGH: ::DWORD = 0x80000000; 13 pub const FILE_FLAG_OVERLAPPED: ::DWORD = 0x40000000; 14 pub const FILE_FLAG_NO_BUFFERING: ::DWORD = 0x20000000; 15 pub const FILE_FLAG_RANDOM_ACCESS: ::DWORD = 0x10000000; 16 pub const FILE_FLAG_SEQUENTIAL_SCAN: ::DWORD = 0x08000000; 17 pub const FILE_FLAG_DELETE_ON_CLOSE: ::DWORD = 0x04000000; 18 pub const FILE_FLAG_BACKUP_SEMANTICS: ::DWORD = 0x02000000; 19 pub const FILE_FLAG_POSIX_SEMANTICS: ::DWORD = 0x01000000; 20 pub const FILE_FLAG_SESSION_AWARE: ::DWORD = 0x00800000; 21 pub const FILE_FLAG_OPEN_REPARSE_POINT: ::DWORD = 0x00200000; 22 pub const FILE_FLAG_OPEN_NO_RECALL: ::DWORD = 0x00100000; 23 pub const FILE_FLAG_FIRST_PIPE_INSTANCE: ::DWORD = 0x00080000; 24 pub const FILE_FLAG_OPEN_REQUIRING_OPLOCK: ::DWORD = 0x00040000; 25 pub const PROGRESS_CONTINUE: ::DWORD = 0; 26 pub const PROGRESS_CANCEL: ::DWORD = 1; 27 pub const PROGRESS_STOP: ::DWORD = 2; 28 pub const PROGRESS_QUIET: ::DWORD = 3; 29 pub const CALLBACK_CHUNK_FINISHED: ::DWORD = 0x00000000; 30 pub const CALLBACK_STREAM_SWITCH: ::DWORD = 0x00000001; 31 pub const COPY_FILE_FAIL_IF_EXISTS: ::DWORD = 0x00000001; 32 pub const COPY_FILE_RESTARTABLE: ::DWORD = 0x00000002; 33 pub const COPY_FILE_OPEN_SOURCE_FOR_WRITE: ::DWORD = 0x00000004; 34 pub const COPY_FILE_ALLOW_DECRYPTED_DESTINATION: ::DWORD = 0x00000008; 35 pub const COPY_FILE_COPY_SYMLINK: ::DWORD = 0x00000800; 36 pub const COPY_FILE_NO_BUFFERING: ::DWORD = 0x00001000; 37 pub const COPY_FILE_REQUEST_SECURITY_PRIVILEGES: ::DWORD = 0x00002000; 38 pub const COPY_FILE_RESUME_FROM_PAUSE: ::DWORD = 0x00004000; 39 pub const COPY_FILE_NO_OFFLOAD: ::DWORD = 0x00040000; 40 pub const REPLACEFILE_WRITE_THROUGH: ::DWORD = 0x00000001; 41 pub const REPLACEFILE_IGNORE_MERGE_ERRORS: ::DWORD = 0x00000002; 42 pub const REPLACEFILE_IGNORE_ACL_ERRORS: ::DWORD = 0x00000004; 43 pub const PIPE_ACCESS_INBOUND: ::DWORD = 0x00000001; 44 pub const PIPE_ACCESS_OUTBOUND: ::DWORD = 0x00000002; 45 pub const PIPE_ACCESS_DUPLEX: ::DWORD = 0x00000003; 46 pub const PIPE_CLIENT_END: ::DWORD = 0x00000000; 47 pub const PIPE_SERVER_END: ::DWORD = 0x00000001; 48 pub const PIPE_WAIT: ::DWORD = 0x00000000; 49 pub const PIPE_NOWAIT: ::DWORD = 0x00000001; 50 pub const PIPE_READMODE_BYTE: ::DWORD = 0x00000000; 51 pub const PIPE_READMODE_MESSAGE: ::DWORD = 0x00000002; 52 pub const PIPE_TYPE_BYTE: ::DWORD = 0x00000000; 53 pub const PIPE_TYPE_MESSAGE: ::DWORD = 0x00000004; 54 pub const PIPE_ACCEPT_REMOTE_CLIENTS: ::DWORD = 0x00000000; 55 pub const PIPE_REJECT_REMOTE_CLIENTS: ::DWORD = 0x00000008; 56 pub const PIPE_UNLIMITED_INSTANCES: ::DWORD = 255; 57 //270 58 pub const SECURITY_CONTEXT_TRACKING: ::DWORD = 0x00040000; 59 pub const SECURITY_EFFECTIVE_ONLY: ::DWORD = 0x00080000; 60 pub const SECURITY_SQOS_PRESENT: ::DWORD = 0x00100000; 61 pub const SECURITY_VALID_SQOS_FLAGS: ::DWORD = 0x001F0000; 62 //282 63 pub type PFIBER_START_ROUTINE = Option<unsafe extern "system" fn(lpFiberParameter: ::LPVOID)>; 64 pub type LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE; 65 pub type PFIBER_CALLOUT_ROUTINE = Option<unsafe extern "system" fn( 66 lpParameter: ::LPVOID, 67 ) -> ::LPVOID>; 68 //299 69 pub type LPLDT_ENTRY = ::LPVOID; // TODO - fix this for 32-bit 70 //405 71 STRUCT!{struct COMMPROP { 72 wPacketLength: ::WORD, 73 wPacketVersion: ::WORD, 74 dwServiceMask: ::DWORD, 75 dwReserved1: ::DWORD, 76 dwMaxTxQueue: ::DWORD, 77 dwMaxRxQueue: ::DWORD, 78 dwMaxBaud: ::DWORD, 79 dwProvSubType: ::DWORD, 80 dwProvCapabilities: ::DWORD, 81 dwSettableParams: ::DWORD, 82 dwSettableBaud: ::DWORD, 83 wSettableData: ::WORD, 84 wSettableStopParity: ::WORD, 85 dwCurrentTxQueue: ::DWORD, 86 dwCurrentRxQueue: ::DWORD, 87 dwProvSpec1: ::DWORD, 88 dwProvSpec2: ::DWORD, 89 wcProvChar: [::WCHAR; 1], 90 }} 91 pub type LPCOMMPROP = *mut COMMPROP; 92 //432 93 STRUCT!{struct COMSTAT { 94 BitFields: ::DWORD, 95 cbInQue: ::DWORD, 96 cbOutQue : ::DWORD, 97 }} 98 BITFIELD!(COMSTAT BitFields: ::DWORD [ 99 fCtsHold set_fCtsHold[0..1], 100 fDsrHold set_fDsrHold[1..2], 101 fRlsdHold set_fRlsdHold[2..3], 102 fXoffHold set_fXoffHold[3..4], 103 fXoffSent set_fXoffSent[4..5], 104 fEof set_fEof[5..6], 105 fTxim set_fTxim[6..7], 106 fReserved set_fReserved[7..32], 107 ]); 108 pub type LPCOMSTAT = *mut COMSTAT; 109 //460 110 STRUCT!{struct DCB { 111 DCBlength: ::DWORD, 112 BaudRate: ::DWORD, 113 BitFields: ::DWORD, 114 wReserved: ::WORD, 115 XonLim: ::WORD, 116 XoffLim: ::WORD, 117 ByteSize: ::BYTE, 118 Parity: ::BYTE, 119 StopBits: ::BYTE, 120 XonChar: ::c_char, 121 XoffChar: ::c_char, 122 ErrorChar: ::c_char, 123 EofChar: ::c_char, 124 EvtChar: ::c_char, 125 wReserved1: ::WORD, 126 }} 127 BITFIELD!(DCB BitFields: ::DWORD [ 128 fBinary set_fBinary[0..1], 129 fParity set_fParity[1..2], 130 fOutxCtsFlow set_fOutxCtsFlow[2..3], 131 fOutxDsrFlow set_fOutxDsrFlow[3..4], 132 fDtrControl set_fDtrControl[4..6], 133 fDsrSensitivity set_fDsrSensitivity[6..7], 134 fTXContinueOnXoff set_fTXContinueOnXoff[7..8], 135 fOutX set_fOutX[8..9], 136 fInX set_fInX[9..10], 137 fErrorChar set_fErrorChar[10..11], 138 fNull set_fNull[11..12], 139 fRtsControl set_fRtsControl[12..14], 140 fAbortOnError set_fAbortOnError[14..15], 141 fDummy2 set_fDummy2[15..32], 142 ]); 143 pub type LPDCB = *mut DCB; 144 STRUCT!{struct COMMTIMEOUTS { 145 ReadIntervalTimeout: ::DWORD, 146 ReadTotalTimeoutMultiplier: ::DWORD, 147 ReadTotalTimeoutConstant: ::DWORD, 148 WriteTotalTimeoutMultiplier: ::DWORD, 149 WriteTotalTimeoutConstant: ::DWORD, 150 }} 151 pub type LPCOMMTIMEOUTS = *mut COMMTIMEOUTS; 152 STRUCT!{struct COMMCONFIG { 153 dwSize: ::DWORD, 154 wVersion: ::WORD, 155 wReserved: ::WORD, 156 dcb: DCB, 157 dwProviderSubType: ::DWORD, 158 dwProviderOffset: ::DWORD, 159 dwProviderSize: ::DWORD, 160 wcProviderData: [::WCHAR; 1], 161 }} 162 pub type LPCOMMCONFIG = *mut COMMCONFIG; 163 //547 164 STRUCT!{struct MEMORYSTATUS { 165 dwLength: ::DWORD, 166 dwMemoryLoad: ::DWORD, 167 dwTotalPhys: ::SIZE_T, 168 dwAvailPhys: ::SIZE_T, 169 dwTotalPageFile: ::SIZE_T, 170 dwAvailPageFile: ::SIZE_T, 171 dwTotalVirtual: ::SIZE_T, 172 dwAvailVirtual: ::SIZE_T, 173 }} 174 pub type LPMEMORYSTATUS = *mut MEMORYSTATUS; 175 //568 176 pub const DEBUG_PROCESS: ::DWORD = 0x00000001; 177 pub const DEBUG_ONLY_THIS_PROCESS: ::DWORD = 0x00000002; 178 pub const CREATE_SUSPENDED: ::DWORD = 0x00000004; 179 pub const DETACHED_PROCESS: ::DWORD = 0x00000008; 180 pub const CREATE_NEW_CONSOLE: ::DWORD = 0x00000010; 181 pub const NORMAL_PRIORITY_CLASS: ::DWORD = 0x00000020; 182 pub const IDLE_PRIORITY_CLASS: ::DWORD = 0x00000040; 183 pub const HIGH_PRIORITY_CLASS: ::DWORD = 0x00000080; 184 pub const REALTIME_PRIORITY_CLASS: ::DWORD = 0x00000100; 185 pub const CREATE_NEW_PROCESS_GROUP: ::DWORD = 0x00000200; 186 pub const CREATE_UNICODE_ENVIRONMENT: ::DWORD = 0x00000400; 187 pub const CREATE_SEPARATE_WOW_VDM: ::DWORD = 0x00000800; 188 pub const CREATE_SHARED_WOW_VDM: ::DWORD = 0x00001000; 189 pub const CREATE_FORCEDOS: ::DWORD = 0x00002000; 190 pub const BELOW_NORMAL_PRIORITY_CLASS: ::DWORD = 0x00004000; 191 pub const ABOVE_NORMAL_PRIORITY_CLASS: ::DWORD = 0x00008000; 192 pub const INHERIT_PARENT_AFFINITY: ::DWORD = 0x00010000; 193 pub const INHERIT_CALLER_PRIORITY: ::DWORD = 0x00020000; 194 pub const CREATE_PROTECTED_PROCESS: ::DWORD = 0x00040000; 195 pub const EXTENDED_STARTUPINFO_PRESENT: ::DWORD = 0x00080000; 196 pub const PROCESS_MODE_BACKGROUND_BEGIN: ::DWORD = 0x00100000; 197 pub const PROCESS_MODE_BACKGROUND_END: ::DWORD = 0x00200000; 198 pub const CREATE_BREAKAWAY_FROM_JOB: ::DWORD = 0x01000000; 199 pub const CREATE_PRESERVE_CODE_AUTHZ_LEVEL: ::DWORD = 0x02000000; 200 pub const CREATE_DEFAULT_ERROR_MODE: ::DWORD = 0x04000000; 201 pub const CREATE_NO_WINDOW: ::DWORD = 0x08000000; 202 pub const PROFILE_USER: ::DWORD = 0x10000000; 203 pub const PROFILE_KERNEL: ::DWORD = 0x20000000; 204 pub const PROFILE_SERVER: ::DWORD = 0x40000000; 205 pub const CREATE_IGNORE_SYSTEM_DEFAULT: ::DWORD = 0x80000000; 206 //618 207 pub const THREAD_PRIORITY_LOWEST: ::DWORD = ::THREAD_BASE_PRIORITY_MIN; 208 pub const THREAD_PRIORITY_BELOW_NORMAL: ::DWORD = THREAD_PRIORITY_LOWEST + 1; 209 pub const THREAD_PRIORITY_NORMAL: ::DWORD = 0; 210 pub const THREAD_PRIORITY_HIGHEST: ::DWORD = ::THREAD_BASE_PRIORITY_MAX; 211 pub const THREAD_PRIORITY_ABOVE_NORMAL: ::DWORD = THREAD_PRIORITY_HIGHEST - 1; 212 pub const THREAD_PRIORITY_ERROR_RETURN: ::DWORD = ::MAXLONG as ::DWORD; 213 pub const THREAD_PRIORITY_TIME_CRITICAL: ::DWORD = ::THREAD_BASE_PRIORITY_LOWRT; 214 pub const THREAD_PRIORITY_IDLE: ::DWORD = ::THREAD_BASE_PRIORITY_IDLE; 215 pub const THREAD_MODE_BACKGROUND_BEGIN: ::DWORD = 0x00010000; 216 pub const THREAD_MODE_BACKGROUND_END: ::DWORD = 0x00020000; 217 //666 218 pub const DRIVE_UNKNOWN: ::DWORD = 0; 219 pub const DRIVE_NO_ROOT_DIR: ::DWORD = 1; 220 pub const DRIVE_REMOVABLE: ::DWORD = 2; 221 pub const DRIVE_FIXED: ::DWORD = 3; 222 pub const DRIVE_REMOTE: ::DWORD = 4; 223 pub const DRIVE_CDROM: ::DWORD = 5; 224 pub const DRIVE_RAMDISK: ::DWORD = 6; 225 pub const FILE_TYPE_UNKNOWN: ::DWORD = 0x0000; 226 pub const FILE_TYPE_DISK: ::DWORD = 0x0001; 227 pub const FILE_TYPE_CHAR: ::DWORD = 0x0002; 228 pub const FILE_TYPE_PIPE: ::DWORD = 0x0003; 229 pub const FILE_TYPE_REMOTE: ::DWORD = 0x8000; 230 pub const STD_INPUT_HANDLE: ::DWORD = 0xFFFFFFF6; 231 pub const STD_OUTPUT_HANDLE: ::DWORD = 0xFFFFFFF5; 232 pub const STD_ERROR_HANDLE: ::DWORD = 0xFFFFFFF4; 233 pub const NOPARITY: ::DWORD = 0; 234 pub const ODDPARITY: ::DWORD = 1; 235 pub const EVENPARITY: ::DWORD = 2; 236 pub const MARKPARITY: ::DWORD = 3; 237 pub const SPACEPARITY: ::DWORD = 4; 238 pub const ONESTOPBIT: ::DWORD = 0; 239 pub const ONE5STOPBITS: ::DWORD = 1; 240 pub const TWOSTOPBITS: ::DWORD = 2; 241 pub const IGNORE: ::DWORD = 0; 242 pub const INFINITE: ::DWORD = 0xFFFFFFFF; 243 //1729 244 pub const SEM_FAILCRITICALERRORS: ::UINT = 0x0001; 245 pub const SEM_NOGPFAULTERRORBOX: ::UINT = 0x0002; 246 pub const SEM_NOALIGNMENTFAULTEXCEPT: ::UINT = 0x0004; 247 pub const SEM_NOOPENFILEERRORBOX: ::UINT = 0x8000; 248 //2320 249 pub const FORMAT_MESSAGE_IGNORE_INSERTS: ::DWORD = 0x00000200; 250 pub const FORMAT_MESSAGE_FROM_STRING: ::DWORD = 0x00000400; 251 pub const FORMAT_MESSAGE_FROM_HMODULE: ::DWORD = 0x00000800; 252 pub const FORMAT_MESSAGE_FROM_SYSTEM: ::DWORD = 0x00001000; 253 pub const FORMAT_MESSAGE_ARGUMENT_ARRAY: ::DWORD = 0x00002000; 254 pub const FORMAT_MESSAGE_MAX_WIDTH_MASK: ::DWORD = 0x000000FF; 255 pub const FORMAT_MESSAGE_ALLOCATE_BUFFER: ::DWORD = 0x00000100; 256 //2873 257 pub const STARTF_USESHOWWINDOW: ::DWORD = 0x00000001; 258 pub const STARTF_USESIZE: ::DWORD = 0x00000002; 259 pub const STARTF_USEPOSITION: ::DWORD = 0x00000004; 260 pub const STARTF_USECOUNTCHARS: ::DWORD = 0x00000008; 261 pub const STARTF_USEFILLATTRIBUTE: ::DWORD = 0x00000010; 262 pub const STARTF_RUNFULLSCREEN: ::DWORD = 0x00000020; 263 pub const STARTF_FORCEONFEEDBACK: ::DWORD = 0x00000040; 264 pub const STARTF_FORCEOFFFEEDBACK: ::DWORD = 0x00000080; 265 pub const STARTF_USESTDHANDLES: ::DWORD = 0x00000100; 266 pub const STARTF_USEHOTKEY: ::DWORD = 0x00000200; 267 pub const STARTF_TITLEISLINKNAME: ::DWORD = 0x00000800; 268 pub const STARTF_TITLEISAPPID: ::DWORD = 0x00001000; 269 pub const STARTF_PREVENTPINNING: ::DWORD = 0x00002000; 270 pub const STARTF_UNTRUSTEDSOURCE: ::DWORD = 0x00008000; 271 //5002 272 pub type LPPROGRESS_ROUTINE = Option<unsafe extern "system" fn( 273 TotalFileSize: ::LARGE_INTEGER, TotalBytesTransferred: ::LARGE_INTEGER, 274 StreamSize: ::LARGE_INTEGER, StreamBytesTransferred: ::LARGE_INTEGER, dwStreamNumber: ::DWORD, 275 dwCallbackReason: ::DWORD, hSourceFile: ::HANDLE, hDestinationFile: ::HANDLE, lpData: ::LPVOID, 276 ) -> ::DWORD>; 277 //5095 278 ENUM!{enum COPYFILE2_MESSAGE_TYPE { 279 COPYFILE2_CALLBACK_NONE = 0, 280 COPYFILE2_CALLBACK_CHUNK_STARTED, 281 COPYFILE2_CALLBACK_CHUNK_FINISHED, 282 COPYFILE2_CALLBACK_STREAM_STARTED, 283 COPYFILE2_CALLBACK_STREAM_FINISHED, 284 COPYFILE2_CALLBACK_POLL_CONTINUE, 285 COPYFILE2_CALLBACK_ERROR, 286 COPYFILE2_CALLBACK_MAX, 287 }} 288 ENUM!{enum COPYFILE2_MESSAGE_ACTION { 289 COPYFILE2_PROGRESS_CONTINUE = 0, 290 COPYFILE2_PROGRESS_CANCEL, 291 COPYFILE2_PROGRESS_STOP, 292 COPYFILE2_PROGRESS_QUIET, 293 COPYFILE2_PROGRESS_PAUSE, 294 }} 295 ENUM!{enum COPYFILE2_COPY_PHASE { 296 COPYFILE2_PHASE_NONE = 0, 297 COPYFILE2_PHASE_PREPARE_SOURCE, 298 COPYFILE2_PHASE_PREPARE_DEST, 299 COPYFILE2_PHASE_READ_SOURCE, 300 COPYFILE2_PHASE_WRITE_DESTINATION, 301 COPYFILE2_PHASE_SERVER_COPY, 302 COPYFILE2_PHASE_NAMEGRAFT_COPY, 303 COPYFILE2_PHASE_MAX, 304 }} 305 //5129 306 STRUCT!{struct COPYFILE2_MESSAGE_ChunkStarted { 307 dwStreamNumber: ::DWORD, 308 dwReserved: ::DWORD, 309 hSourceFile: ::HANDLE, 310 hDestinationFile: ::HANDLE, 311 uliChunkNumber: ::ULARGE_INTEGER, 312 uliChunkSize: ::ULARGE_INTEGER, 313 uliStreamSize: ::ULARGE_INTEGER, 314 uliTotalFileSize: ::ULARGE_INTEGER, 315 }} 316 STRUCT!{struct COPYFILE2_MESSAGE_ChunkFinished { 317 dwStreamNumber: ::DWORD, 318 dwFlags: ::DWORD, 319 hSourceFile: ::HANDLE, 320 hDestinationFile: ::HANDLE, 321 uliChunkNumber: ::ULARGE_INTEGER, 322 uliChunkSize: ::ULARGE_INTEGER, 323 uliStreamSize: ::ULARGE_INTEGER, 324 uliStreamBytesTransferred: ::ULARGE_INTEGER, 325 uliTotalFileSize: ::ULARGE_INTEGER, 326 uliTotalBytesTransferred: ::ULARGE_INTEGER, 327 }} 328 STRUCT!{struct COPYFILE2_MESSAGE_StreamStarted { 329 dwStreamNumber: ::DWORD, 330 dwReserved: ::DWORD, 331 hSourceFile: ::HANDLE, 332 hDestinationFile: ::HANDLE, 333 uliStreamSize: ::ULARGE_INTEGER, 334 uliTotalFileSize: ::ULARGE_INTEGER, 335 }} 336 STRUCT!{struct COPYFILE2_MESSAGE_StreamFinished { 337 dwStreamNumber: ::DWORD, 338 dwReserved: ::DWORD, 339 hSourceFile: ::HANDLE, 340 hDestinationFile: ::HANDLE, 341 uliStreamSize: ::ULARGE_INTEGER, 342 uliStreamBytesTransferred: ::ULARGE_INTEGER, 343 uliTotalFileSize: ::ULARGE_INTEGER, 344 uliTotalBytesTransferred: ::ULARGE_INTEGER, 345 }} 346 STRUCT!{struct COPYFILE2_MESSAGE_PollContinue { 347 dwReserved: ::DWORD, 348 }} 349 STRUCT!{struct COPYFILE2_MESSAGE_Error { 350 CopyPhase: COPYFILE2_COPY_PHASE, 351 dwStreamNumber: ::DWORD, 352 hrFailure: ::HRESULT, 353 dwReserved: ::DWORD, 354 uliChunkNumber: ::ULARGE_INTEGER, 355 uliStreamSize: ::ULARGE_INTEGER, 356 uliStreamBytesTransferred: ::ULARGE_INTEGER, 357 uliTotalFileSize: ::ULARGE_INTEGER, 358 uliTotalBytesTransferred: ::ULARGE_INTEGER, 359 }} 360 #[cfg(target_arch="x86")] 361 STRUCT!{struct COPYFILE2_MESSAGE { 362 Type: COPYFILE2_MESSAGE_TYPE, 363 dwPadding: ::DWORD, 364 Info: [u64; 8], 365 }} 366 #[cfg(target_arch="x86_64")] 367 STRUCT!{struct COPYFILE2_MESSAGE { 368 Type: COPYFILE2_MESSAGE_TYPE, 369 dwPadding: ::DWORD, 370 Info: [u64; 9], 371 }} 372 UNION!{COPYFILE2_MESSAGE, Info, ChunkStarted, ChunkStarted_mut, COPYFILE2_MESSAGE_ChunkStarted} 373 UNION!{COPYFILE2_MESSAGE, Info, ChunkFinished, ChunkFinished_mut, COPYFILE2_MESSAGE_ChunkFinished} 374 UNION!{COPYFILE2_MESSAGE, Info, StreamStarted, StreamStarted_mut, COPYFILE2_MESSAGE_StreamStarted} 375 UNION!{COPYFILE2_MESSAGE, Info, StreamFinished, StreamFinished_mut, 376 COPYFILE2_MESSAGE_StreamFinished} 377 UNION!{COPYFILE2_MESSAGE, Info, PollContinue, PollContinue_mut, COPYFILE2_MESSAGE_PollContinue} 378 UNION!{COPYFILE2_MESSAGE, Info, Error, Error_mut, COPYFILE2_MESSAGE_Error} 379 pub type PCOPYFILE2_PROGRESS_ROUTINE = Option<unsafe extern "system" fn( 380 pMessage: *const COPYFILE2_MESSAGE, pvCallbackContext: ::PVOID, 381 ) -> COPYFILE2_MESSAGE_ACTION>; 382 STRUCT!{nodebug struct COPYFILE2_EXTENDED_PARAMETERS { 383 dwSize: ::DWORD, 384 dwCopyFlags: ::DWORD, 385 pfCancel: *mut ::BOOL, 386 pProgressRoutine: PCOPYFILE2_PROGRESS_ROUTINE, 387 pvCallbackContext: ::PVOID, 388 }} 389 //5377 390 pub const MOVEFILE_REPLACE_EXISTING: ::DWORD = 0x00000001; 391 pub const MOVEFILE_COPY_ALLOWED: ::DWORD = 0x00000002; 392 pub const MOVEFILE_DELAY_UNTIL_REBOOT: ::DWORD = 0x00000004; 393 pub const MOVEFILE_WRITE_THROUGH: ::DWORD = 0x00000008; 394 pub const MOVEFILE_CREATE_HARDLINK: ::DWORD = 0x00000010; 395 pub const MOVEFILE_FAIL_IF_NOT_TRACKABLE: ::DWORD = 0x00000020; 396 //7176 397 pub const HW_PROFILE_GUIDLEN: usize = 39; 398 //pub const MAX_PROFILE_LEN: usize = 80; 399 pub const DOCKINFO_UNDOCKED: ::DWORD = 0x1; 400 pub const DOCKINFO_DOCKED: ::DWORD = 0x2; 401 pub const DOCKINFO_USER_SUPPLIED: ::DWORD = 0x4; 402 pub const DOCKINFO_USER_UNDOCKED: ::DWORD = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED; 403 pub const DOCKINFO_USER_DOCKED: ::DWORD = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; 404 STRUCT!{nodebug struct HW_PROFILE_INFOA { 405 dwDockInfo: ::DWORD, 406 szHwProfileGuid: [::CHAR; HW_PROFILE_GUIDLEN], 407 szHwProfileName: [::CHAR; ::MAX_PROFILE_LEN], 408 }} 409 pub type LPHW_PROFILE_INFOA = *mut HW_PROFILE_INFOA; 410 STRUCT!{nodebug struct HW_PROFILE_INFOW { 411 dwDockInfo: ::DWORD, 412 szHwProfileGuid: [::WCHAR; HW_PROFILE_GUIDLEN], 413 szHwProfileName: [::WCHAR; ::MAX_PROFILE_LEN], 414 }} 415 pub type LPHW_PROFILE_INFOW = *mut HW_PROFILE_INFOW; 416 //7574 417 STRUCT!{struct ACTCTXA { 418 cbSize: ::ULONG, 419 dwFlags: ::DWORD, 420 lpSource: ::LPCSTR, 421 wProcessorArchitecture: ::USHORT, 422 wLangId: ::LANGID, 423 lpAssemblyDirectory: ::LPCSTR, 424 lpResourceName: ::LPCSTR, 425 lpApplicationName: ::LPCSTR, 426 hModule: ::HMODULE, 427 }} 428 pub type PACTCTXA = *mut ACTCTXA; 429 STRUCT!{struct ACTCTXW { 430 cbSize: ::ULONG, 431 dwFlags: ::DWORD, 432 lpSource: ::LPCWSTR, 433 wProcessorArchitecture: ::USHORT, 434 wLangId: ::LANGID, 435 lpAssemblyDirectory: ::LPCWSTR, 436 lpResourceName: ::LPCWSTR, 437 lpApplicationName: ::LPCWSTR, 438 hModule: ::HMODULE, 439 }} 440 pub type PACTCTXW = *mut ACTCTXW; 441 pub type PCACTCTXA = *const ACTCTXA; 442 pub type PCACTCTXW = *const ACTCTXW; 443 // 444 pub type PUMS_CONTEXT = *mut ::c_void; 445 pub type PUMS_COMPLETION_LIST = *mut ::c_void; 446 pub type UMS_THREAD_INFO_CLASS = ::RTL_UMS_THREAD_INFO_CLASS; 447 pub type PUMS_THREAD_INFO_CLASS = *mut UMS_THREAD_INFO_CLASS; 448 pub type PUMS_SCHEDULER_ENTRY_POINT = ::PRTL_UMS_SCHEDULER_ENTRY_POINT; 449 STRUCT!{nodebug struct UMS_SCHEDULER_STARTUP_INFO { 450 UmsVersion: ::ULONG, 451 CompletionList: PUMS_COMPLETION_LIST, 452 SchedulerProc: PUMS_SCHEDULER_ENTRY_POINT, 453 SchedulerParam: ::PVOID, 454 }} 455 pub type PUMS_SCHEDULER_STARTUP_INFO = *mut UMS_SCHEDULER_STARTUP_INFO; 456 STRUCT!{struct UMS_SYSTEM_THREAD_INFORMATION { 457 UmsVersion: ::ULONG, 458 BitFields: ::ULONG, 459 }} 460 BITFIELD!(UMS_SYSTEM_THREAD_INFORMATION BitFields: ::ULONG [ 461 IsUmsSchedulerThread set_IsUmsSchedulerThread[0..1], 462 IsUmsWorkerThread set_IsUmsWorkerThread[1..2], 463 ]); 464 UNION!( 465 UMS_SYSTEM_THREAD_INFORMATION, BitFields, ThreadUmsFlags, ThreadUmsFlags_mut, 466 ::ULONG 467 ); 468 pub type PUMS_SYSTEM_THREAD_INFORMATION = *mut UMS_SYSTEM_THREAD_INFORMATION; 469 STRUCT!{struct ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA { 470 lpInformation: ::PVOID, 471 lpSectionBase: ::PVOID, 472 ulSectionLength: ::ULONG, 473 lpSectionGlobalDataBase: ::PVOID, 474 ulSectionGlobalDataLength: ::ULONG, 475 }} 476 pub type PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = 477 *mut ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA; 478 pub type PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = 479 *const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA; 480 STRUCT!{struct ACTCTX_SECTION_KEYED_DATA { 481 cbSize: ::ULONG, 482 ulDataFormatVersion: ::ULONG, 483 lpData: ::PVOID, 484 ulLength: ::ULONG, 485 lpSectionGlobalData: ::PVOID, 486 ulSectionGlobalDataLength: ::ULONG, 487 lpSectionBase: ::PVOID, 488 ulSectionTotalLength: ::ULONG, 489 hActCtx: ::HANDLE, 490 ulAssemblyRosterIndex: ::ULONG, 491 ulFlags: ::ULONG, 492 AssemblyMetadata: ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, 493 }} 494 pub type PACTCTX_SECTION_KEYED_DATA = *mut ACTCTX_SECTION_KEYED_DATA; 495 pub type PCACTCTX_SECTION_KEYED_DATA = *const ACTCTX_SECTION_KEYED_DATA; 496 ENUM!{enum STREAM_INFO_LEVELS { 497 FindStreamInfoStandard, 498 FindStreamInfoMaxInfoLevel, 499 }} 500 ENUM!{enum PROCESS_INFORMATION_CLASS { 501 ProcessMemoryPriority, 502 ProcessInformationClassMax, 503 }} 504 ENUM!{enum DEP_SYSTEM_POLICY_TYPE { 505 DEPPolicyAlwaysOff = 0, 506 DEPPolicyAlwaysOn, 507 DEPPolicyOptIn, 508 DEPPolicyOptOut, 509 DEPTotalPolicyCount, 510 }} 511 ENUM!{enum PIPE_ATTRIBUTE_TYPE { 512 PipeAttribute, 513 PipeConnectionAttribute, 514 PipeHandleAttribute, 515 }} 516 pub type APPLICATION_RECOVERY_CALLBACK = Option<unsafe extern "system" fn( 517 pvParameter: ::PVOID 518 ) -> ::DWORD>; 519 STRUCT!{struct SYSTEM_POWER_STATUS { 520 ACLineStatus: ::BYTE, 521 BatteryFlag: ::BYTE, 522 BatteryLifePercent: ::BYTE, 523 Reserved1: ::BYTE, 524 BatteryLifeTime: ::DWORD, 525 BatteryFullLifeTime: ::DWORD, 526 }} 527 pub type LPSYSTEM_POWER_STATUS = *mut SYSTEM_POWER_STATUS; 528 pub const OFS_MAXPATHNAME: usize = 128; 529 STRUCT!{nodebug struct OFSTRUCT { 530 cBytes: ::BYTE, 531 fFixedDisk: ::BYTE, 532 nErrCode: ::WORD, 533 Reserved1: ::WORD, 534 Reserved2: ::WORD, 535 szPathName: [::CHAR; OFS_MAXPATHNAME], 536 }} 537 pub type POFSTRUCT = *mut OFSTRUCT; 538 pub type LPOFSTRUCT = *mut OFSTRUCT; 539 ENUM!{enum FILE_ID_TYPE { 540 FileIdType, 541 ObjectIdType, 542 ExtendedFileIdType, 543 MaximumFileIdType, 544 }} 545 STRUCT!{struct FILE_ID_DESCRIPTOR { 546 dwSize: ::DWORD, 547 Type: FILE_ID_TYPE, 548 ObjectId: ::GUID, 549 }} 550 UNION!(FILE_ID_DESCRIPTOR, ObjectId, FileId, FileId_mut, ::LARGE_INTEGER); 551 UNION!(FILE_ID_DESCRIPTOR, ObjectId, ExtendedFileId, ExtendedFileId_mut, ::FILE_ID_128); 552 pub type LPFILE_ID_DESCRIPTOR = *mut FILE_ID_DESCRIPTOR; 553