blob: 59e3988a17f7a1ad5b8e5385e9c3830301cea750 [file] [log] [blame] [edit]
// Copyright © 2015, Peter Atashian
// Licensed under the MIT License <LICENSE.md>
//! This module defines the 32-Bit Windows Base APIs
pub const FILE_BEGIN: ::DWORD = 0;
pub const FILE_CURRENT: ::DWORD = 1;
pub const FILE_END: ::DWORD = 2;
pub const WAIT_FAILED: ::DWORD = 0xFFFFFFFF;
pub const WAIT_OBJECT_0: ::DWORD = ::STATUS_WAIT_0 as ::DWORD;
pub const WAIT_ABANDONED: ::DWORD = ::STATUS_ABANDONED_WAIT_0 as ::DWORD;
pub const WAIT_ABANDONED_0: ::DWORD = ::STATUS_ABANDONED_WAIT_0 as ::DWORD;
pub const WAIT_IO_COMPLETION: ::DWORD = ::STATUS_USER_APC as ::DWORD;
pub const FILE_FLAG_WRITE_THROUGH: ::DWORD = 0x80000000;
pub const FILE_FLAG_OVERLAPPED: ::DWORD = 0x40000000;
pub const FILE_FLAG_NO_BUFFERING: ::DWORD = 0x20000000;
pub const FILE_FLAG_RANDOM_ACCESS: ::DWORD = 0x10000000;
pub const FILE_FLAG_SEQUENTIAL_SCAN: ::DWORD = 0x08000000;
pub const FILE_FLAG_DELETE_ON_CLOSE: ::DWORD = 0x04000000;
pub const FILE_FLAG_BACKUP_SEMANTICS: ::DWORD = 0x02000000;
pub const FILE_FLAG_POSIX_SEMANTICS: ::DWORD = 0x01000000;
pub const FILE_FLAG_SESSION_AWARE: ::DWORD = 0x00800000;
pub const FILE_FLAG_OPEN_REPARSE_POINT: ::DWORD = 0x00200000;
pub const FILE_FLAG_OPEN_NO_RECALL: ::DWORD = 0x00100000;
pub const FILE_FLAG_FIRST_PIPE_INSTANCE: ::DWORD = 0x00080000;
pub const FILE_FLAG_OPEN_REQUIRING_OPLOCK: ::DWORD = 0x00040000;
pub const PROGRESS_CONTINUE: ::DWORD = 0;
pub const PROGRESS_CANCEL: ::DWORD = 1;
pub const PROGRESS_STOP: ::DWORD = 2;
pub const PROGRESS_QUIET: ::DWORD = 3;
pub const CALLBACK_CHUNK_FINISHED: ::DWORD = 0x00000000;
pub const CALLBACK_STREAM_SWITCH: ::DWORD = 0x00000001;
pub const COPY_FILE_FAIL_IF_EXISTS: ::DWORD = 0x00000001;
pub const COPY_FILE_RESTARTABLE: ::DWORD = 0x00000002;
pub const COPY_FILE_OPEN_SOURCE_FOR_WRITE: ::DWORD = 0x00000004;
pub const COPY_FILE_ALLOW_DECRYPTED_DESTINATION: ::DWORD = 0x00000008;
pub const COPY_FILE_COPY_SYMLINK: ::DWORD = 0x00000800;
pub const COPY_FILE_NO_BUFFERING: ::DWORD = 0x00001000;
pub const COPY_FILE_REQUEST_SECURITY_PRIVILEGES: ::DWORD = 0x00002000;
pub const COPY_FILE_RESUME_FROM_PAUSE: ::DWORD = 0x00004000;
pub const COPY_FILE_NO_OFFLOAD: ::DWORD = 0x00040000;
pub const REPLACEFILE_WRITE_THROUGH: ::DWORD = 0x00000001;
pub const REPLACEFILE_IGNORE_MERGE_ERRORS: ::DWORD = 0x00000002;
pub const REPLACEFILE_IGNORE_ACL_ERRORS: ::DWORD = 0x00000004;
pub const PIPE_ACCESS_INBOUND: ::DWORD = 0x00000001;
pub const PIPE_ACCESS_OUTBOUND: ::DWORD = 0x00000002;
pub const PIPE_ACCESS_DUPLEX: ::DWORD = 0x00000003;
pub const PIPE_CLIENT_END: ::DWORD = 0x00000000;
pub const PIPE_SERVER_END: ::DWORD = 0x00000001;
pub const PIPE_WAIT: ::DWORD = 0x00000000;
pub const PIPE_NOWAIT: ::DWORD = 0x00000001;
pub const PIPE_READMODE_BYTE: ::DWORD = 0x00000000;
pub const PIPE_READMODE_MESSAGE: ::DWORD = 0x00000002;
pub const PIPE_TYPE_BYTE: ::DWORD = 0x00000000;
pub const PIPE_TYPE_MESSAGE: ::DWORD = 0x00000004;
pub const PIPE_ACCEPT_REMOTE_CLIENTS: ::DWORD = 0x00000000;
pub const PIPE_REJECT_REMOTE_CLIENTS: ::DWORD = 0x00000008;
pub const PIPE_UNLIMITED_INSTANCES: ::DWORD = 255;
//270
pub const SECURITY_CONTEXT_TRACKING: ::DWORD = 0x00040000;
pub const SECURITY_EFFECTIVE_ONLY: ::DWORD = 0x00080000;
pub const SECURITY_SQOS_PRESENT: ::DWORD = 0x00100000;
pub const SECURITY_VALID_SQOS_FLAGS: ::DWORD = 0x001F0000;
//282
pub type PFIBER_START_ROUTINE = Option<unsafe extern "system" fn(lpFiberParameter: ::LPVOID)>;
pub type LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE;
pub type PFIBER_CALLOUT_ROUTINE = Option<unsafe extern "system" fn(
lpParameter: ::LPVOID,
) -> ::LPVOID>;
//299
pub type LPLDT_ENTRY = ::LPVOID; // TODO - fix this for 32-bit
//405
STRUCT!{struct COMMPROP {
wPacketLength: ::WORD,
wPacketVersion: ::WORD,
dwServiceMask: ::DWORD,
dwReserved1: ::DWORD,
dwMaxTxQueue: ::DWORD,
dwMaxRxQueue: ::DWORD,
dwMaxBaud: ::DWORD,
dwProvSubType: ::DWORD,
dwProvCapabilities: ::DWORD,
dwSettableParams: ::DWORD,
dwSettableBaud: ::DWORD,
wSettableData: ::WORD,
wSettableStopParity: ::WORD,
dwCurrentTxQueue: ::DWORD,
dwCurrentRxQueue: ::DWORD,
dwProvSpec1: ::DWORD,
dwProvSpec2: ::DWORD,
wcProvChar: [::WCHAR; 1],
}}
pub type LPCOMMPROP = *mut COMMPROP;
//432
STRUCT!{struct COMSTAT {
BitFields: ::DWORD,
cbInQue: ::DWORD,
cbOutQue : ::DWORD,
}}
BITFIELD!(COMSTAT BitFields: ::DWORD [
fCtsHold set_fCtsHold[0..1],
fDsrHold set_fDsrHold[1..2],
fRlsdHold set_fRlsdHold[2..3],
fXoffHold set_fXoffHold[3..4],
fXoffSent set_fXoffSent[4..5],
fEof set_fEof[5..6],
fTxim set_fTxim[6..7],
fReserved set_fReserved[7..32],
]);
pub type LPCOMSTAT = *mut COMSTAT;
//460
STRUCT!{struct DCB {
DCBlength: ::DWORD,
BaudRate: ::DWORD,
BitFields: ::DWORD,
wReserved: ::WORD,
XonLim: ::WORD,
XoffLim: ::WORD,
ByteSize: ::BYTE,
Parity: ::BYTE,
StopBits: ::BYTE,
XonChar: ::c_char,
XoffChar: ::c_char,
ErrorChar: ::c_char,
EofChar: ::c_char,
EvtChar: ::c_char,
wReserved1: ::WORD,
}}
BITFIELD!(DCB BitFields: ::DWORD [
fBinary set_fBinary[0..1],
fParity set_fParity[1..2],
fOutxCtsFlow set_fOutxCtsFlow[2..3],
fOutxDsrFlow set_fOutxDsrFlow[3..4],
fDtrControl set_fDtrControl[4..6],
fDsrSensitivity set_fDsrSensitivity[6..7],
fTXContinueOnXoff set_fTXContinueOnXoff[7..8],
fOutX set_fOutX[8..9],
fInX set_fInX[9..10],
fErrorChar set_fErrorChar[10..11],
fNull set_fNull[11..12],
fRtsControl set_fRtsControl[12..14],
fAbortOnError set_fAbortOnError[14..15],
fDummy2 set_fDummy2[15..32],
]);
pub type LPDCB = *mut DCB;
STRUCT!{struct COMMTIMEOUTS {
ReadIntervalTimeout: ::DWORD,
ReadTotalTimeoutMultiplier: ::DWORD,
ReadTotalTimeoutConstant: ::DWORD,
WriteTotalTimeoutMultiplier: ::DWORD,
WriteTotalTimeoutConstant: ::DWORD,
}}
pub type LPCOMMTIMEOUTS = *mut COMMTIMEOUTS;
STRUCT!{struct COMMCONFIG {
dwSize: ::DWORD,
wVersion: ::WORD,
wReserved: ::WORD,
dcb: DCB,
dwProviderSubType: ::DWORD,
dwProviderOffset: ::DWORD,
dwProviderSize: ::DWORD,
wcProviderData: [::WCHAR; 1],
}}
pub type LPCOMMCONFIG = *mut COMMCONFIG;
//547
STRUCT!{struct MEMORYSTATUS {
dwLength: ::DWORD,
dwMemoryLoad: ::DWORD,
dwTotalPhys: ::SIZE_T,
dwAvailPhys: ::SIZE_T,
dwTotalPageFile: ::SIZE_T,
dwAvailPageFile: ::SIZE_T,
dwTotalVirtual: ::SIZE_T,
dwAvailVirtual: ::SIZE_T,
}}
pub type LPMEMORYSTATUS = *mut MEMORYSTATUS;
//568
pub const DEBUG_PROCESS: ::DWORD = 0x00000001;
pub const DEBUG_ONLY_THIS_PROCESS: ::DWORD = 0x00000002;
pub const CREATE_SUSPENDED: ::DWORD = 0x00000004;
pub const DETACHED_PROCESS: ::DWORD = 0x00000008;
pub const CREATE_NEW_CONSOLE: ::DWORD = 0x00000010;
pub const NORMAL_PRIORITY_CLASS: ::DWORD = 0x00000020;
pub const IDLE_PRIORITY_CLASS: ::DWORD = 0x00000040;
pub const HIGH_PRIORITY_CLASS: ::DWORD = 0x00000080;
pub const REALTIME_PRIORITY_CLASS: ::DWORD = 0x00000100;
pub const CREATE_NEW_PROCESS_GROUP: ::DWORD = 0x00000200;
pub const CREATE_UNICODE_ENVIRONMENT: ::DWORD = 0x00000400;
pub const CREATE_SEPARATE_WOW_VDM: ::DWORD = 0x00000800;
pub const CREATE_SHARED_WOW_VDM: ::DWORD = 0x00001000;
pub const CREATE_FORCEDOS: ::DWORD = 0x00002000;
pub const BELOW_NORMAL_PRIORITY_CLASS: ::DWORD = 0x00004000;
pub const ABOVE_NORMAL_PRIORITY_CLASS: ::DWORD = 0x00008000;
pub const INHERIT_PARENT_AFFINITY: ::DWORD = 0x00010000;
pub const INHERIT_CALLER_PRIORITY: ::DWORD = 0x00020000;
pub const CREATE_PROTECTED_PROCESS: ::DWORD = 0x00040000;
pub const EXTENDED_STARTUPINFO_PRESENT: ::DWORD = 0x00080000;
pub const PROCESS_MODE_BACKGROUND_BEGIN: ::DWORD = 0x00100000;
pub const PROCESS_MODE_BACKGROUND_END: ::DWORD = 0x00200000;
pub const CREATE_BREAKAWAY_FROM_JOB: ::DWORD = 0x01000000;
pub const CREATE_PRESERVE_CODE_AUTHZ_LEVEL: ::DWORD = 0x02000000;
pub const CREATE_DEFAULT_ERROR_MODE: ::DWORD = 0x04000000;
pub const CREATE_NO_WINDOW: ::DWORD = 0x08000000;
pub const PROFILE_USER: ::DWORD = 0x10000000;
pub const PROFILE_KERNEL: ::DWORD = 0x20000000;
pub const PROFILE_SERVER: ::DWORD = 0x40000000;
pub const CREATE_IGNORE_SYSTEM_DEFAULT: ::DWORD = 0x80000000;
//618
pub const THREAD_PRIORITY_LOWEST: ::DWORD = ::THREAD_BASE_PRIORITY_MIN;
pub const THREAD_PRIORITY_BELOW_NORMAL: ::DWORD = THREAD_PRIORITY_LOWEST + 1;
pub const THREAD_PRIORITY_NORMAL: ::DWORD = 0;
pub const THREAD_PRIORITY_HIGHEST: ::DWORD = ::THREAD_BASE_PRIORITY_MAX;
pub const THREAD_PRIORITY_ABOVE_NORMAL: ::DWORD = THREAD_PRIORITY_HIGHEST - 1;
pub const THREAD_PRIORITY_ERROR_RETURN: ::DWORD = ::MAXLONG as ::DWORD;
pub const THREAD_PRIORITY_TIME_CRITICAL: ::DWORD = ::THREAD_BASE_PRIORITY_LOWRT;
pub const THREAD_PRIORITY_IDLE: ::DWORD = ::THREAD_BASE_PRIORITY_IDLE;
pub const THREAD_MODE_BACKGROUND_BEGIN: ::DWORD = 0x00010000;
pub const THREAD_MODE_BACKGROUND_END: ::DWORD = 0x00020000;
//666
pub const DRIVE_UNKNOWN: ::DWORD = 0;
pub const DRIVE_NO_ROOT_DIR: ::DWORD = 1;
pub const DRIVE_REMOVABLE: ::DWORD = 2;
pub const DRIVE_FIXED: ::DWORD = 3;
pub const DRIVE_REMOTE: ::DWORD = 4;
pub const DRIVE_CDROM: ::DWORD = 5;
pub const DRIVE_RAMDISK: ::DWORD = 6;
pub const FILE_TYPE_UNKNOWN: ::DWORD = 0x0000;
pub const FILE_TYPE_DISK: ::DWORD = 0x0001;
pub const FILE_TYPE_CHAR: ::DWORD = 0x0002;
pub const FILE_TYPE_PIPE: ::DWORD = 0x0003;
pub const FILE_TYPE_REMOTE: ::DWORD = 0x8000;
pub const STD_INPUT_HANDLE: ::DWORD = 0xFFFFFFF6;
pub const STD_OUTPUT_HANDLE: ::DWORD = 0xFFFFFFF5;
pub const STD_ERROR_HANDLE: ::DWORD = 0xFFFFFFF4;
pub const NOPARITY: ::DWORD = 0;
pub const ODDPARITY: ::DWORD = 1;
pub const EVENPARITY: ::DWORD = 2;
pub const MARKPARITY: ::DWORD = 3;
pub const SPACEPARITY: ::DWORD = 4;
pub const ONESTOPBIT: ::DWORD = 0;
pub const ONE5STOPBITS: ::DWORD = 1;
pub const TWOSTOPBITS: ::DWORD = 2;
pub const IGNORE: ::DWORD = 0;
pub const INFINITE: ::DWORD = 0xFFFFFFFF;
//1729
pub const SEM_FAILCRITICALERRORS: ::UINT = 0x0001;
pub const SEM_NOGPFAULTERRORBOX: ::UINT = 0x0002;
pub const SEM_NOALIGNMENTFAULTEXCEPT: ::UINT = 0x0004;
pub const SEM_NOOPENFILEERRORBOX: ::UINT = 0x8000;
//2320
pub const FORMAT_MESSAGE_IGNORE_INSERTS: ::DWORD = 0x00000200;
pub const FORMAT_MESSAGE_FROM_STRING: ::DWORD = 0x00000400;
pub const FORMAT_MESSAGE_FROM_HMODULE: ::DWORD = 0x00000800;
pub const FORMAT_MESSAGE_FROM_SYSTEM: ::DWORD = 0x00001000;
pub const FORMAT_MESSAGE_ARGUMENT_ARRAY: ::DWORD = 0x00002000;
pub const FORMAT_MESSAGE_MAX_WIDTH_MASK: ::DWORD = 0x000000FF;
pub const FORMAT_MESSAGE_ALLOCATE_BUFFER: ::DWORD = 0x00000100;
//2873
pub const STARTF_USESHOWWINDOW: ::DWORD = 0x00000001;
pub const STARTF_USESIZE: ::DWORD = 0x00000002;
pub const STARTF_USEPOSITION: ::DWORD = 0x00000004;
pub const STARTF_USECOUNTCHARS: ::DWORD = 0x00000008;
pub const STARTF_USEFILLATTRIBUTE: ::DWORD = 0x00000010;
pub const STARTF_RUNFULLSCREEN: ::DWORD = 0x00000020;
pub const STARTF_FORCEONFEEDBACK: ::DWORD = 0x00000040;
pub const STARTF_FORCEOFFFEEDBACK: ::DWORD = 0x00000080;
pub const STARTF_USESTDHANDLES: ::DWORD = 0x00000100;
pub const STARTF_USEHOTKEY: ::DWORD = 0x00000200;
pub const STARTF_TITLEISLINKNAME: ::DWORD = 0x00000800;
pub const STARTF_TITLEISAPPID: ::DWORD = 0x00001000;
pub const STARTF_PREVENTPINNING: ::DWORD = 0x00002000;
pub const STARTF_UNTRUSTEDSOURCE: ::DWORD = 0x00008000;
//5002
pub type LPPROGRESS_ROUTINE = Option<unsafe extern "system" fn(
TotalFileSize: ::LARGE_INTEGER, TotalBytesTransferred: ::LARGE_INTEGER,
StreamSize: ::LARGE_INTEGER, StreamBytesTransferred: ::LARGE_INTEGER, dwStreamNumber: ::DWORD,
dwCallbackReason: ::DWORD, hSourceFile: ::HANDLE, hDestinationFile: ::HANDLE, lpData: ::LPVOID,
) -> ::DWORD>;
//5095
ENUM!{enum COPYFILE2_MESSAGE_TYPE {
COPYFILE2_CALLBACK_NONE = 0,
COPYFILE2_CALLBACK_CHUNK_STARTED,
COPYFILE2_CALLBACK_CHUNK_FINISHED,
COPYFILE2_CALLBACK_STREAM_STARTED,
COPYFILE2_CALLBACK_STREAM_FINISHED,
COPYFILE2_CALLBACK_POLL_CONTINUE,
COPYFILE2_CALLBACK_ERROR,
COPYFILE2_CALLBACK_MAX,
}}
ENUM!{enum COPYFILE2_MESSAGE_ACTION {
COPYFILE2_PROGRESS_CONTINUE = 0,
COPYFILE2_PROGRESS_CANCEL,
COPYFILE2_PROGRESS_STOP,
COPYFILE2_PROGRESS_QUIET,
COPYFILE2_PROGRESS_PAUSE,
}}
ENUM!{enum COPYFILE2_COPY_PHASE {
COPYFILE2_PHASE_NONE = 0,
COPYFILE2_PHASE_PREPARE_SOURCE,
COPYFILE2_PHASE_PREPARE_DEST,
COPYFILE2_PHASE_READ_SOURCE,
COPYFILE2_PHASE_WRITE_DESTINATION,
COPYFILE2_PHASE_SERVER_COPY,
COPYFILE2_PHASE_NAMEGRAFT_COPY,
COPYFILE2_PHASE_MAX,
}}
//5129
STRUCT!{struct COPYFILE2_MESSAGE_ChunkStarted {
dwStreamNumber: ::DWORD,
dwReserved: ::DWORD,
hSourceFile: ::HANDLE,
hDestinationFile: ::HANDLE,
uliChunkNumber: ::ULARGE_INTEGER,
uliChunkSize: ::ULARGE_INTEGER,
uliStreamSize: ::ULARGE_INTEGER,
uliTotalFileSize: ::ULARGE_INTEGER,
}}
STRUCT!{struct COPYFILE2_MESSAGE_ChunkFinished {
dwStreamNumber: ::DWORD,
dwFlags: ::DWORD,
hSourceFile: ::HANDLE,
hDestinationFile: ::HANDLE,
uliChunkNumber: ::ULARGE_INTEGER,
uliChunkSize: ::ULARGE_INTEGER,
uliStreamSize: ::ULARGE_INTEGER,
uliStreamBytesTransferred: ::ULARGE_INTEGER,
uliTotalFileSize: ::ULARGE_INTEGER,
uliTotalBytesTransferred: ::ULARGE_INTEGER,
}}
STRUCT!{struct COPYFILE2_MESSAGE_StreamStarted {
dwStreamNumber: ::DWORD,
dwReserved: ::DWORD,
hSourceFile: ::HANDLE,
hDestinationFile: ::HANDLE,
uliStreamSize: ::ULARGE_INTEGER,
uliTotalFileSize: ::ULARGE_INTEGER,
}}
STRUCT!{struct COPYFILE2_MESSAGE_StreamFinished {
dwStreamNumber: ::DWORD,
dwReserved: ::DWORD,
hSourceFile: ::HANDLE,
hDestinationFile: ::HANDLE,
uliStreamSize: ::ULARGE_INTEGER,
uliStreamBytesTransferred: ::ULARGE_INTEGER,
uliTotalFileSize: ::ULARGE_INTEGER,
uliTotalBytesTransferred: ::ULARGE_INTEGER,
}}
STRUCT!{struct COPYFILE2_MESSAGE_PollContinue {
dwReserved: ::DWORD,
}}
STRUCT!{struct COPYFILE2_MESSAGE_Error {
CopyPhase: COPYFILE2_COPY_PHASE,
dwStreamNumber: ::DWORD,
hrFailure: ::HRESULT,
dwReserved: ::DWORD,
uliChunkNumber: ::ULARGE_INTEGER,
uliStreamSize: ::ULARGE_INTEGER,
uliStreamBytesTransferred: ::ULARGE_INTEGER,
uliTotalFileSize: ::ULARGE_INTEGER,
uliTotalBytesTransferred: ::ULARGE_INTEGER,
}}
#[cfg(target_arch="x86")]
STRUCT!{struct COPYFILE2_MESSAGE {
Type: COPYFILE2_MESSAGE_TYPE,
dwPadding: ::DWORD,
Info: [u64; 8],
}}
#[cfg(target_arch="x86_64")]
STRUCT!{struct COPYFILE2_MESSAGE {
Type: COPYFILE2_MESSAGE_TYPE,
dwPadding: ::DWORD,
Info: [u64; 9],
}}
UNION!{COPYFILE2_MESSAGE, Info, ChunkStarted, ChunkStarted_mut, COPYFILE2_MESSAGE_ChunkStarted}
UNION!{COPYFILE2_MESSAGE, Info, ChunkFinished, ChunkFinished_mut, COPYFILE2_MESSAGE_ChunkFinished}
UNION!{COPYFILE2_MESSAGE, Info, StreamStarted, StreamStarted_mut, COPYFILE2_MESSAGE_StreamStarted}
UNION!{COPYFILE2_MESSAGE, Info, StreamFinished, StreamFinished_mut,
COPYFILE2_MESSAGE_StreamFinished}
UNION!{COPYFILE2_MESSAGE, Info, PollContinue, PollContinue_mut, COPYFILE2_MESSAGE_PollContinue}
UNION!{COPYFILE2_MESSAGE, Info, Error, Error_mut, COPYFILE2_MESSAGE_Error}
pub type PCOPYFILE2_PROGRESS_ROUTINE = Option<unsafe extern "system" fn(
pMessage: *const COPYFILE2_MESSAGE, pvCallbackContext: ::PVOID,
) -> COPYFILE2_MESSAGE_ACTION>;
STRUCT!{nodebug struct COPYFILE2_EXTENDED_PARAMETERS {
dwSize: ::DWORD,
dwCopyFlags: ::DWORD,
pfCancel: *mut ::BOOL,
pProgressRoutine: PCOPYFILE2_PROGRESS_ROUTINE,
pvCallbackContext: ::PVOID,
}}
//5377
pub const MOVEFILE_REPLACE_EXISTING: ::DWORD = 0x00000001;
pub const MOVEFILE_COPY_ALLOWED: ::DWORD = 0x00000002;
pub const MOVEFILE_DELAY_UNTIL_REBOOT: ::DWORD = 0x00000004;
pub const MOVEFILE_WRITE_THROUGH: ::DWORD = 0x00000008;
pub const MOVEFILE_CREATE_HARDLINK: ::DWORD = 0x00000010;
pub const MOVEFILE_FAIL_IF_NOT_TRACKABLE: ::DWORD = 0x00000020;
//7176
pub const HW_PROFILE_GUIDLEN: usize = 39;
//pub const MAX_PROFILE_LEN: usize = 80;
pub const DOCKINFO_UNDOCKED: ::DWORD = 0x1;
pub const DOCKINFO_DOCKED: ::DWORD = 0x2;
pub const DOCKINFO_USER_SUPPLIED: ::DWORD = 0x4;
pub const DOCKINFO_USER_UNDOCKED: ::DWORD = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED;
pub const DOCKINFO_USER_DOCKED: ::DWORD = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED;
STRUCT!{nodebug struct HW_PROFILE_INFOA {
dwDockInfo: ::DWORD,
szHwProfileGuid: [::CHAR; HW_PROFILE_GUIDLEN],
szHwProfileName: [::CHAR; ::MAX_PROFILE_LEN],
}}
pub type LPHW_PROFILE_INFOA = *mut HW_PROFILE_INFOA;
STRUCT!{nodebug struct HW_PROFILE_INFOW {
dwDockInfo: ::DWORD,
szHwProfileGuid: [::WCHAR; HW_PROFILE_GUIDLEN],
szHwProfileName: [::WCHAR; ::MAX_PROFILE_LEN],
}}
pub type LPHW_PROFILE_INFOW = *mut HW_PROFILE_INFOW;
//7574
STRUCT!{struct ACTCTXA {
cbSize: ::ULONG,
dwFlags: ::DWORD,
lpSource: ::LPCSTR,
wProcessorArchitecture: ::USHORT,
wLangId: ::LANGID,
lpAssemblyDirectory: ::LPCSTR,
lpResourceName: ::LPCSTR,
lpApplicationName: ::LPCSTR,
hModule: ::HMODULE,
}}
pub type PACTCTXA = *mut ACTCTXA;
STRUCT!{struct ACTCTXW {
cbSize: ::ULONG,
dwFlags: ::DWORD,
lpSource: ::LPCWSTR,
wProcessorArchitecture: ::USHORT,
wLangId: ::LANGID,
lpAssemblyDirectory: ::LPCWSTR,
lpResourceName: ::LPCWSTR,
lpApplicationName: ::LPCWSTR,
hModule: ::HMODULE,
}}
pub type PACTCTXW = *mut ACTCTXW;
pub type PCACTCTXA = *const ACTCTXA;
pub type PCACTCTXW = *const ACTCTXW;
//
pub type PUMS_CONTEXT = *mut ::c_void;
pub type PUMS_COMPLETION_LIST = *mut ::c_void;
pub type UMS_THREAD_INFO_CLASS = ::RTL_UMS_THREAD_INFO_CLASS;
pub type PUMS_THREAD_INFO_CLASS = *mut UMS_THREAD_INFO_CLASS;
pub type PUMS_SCHEDULER_ENTRY_POINT = ::PRTL_UMS_SCHEDULER_ENTRY_POINT;
STRUCT!{nodebug struct UMS_SCHEDULER_STARTUP_INFO {
UmsVersion: ::ULONG,
CompletionList: PUMS_COMPLETION_LIST,
SchedulerProc: PUMS_SCHEDULER_ENTRY_POINT,
SchedulerParam: ::PVOID,
}}
pub type PUMS_SCHEDULER_STARTUP_INFO = *mut UMS_SCHEDULER_STARTUP_INFO;
STRUCT!{struct UMS_SYSTEM_THREAD_INFORMATION {
UmsVersion: ::ULONG,
BitFields: ::ULONG,
}}
BITFIELD!(UMS_SYSTEM_THREAD_INFORMATION BitFields: ::ULONG [
IsUmsSchedulerThread set_IsUmsSchedulerThread[0..1],
IsUmsWorkerThread set_IsUmsWorkerThread[1..2],
]);
UNION!(
UMS_SYSTEM_THREAD_INFORMATION, BitFields, ThreadUmsFlags, ThreadUmsFlags_mut,
::ULONG
);
pub type PUMS_SYSTEM_THREAD_INFORMATION = *mut UMS_SYSTEM_THREAD_INFORMATION;
STRUCT!{struct ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA {
lpInformation: ::PVOID,
lpSectionBase: ::PVOID,
ulSectionLength: ::ULONG,
lpSectionGlobalDataBase: ::PVOID,
ulSectionGlobalDataLength: ::ULONG,
}}
pub type PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA =
*mut ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
pub type PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA =
*const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
STRUCT!{struct ACTCTX_SECTION_KEYED_DATA {
cbSize: ::ULONG,
ulDataFormatVersion: ::ULONG,
lpData: ::PVOID,
ulLength: ::ULONG,
lpSectionGlobalData: ::PVOID,
ulSectionGlobalDataLength: ::ULONG,
lpSectionBase: ::PVOID,
ulSectionTotalLength: ::ULONG,
hActCtx: ::HANDLE,
ulAssemblyRosterIndex: ::ULONG,
ulFlags: ::ULONG,
AssemblyMetadata: ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA,
}}
pub type PACTCTX_SECTION_KEYED_DATA = *mut ACTCTX_SECTION_KEYED_DATA;
pub type PCACTCTX_SECTION_KEYED_DATA = *const ACTCTX_SECTION_KEYED_DATA;
ENUM!{enum STREAM_INFO_LEVELS {
FindStreamInfoStandard,
FindStreamInfoMaxInfoLevel,
}}
ENUM!{enum PROCESS_INFORMATION_CLASS {
ProcessMemoryPriority,
ProcessInformationClassMax,
}}
ENUM!{enum DEP_SYSTEM_POLICY_TYPE {
DEPPolicyAlwaysOff = 0,
DEPPolicyAlwaysOn,
DEPPolicyOptIn,
DEPPolicyOptOut,
DEPTotalPolicyCount,
}}
ENUM!{enum PIPE_ATTRIBUTE_TYPE {
PipeAttribute,
PipeConnectionAttribute,
PipeHandleAttribute,
}}
pub type APPLICATION_RECOVERY_CALLBACK = Option<unsafe extern "system" fn(
pvParameter: ::PVOID
) -> ::DWORD>;
STRUCT!{struct SYSTEM_POWER_STATUS {
ACLineStatus: ::BYTE,
BatteryFlag: ::BYTE,
BatteryLifePercent: ::BYTE,
Reserved1: ::BYTE,
BatteryLifeTime: ::DWORD,
BatteryFullLifeTime: ::DWORD,
}}
pub type LPSYSTEM_POWER_STATUS = *mut SYSTEM_POWER_STATUS;
pub const OFS_MAXPATHNAME: usize = 128;
STRUCT!{nodebug struct OFSTRUCT {
cBytes: ::BYTE,
fFixedDisk: ::BYTE,
nErrCode: ::WORD,
Reserved1: ::WORD,
Reserved2: ::WORD,
szPathName: [::CHAR; OFS_MAXPATHNAME],
}}
pub type POFSTRUCT = *mut OFSTRUCT;
pub type LPOFSTRUCT = *mut OFSTRUCT;
ENUM!{enum FILE_ID_TYPE {
FileIdType,
ObjectIdType,
ExtendedFileIdType,
MaximumFileIdType,
}}
STRUCT!{struct FILE_ID_DESCRIPTOR {
dwSize: ::DWORD,
Type: FILE_ID_TYPE,
ObjectId: ::GUID,
}}
UNION!(FILE_ID_DESCRIPTOR, ObjectId, FileId, FileId_mut, ::LARGE_INTEGER);
UNION!(FILE_ID_DESCRIPTOR, ObjectId, ExtendedFileId, ExtendedFileId_mut, ::FILE_ID_128);
pub type LPFILE_ID_DESCRIPTOR = *mut FILE_ID_DESCRIPTOR;