| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| //! Public header file for Windows NT Setup and Device Installer services Dll. |
| use ctypes::c_int; |
| use shared::basetsd::{DWORD_PTR, UINT_PTR, ULONG_PTR}; |
| use shared::devpropdef::{DEVPROPKEY, DEVPROPTYPE}; |
| use shared::guiddef::{GUID, LPGUID}; |
| use shared::minwindef::{ |
| BOOL, BYTE, DWORD, FILETIME, HINSTANCE, HKEY, INT, LPARAM, LPCVOID, LPDWORD, MAX_PATH, PBOOL, |
| PBYTE, PDWORD, PINT, PUINT, UINT, USHORT, WORD, |
| }; |
| use shared::windef::{HDC, HICON, HWND, RECT}; |
| use um::commctrl::HIMAGELIST; |
| use um::prsht::{HPROPSHEETPAGE, LPPROPSHEETHEADERA, LPPROPSHEETHEADERW}; |
| use um::spapidef::SP_LOG_TOKEN; |
| use um::winnt::{ |
| ANYSIZE_ARRAY, APPLICATION_ERROR_MASK, CHAR, DWORDLONG, ERROR_SEVERITY_ERROR, HANDLE, LONG, |
| LONGLONG, LPCSTR, LPCWSTR, PCSTR, PCWSTR, PSTR, PVOID, PWSTR, WCHAR, |
| }; |
| use um::winreg::REGSAM; |
| pub const LINE_LEN: usize = 256; |
| pub const MAX_INF_STRING_LENGTH: usize = 4096; |
| pub const MAX_INF_SECTION_NAME_LENGTH: usize = 255; |
| pub const MAX_TITLE_LEN: usize = 60; |
| pub const MAX_INSTRUCTION_LEN: usize = 256; |
| pub const MAX_LABEL_LEN: usize = 30; |
| pub const MAX_SERVICE_NAME_LEN: usize = 256; |
| pub const MAX_SUBTITLE_LEN: usize = 256; |
| pub const SP_MAX_MACHINENAME_LENGTH: usize = MAX_PATH + 3; |
| pub type HINF = PVOID; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct INFCONTEXT { |
| Inf: PVOID, |
| CurrentInf: PVOID, |
| Section: UINT, |
| Line: UINT, |
| }} |
| pub type PINFCONTEXT = *mut INFCONTEXT; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INF_INFORMATION { |
| InfStyle: DWORD, |
| InfCount: DWORD, |
| VersionData: [BYTE; ANYSIZE_ARRAY], |
| }} |
| pub type PSP_INF_INFORMATION = *mut SP_INF_INFORMATION; |
| UNION!{#[cfg_attr(target_arch = "x86", repr(packed))] union SP_ALTPLATFORM_INFO_V3_u { |
| [u16; 1], |
| Reserved Reserved_mut: WORD, |
| Flags Flags_mut: WORD, |
| }} |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ALTPLATFORM_INFO_V3 { |
| cbSize: DWORD, |
| Platform: DWORD, |
| MajorVersion: DWORD, |
| MinorVersion: DWORD, |
| ProcessorArchitecture: WORD, |
| u: SP_ALTPLATFORM_INFO_V3_u, |
| FirstValidatedMajorVersion: DWORD, |
| FirstValidatedMinorVersion: DWORD, |
| ProductType: BYTE, |
| SuiteMask: WORD, |
| BuildNumber: DWORD, |
| }} |
| pub type PSP_ALTPLATFORM_INFO_V3 = *mut SP_ALTPLATFORM_INFO_V3; |
| UNION!{#[cfg_attr(target_arch = "x86", repr(packed))] union SP_ALTPLATFORM_INFO_V2_u { |
| [u16; 1], |
| Reserved Reserved_mut: WORD, |
| Flags Flags_mut: WORD, |
| }} |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ALTPLATFORM_INFO_V2 { |
| cbSize: DWORD, |
| Platform: DWORD, |
| MajorVersion: DWORD, |
| MinorVersion: DWORD, |
| ProcessorArchitecture: WORD, |
| u: SP_ALTPLATFORM_INFO_V2_u, |
| FirstValidatedMajorVersion: DWORD, |
| FirstValidatedMinorVersion: DWORD, |
| }} |
| pub type PSP_ALTPLATFORM_INFO_V2 = *mut SP_ALTPLATFORM_INFO_V2; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ALTPLATFORM_INFO_V1 { |
| cbSize: DWORD, |
| Platform: DWORD, |
| MajorVersion: DWORD, |
| MinorVersion: DWORD, |
| ProcessorArchitecture: WORD, |
| Reserved: WORD, |
| }} |
| pub type PSP_ALTPLATFORM_INFO_V1 = *mut SP_ALTPLATFORM_INFO_V1; |
| pub type SP_ALTPLATFORM_INFO = SP_ALTPLATFORM_INFO_V2; |
| pub type PSP_ALTPLATFORM_INFO = PSP_ALTPLATFORM_INFO_V2; |
| pub const SP_ALTPLATFORM_FLAGS_VERSION_RANGE: WORD = 0x0001; |
| pub const SP_ALTPLATFORM_FLAGS_SUITE_MASK: WORD = 0x0002; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ORIGINAL_FILE_INFO_A { |
| cbSize: DWORD, |
| OriginalInfName: [CHAR; MAX_PATH], |
| OriginalCatalogName: [CHAR; MAX_PATH], |
| }} |
| pub type PSP_ORIGINAL_FILE_INFO_A = *mut SP_ORIGINAL_FILE_INFO_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ORIGINAL_FILE_INFO_W { |
| cbSize: DWORD, |
| OriginalInfName: [WCHAR; MAX_PATH], |
| OriginalCatalogName: [WCHAR; MAX_PATH], |
| }} |
| pub type PSP_ORIGINAL_FILE_INFO_W = *mut SP_ORIGINAL_FILE_INFO_W; |
| pub const INF_STYLE_NONE: DWORD = 0x00000000; |
| pub const INF_STYLE_OLDNT: DWORD = 0x00000001; |
| pub const INF_STYLE_WIN4: DWORD = 0x00000002; |
| pub const INF_STYLE_CACHE_ENABLE: DWORD = 0x00000010; |
| pub const INF_STYLE_CACHE_DISABLE: DWORD = 0x00000020; |
| pub const INF_STYLE_CACHE_IGNORE: DWORD = 0x00000040; |
| pub const DIRID_ABSOLUTE: DWORD = -1i32 as u32; |
| pub const DIRID_ABSOLUTE_16BIT: DWORD = 0xffff; |
| pub const DIRID_NULL: DWORD = 0; |
| pub const DIRID_SRCPATH: DWORD = 1; |
| pub const DIRID_WINDOWS: DWORD = 10; |
| pub const DIRID_SYSTEM: DWORD = 11; |
| pub const DIRID_DRIVERS: DWORD = 12; |
| pub const DIRID_IOSUBSYS: DWORD = DIRID_DRIVERS; |
| pub const DIRID_DRIVER_STORE: DWORD = 13; |
| pub const DIRID_INF: DWORD = 17; |
| pub const DIRID_HELP: DWORD = 18; |
| pub const DIRID_FONTS: DWORD = 20; |
| pub const DIRID_VIEWERS: DWORD = 21; |
| pub const DIRID_COLOR: DWORD = 23; |
| pub const DIRID_APPS: DWORD = 24; |
| pub const DIRID_SHARED: DWORD = 25; |
| pub const DIRID_BOOT: DWORD = 30; |
| pub const DIRID_SYSTEM16: DWORD = 50; |
| pub const DIRID_SPOOL: DWORD = 51; |
| pub const DIRID_SPOOLDRIVERS: DWORD = 52; |
| pub const DIRID_USERPROFILE: DWORD = 53; |
| pub const DIRID_LOADER: DWORD = 54; |
| pub const DIRID_PRINTPROCESSOR: DWORD = 55; |
| pub const DIRID_DEFAULT: DWORD = DIRID_SYSTEM; |
| pub const DIRID_COMMON_STARTMENU: DWORD = 16406; |
| pub const DIRID_COMMON_PROGRAMS: DWORD = 16407; |
| pub const DIRID_COMMON_STARTUP: DWORD = 16408; |
| pub const DIRID_COMMON_DESKTOPDIRECTORY: DWORD = 16409; |
| pub const DIRID_COMMON_FAVORITES: DWORD = 16415; |
| pub const DIRID_COMMON_APPDATA: DWORD = 16419; |
| pub const DIRID_PROGRAM_FILES: DWORD = 16422; |
| pub const DIRID_SYSTEM_X86: DWORD = 16425; |
| pub const DIRID_PROGRAM_FILES_X86: DWORD = 16426; |
| pub const DIRID_PROGRAM_FILES_COMMON: DWORD = 16427; |
| pub const DIRID_PROGRAM_FILES_COMMONX86: DWORD = 16428; |
| pub const DIRID_COMMON_TEMPLATES: DWORD = 16429; |
| pub const DIRID_COMMON_DOCUMENTS: DWORD = 16430; |
| pub const DIRID_USER: DWORD = 0x8000; |
| FN!{stdcall PSP_FILE_CALLBACK_A( |
| Context: PVOID, |
| Notification: UINT, |
| Param1: UINT_PTR, |
| Param2: UINT_PTR, |
| ) -> UINT} |
| FN!{stdcall PSP_FILE_CALLBACK_W( |
| Context: PVOID, |
| Notification: UINT, |
| Param1: UINT_PTR, |
| Param2: UINT_PTR, |
| ) -> UINT} |
| pub const SPFILENOTIFY_STARTQUEUE: UINT = 0x00000001; |
| pub const SPFILENOTIFY_ENDQUEUE: UINT = 0x00000002; |
| pub const SPFILENOTIFY_STARTSUBQUEUE: UINT = 0x00000003; |
| pub const SPFILENOTIFY_ENDSUBQUEUE: UINT = 0x00000004; |
| pub const SPFILENOTIFY_STARTDELETE: UINT = 0x00000005; |
| pub const SPFILENOTIFY_ENDDELETE: UINT = 0x00000006; |
| pub const SPFILENOTIFY_DELETEERROR: UINT = 0x00000007; |
| pub const SPFILENOTIFY_STARTRENAME: UINT = 0x00000008; |
| pub const SPFILENOTIFY_ENDRENAME: UINT = 0x00000009; |
| pub const SPFILENOTIFY_RENAMEERROR: UINT = 0x0000000a; |
| pub const SPFILENOTIFY_STARTCOPY: UINT = 0x0000000b; |
| pub const SPFILENOTIFY_ENDCOPY: UINT = 0x0000000c; |
| pub const SPFILENOTIFY_COPYERROR: UINT = 0x0000000d; |
| pub const SPFILENOTIFY_NEEDMEDIA: UINT = 0x0000000e; |
| pub const SPFILENOTIFY_QUEUESCAN: UINT = 0x0000000f; |
| pub const SPFILENOTIFY_CABINETINFO: UINT = 0x00000010; |
| pub const SPFILENOTIFY_FILEINCABINET: UINT = 0x00000011; |
| pub const SPFILENOTIFY_NEEDNEWCABINET: UINT = 0x00000012; |
| pub const SPFILENOTIFY_FILEEXTRACTED: UINT = 0x00000013; |
| pub const SPFILENOTIFY_FILEOPDELAYED: UINT = 0x00000014; |
| pub const SPFILENOTIFY_STARTBACKUP: UINT = 0x00000015; |
| pub const SPFILENOTIFY_BACKUPERROR: UINT = 0x00000016; |
| pub const SPFILENOTIFY_ENDBACKUP: UINT = 0x00000017; |
| pub const SPFILENOTIFY_QUEUESCAN_EX: UINT = 0x00000018; |
| pub const SPFILENOTIFY_STARTREGISTRATION: UINT = 0x00000019; |
| pub const SPFILENOTIFY_ENDREGISTRATION: UINT = 0x00000020; |
| pub const SPFILENOTIFY_QUEUESCAN_SIGNERINFO: UINT = 0x00000040; |
| pub const SPFILENOTIFY_LANGMISMATCH: UINT = 0x00010000; |
| pub const SPFILENOTIFY_TARGETEXISTS: UINT = 0x00020000; |
| pub const SPFILENOTIFY_TARGETNEWER: UINT = 0x00040000; |
| pub const FILEOP_COPY: UINT = 0; |
| pub const FILEOP_RENAME: UINT = 1; |
| pub const FILEOP_DELETE: UINT = 2; |
| pub const FILEOP_BACKUP: UINT = 3; |
| pub const FILEOP_ABORT: UINT = 0; |
| pub const FILEOP_DOIT: UINT = 1; |
| pub const FILEOP_SKIP: UINT = 2; |
| pub const FILEOP_RETRY: UINT = FILEOP_DOIT; |
| pub const FILEOP_NEWPATH: UINT = 4; |
| pub const COPYFLG_WARN_IF_SKIP: UINT = 0x00000001; |
| pub const COPYFLG_NOSKIP: UINT = 0x00000002; |
| pub const COPYFLG_NOVERSIONCHECK: UINT = 0x00000004; |
| pub const COPYFLG_FORCE_FILE_IN_USE: UINT = 0x00000008; |
| pub const COPYFLG_NO_OVERWRITE: UINT = 0x00000010; |
| pub const COPYFLG_NO_VERSION_DIALOG: UINT = 0x00000020; |
| pub const COPYFLG_OVERWRITE_OLDER_ONLY: UINT = 0x00000040; |
| pub const COPYFLG_PROTECTED_WINDOWS_DRIVER_FILE: UINT = 0x00000100; |
| pub const COPYFLG_REPLACEONLY: UINT = 0x00000400; |
| pub const COPYFLG_NODECOMP: UINT = 0x00000800; |
| pub const COPYFLG_REPLACE_BOOT_FILE: UINT = 0x00001000; |
| pub const COPYFLG_NOPRUNE: UINT = 0x00002000; |
| pub const COPYFLG_IN_USE_TRY_RENAME: UINT = 0x00004000; |
| pub const DELFLG_IN_USE: UINT = 0x00000001; |
| pub const DELFLG_IN_USE1: UINT = 0x00010000; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_A { |
| Target: PCSTR, |
| Source: PCSTR, |
| Win32Error: UINT, |
| Flags: DWORD, |
| }} |
| pub type PFILEPATHS_A = *mut FILEPATHS_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_W { |
| Target: PCWSTR, |
| Source: PCWSTR, |
| Win32Error: UINT, |
| Flags: DWORD, |
| }} |
| pub type PFILEPATHS_W = *mut FILEPATHS_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_SIGNERINFO_A { |
| Target: PCSTR, |
| Source: PCSTR, |
| Win32Error: UINT, |
| Flags: DWORD, |
| DigitalSigner: PCSTR, |
| Version: PCSTR, |
| CatalogFile: PCSTR, |
| }} |
| pub type PFILEPATHS_SIGNERINFO_A = *mut FILEPATHS_SIGNERINFO_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_SIGNERINFO_W { |
| Target: PCWSTR, |
| Source: PCWSTR, |
| Win32Error: UINT, |
| Flags: DWORD, |
| DigitalSigner: PCWSTR, |
| Version: PCWSTR, |
| CatalogFile: PCWSTR, |
| }} |
| pub type PFILEPATHS_SIGNERINFO_W = *mut FILEPATHS_SIGNERINFO_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SOURCE_MEDIA_A { |
| Reserved: PCSTR, |
| Tagfile: PCSTR, |
| Description: PCSTR, |
| SourcePath: PCSTR, |
| SourceFile: PCSTR, |
| Flags: DWORD, |
| }} |
| pub type PSOURCE_MEDIA_A = *mut SOURCE_MEDIA_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SOURCE_MEDIA_W { |
| Reserved: PCWSTR, |
| Tagfile: PCWSTR, |
| Description: PCWSTR, |
| SourcePath: PCWSTR, |
| SourceFile: PCWSTR, |
| Flags: DWORD, |
| }} |
| pub type PSOURCE_MEDIA_W = *mut SOURCE_MEDIA_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CABINET_INFO_A { |
| CabinetPath: PCSTR, |
| CabinetFile: PCSTR, |
| DiskName: PCSTR, |
| SetId: USHORT, |
| CabinetNumber: USHORT, |
| }} |
| pub type PCABINET_INFO_A = *mut CABINET_INFO_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CABINET_INFO_W { |
| CabinetPath: PCWSTR, |
| CabinetFile: PCWSTR, |
| DiskName: PCWSTR, |
| SetId: USHORT, |
| CabinetNumber: USHORT, |
| }} |
| pub type PCABINET_INFO_W = *mut CABINET_INFO_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILE_IN_CABINET_INFO_A { |
| NameInCabinet: PCSTR, |
| FileSize: DWORD, |
| Win32Error: DWORD, |
| DosDate: WORD, |
| DosTime: WORD, |
| DosAttribs: WORD, |
| FullTargetName: [CHAR; MAX_PATH], |
| }} |
| pub type PFILE_IN_CABINET_INFO_A = *mut FILE_IN_CABINET_INFO_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILE_IN_CABINET_INFO_W { |
| NameInCabinet: PCWSTR, |
| FileSize: DWORD, |
| Win32Error: DWORD, |
| DosDate: WORD, |
| DosTime: WORD, |
| DosAttribs: WORD, |
| FullTargetName: [WCHAR; MAX_PATH], |
| }} |
| pub type PFILE_IN_CABINET_INFO_W = *mut FILE_IN_CABINET_INFO_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_REGISTER_CONTROL_STATUSA { |
| cbSize: DWORD, |
| FileName: PCSTR, |
| Win32Error: DWORD, |
| FailureCode: DWORD, |
| }} |
| pub type PSP_REGISTER_CONTROL_STATUSA = *mut SP_REGISTER_CONTROL_STATUSA; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_REGISTER_CONTROL_STATUSW { |
| cbSize: DWORD, |
| FileName: PCWSTR, |
| Win32Error: DWORD, |
| FailureCode: DWORD, |
| }} |
| pub type PSP_REGISTER_CONTROL_STATUSW = *mut SP_REGISTER_CONTROL_STATUSW; |
| pub const SPREG_SUCCESS: DWORD = 0x00000000; |
| pub const SPREG_LOADLIBRARY: DWORD = 0x00000001; |
| pub const SPREG_GETPROCADDR: DWORD = 0x00000002; |
| pub const SPREG_REGSVR: DWORD = 0x00000003; |
| pub const SPREG_DLLINSTALL: DWORD = 0x00000004; |
| pub const SPREG_TIMEOUT: DWORD = 0x00000005; |
| pub const SPREG_UNKNOWN: DWORD = 0xFFFFFFFF; |
| pub type HSPFILEQ = PVOID; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_FILE_COPY_PARAMS_A { |
| cbSize: DWORD, |
| QueueHandle: HSPFILEQ, |
| SourceRootPath: PCSTR, |
| SourcePath: PCSTR, |
| SourceFilename: PCSTR, |
| SourceDescription: PCSTR, |
| SourceTagfile: PCSTR, |
| TargetDirectory: PCSTR, |
| TargetFilename: PCSTR, |
| CopyStyle: DWORD, |
| LayoutInf: HINF, |
| SecurityDescriptor: PCSTR, |
| }} |
| pub type PSP_FILE_COPY_PARAMS_A = *mut SP_FILE_COPY_PARAMS_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_FILE_COPY_PARAMS_W { |
| cbSize: DWORD, |
| QueueHandle: HSPFILEQ, |
| SourceRootPath: PCWSTR, |
| SourcePath: PCWSTR, |
| SourceFilename: PCWSTR, |
| SourceDescription: PCWSTR, |
| SourceTagfile: PCWSTR, |
| TargetDirectory: PCWSTR, |
| TargetFilename: PCWSTR, |
| CopyStyle: DWORD, |
| LayoutInf: HINF, |
| SecurityDescriptor: PCWSTR, |
| }} |
| pub type PSP_FILE_COPY_PARAMS_W = *mut SP_FILE_COPY_PARAMS_W; |
| pub type HDSKSPC = PVOID; |
| pub type HDEVINFO = PVOID; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINFO_DATA { |
| cbSize: DWORD, |
| ClassGuid: GUID, |
| DevInst: DWORD, |
| Reserved: ULONG_PTR, |
| }} |
| pub type PSP_DEVINFO_DATA = *mut SP_DEVINFO_DATA; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVICE_INTERFACE_DATA { |
| cbSize: DWORD, |
| InterfaceClassGuid: GUID, |
| Flags: DWORD, |
| Reserved: ULONG_PTR, |
| }} |
| pub type PSP_DEVICE_INTERFACE_DATA = *mut SP_DEVICE_INTERFACE_DATA; |
| pub const SPINT_ACTIVE: DWORD = 0x00000001; |
| pub const SPINT_DEFAULT: DWORD = 0x00000002; |
| pub const SPINT_REMOVED: DWORD = 0x00000004; |
| pub type SP_INTERFACE_DEVICE_DATA = SP_DEVICE_INTERFACE_DATA; |
| pub type PSP_INTERFACE_DEVICE_DATA = PSP_DEVICE_INTERFACE_DATA; |
| pub const SPID_ACTIVE: DWORD = SPINT_ACTIVE; |
| pub const SPID_DEFAULT: DWORD = SPINT_DEFAULT; |
| pub const SPID_REMOVED: DWORD = SPINT_REMOVED; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { |
| cbSize: DWORD, |
| DevicePath: [CHAR; ANYSIZE_ARRAY], |
| }} |
| pub type PSP_DEVICE_INTERFACE_DETAIL_DATA_A = *mut SP_DEVICE_INTERFACE_DETAIL_DATA_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { |
| cbSize: DWORD, |
| DevicePath: [WCHAR; ANYSIZE_ARRAY], |
| }} |
| pub type PSP_DEVICE_INTERFACE_DETAIL_DATA_W = *mut SP_DEVICE_INTERFACE_DETAIL_DATA_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINFO_LIST_DETAIL_DATA_A { |
| cbSize: DWORD, |
| ClassGuid: GUID, |
| RemoteMachineHandle: HANDLE, |
| RemoteMachineName: [CHAR; SP_MAX_MACHINENAME_LENGTH], |
| }} |
| pub type PSP_DEVINFO_LIST_DETAIL_DATA_A = *mut SP_DEVINFO_LIST_DETAIL_DATA_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINFO_LIST_DETAIL_DATA_W { |
| cbSize: DWORD, |
| ClassGuid: GUID, |
| RemoteMachineHandle: HANDLE, |
| RemoteMachineName: [WCHAR; SP_MAX_MACHINENAME_LENGTH], |
| }} |
| pub type PSP_DEVINFO_LIST_DETAIL_DATA_W = *mut SP_DEVINFO_LIST_DETAIL_DATA_W; |
| pub const DIF_SELECTDEVICE: DI_FUNCTION = 0x00000001; |
| pub const DIF_INSTALLDEVICE: DI_FUNCTION = 0x00000002; |
| pub const DIF_ASSIGNRESOURCES: DI_FUNCTION = 0x00000003; |
| pub const DIF_PROPERTIES: DI_FUNCTION = 0x00000004; |
| pub const DIF_REMOVE: DI_FUNCTION = 0x00000005; |
| pub const DIF_FIRSTTIMESETUP: DI_FUNCTION = 0x00000006; |
| pub const DIF_FOUNDDEVICE: DI_FUNCTION = 0x00000007; |
| pub const DIF_SELECTCLASSDRIVERS: DI_FUNCTION = 0x00000008; |
| pub const DIF_VALIDATECLASSDRIVERS: DI_FUNCTION = 0x00000009; |
| pub const DIF_INSTALLCLASSDRIVERS: DI_FUNCTION = 0x0000000A; |
| pub const DIF_CALCDISKSPACE: DI_FUNCTION = 0x0000000B; |
| pub const DIF_DESTROYPRIVATEDATA: DI_FUNCTION = 0x0000000C; |
| pub const DIF_VALIDATEDRIVER: DI_FUNCTION = 0x0000000D; |
| pub const DIF_DETECT: DI_FUNCTION = 0x0000000F; |
| pub const DIF_INSTALLWIZARD: DI_FUNCTION = 0x00000010; |
| pub const DIF_DESTROYWIZARDDATA: DI_FUNCTION = 0x00000011; |
| pub const DIF_PROPERTYCHANGE: DI_FUNCTION = 0x00000012; |
| pub const DIF_ENABLECLASS: DI_FUNCTION = 0x00000013; |
| pub const DIF_DETECTVERIFY: DI_FUNCTION = 0x00000014; |
| pub const DIF_INSTALLDEVICEFILES: DI_FUNCTION = 0x00000015; |
| pub const DIF_UNREMOVE: DI_FUNCTION = 0x00000016; |
| pub const DIF_SELECTBESTCOMPATDRV: DI_FUNCTION = 0x00000017; |
| pub const DIF_ALLOW_INSTALL: DI_FUNCTION = 0x00000018; |
| pub const DIF_REGISTERDEVICE: DI_FUNCTION = 0x00000019; |
| pub const DIF_NEWDEVICEWIZARD_PRESELECT: DI_FUNCTION = 0x0000001A; |
| pub const DIF_NEWDEVICEWIZARD_SELECT: DI_FUNCTION = 0x0000001B; |
| pub const DIF_NEWDEVICEWIZARD_PREANALYZE: DI_FUNCTION = 0x0000001C; |
| pub const DIF_NEWDEVICEWIZARD_POSTANALYZE: DI_FUNCTION = 0x0000001D; |
| pub const DIF_NEWDEVICEWIZARD_FINISHINSTALL: DI_FUNCTION = 0x0000001E; |
| pub const DIF_UNUSED1: DI_FUNCTION = 0x0000001F; |
| pub const DIF_INSTALLINTERFACES: DI_FUNCTION = 0x00000020; |
| pub const DIF_DETECTCANCEL: DI_FUNCTION = 0x00000021; |
| pub const DIF_REGISTER_COINSTALLERS: DI_FUNCTION = 0x00000022; |
| pub const DIF_ADDPROPERTYPAGE_ADVANCED: DI_FUNCTION = 0x00000023; |
| pub const DIF_ADDPROPERTYPAGE_BASIC: DI_FUNCTION = 0x00000024; |
| pub const DIF_RESERVED1: DI_FUNCTION = 0x00000025; |
| pub const DIF_TROUBLESHOOTER: DI_FUNCTION = 0x00000026; |
| pub const DIF_POWERMESSAGEWAKE: DI_FUNCTION = 0x00000027; |
| pub const DIF_ADDREMOTEPROPERTYPAGE_ADVANCED: DI_FUNCTION = 0x00000028; |
| pub const DIF_UPDATEDRIVER_UI: DI_FUNCTION = 0x00000029; |
| pub const DIF_FINISHINSTALL_ACTION: DI_FUNCTION = 0x0000002A; |
| pub const DIF_RESERVED2: DI_FUNCTION = 0x00000030; |
| pub const DIF_MOVEDEVICE: DI_FUNCTION = 0x0000000E; |
| pub type DI_FUNCTION = UINT; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINSTALL_PARAMS_A { |
| cbSize: DWORD, |
| Flags: DWORD, |
| FlagsEx: DWORD, |
| hwndParent: HWND, |
| InstallMsgHandler: PSP_FILE_CALLBACK_A, |
| InstallMsgHandlerContext: PVOID, |
| FileQueue: HSPFILEQ, |
| ClassInstallReserved: ULONG_PTR, |
| Reserved: DWORD, |
| DriverPath: [CHAR; MAX_PATH], |
| }} |
| pub type PSP_DEVINSTALL_PARAMS_A = *mut SP_DEVINSTALL_PARAMS_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINSTALL_PARAMS_W { |
| cbSize: DWORD, |
| Flags: DWORD, |
| FlagsEx: DWORD, |
| hwndParent: HWND, |
| InstallMsgHandler: PSP_FILE_CALLBACK_W, |
| InstallMsgHandlerContext: PVOID, |
| FileQueue: HSPFILEQ, |
| ClassInstallReserved: ULONG_PTR, |
| Reserved: DWORD, |
| DriverPath: [WCHAR; MAX_PATH], |
| }} |
| pub type PSP_DEVINSTALL_PARAMS_W = *mut SP_DEVINSTALL_PARAMS_W; |
| pub const DI_SHOWOEM: DWORD = 0x00000001; |
| pub const DI_SHOWCOMPAT: DWORD = 0x00000002; |
| pub const DI_SHOWCLASS: DWORD = 0x00000004; |
| pub const DI_SHOWALL: DWORD = 0x00000007; |
| pub const DI_NOVCP: DWORD = 0x00000008; |
| pub const DI_DIDCOMPAT: DWORD = 0x00000010; |
| pub const DI_DIDCLASS: DWORD = 0x00000020; |
| pub const DI_AUTOASSIGNRES: DWORD = 0x00000040; |
| pub const DI_NEEDRESTART: DWORD = 0x00000080; |
| pub const DI_NEEDREBOOT: DWORD = 0x00000100; |
| pub const DI_NOBROWSE: DWORD = 0x00000200; |
| pub const DI_MULTMFGS: DWORD = 0x00000400; |
| pub const DI_DISABLED: DWORD = 0x00000800; |
| pub const DI_GENERALPAGE_ADDED: DWORD = 0x00001000; |
| pub const DI_RESOURCEPAGE_ADDED: DWORD = 0x00002000; |
| pub const DI_PROPERTIES_CHANGE: DWORD = 0x00004000; |
| pub const DI_INF_IS_SORTED: DWORD = 0x00008000; |
| pub const DI_ENUMSINGLEINF: DWORD = 0x00010000; |
| pub const DI_DONOTCALLCONFIGMG: DWORD = 0x00020000; |
| pub const DI_INSTALLDISABLED: DWORD = 0x00040000; |
| pub const DI_COMPAT_FROM_CLASS: DWORD = 0x00080000; |
| pub const DI_CLASSINSTALLPARAMS: DWORD = 0x00100000; |
| pub const DI_NODI_DEFAULTACTION: DWORD = 0x00200000; |
| pub const DI_QUIETINSTALL: DWORD = 0x00800000; |
| pub const DI_NOFILECOPY: DWORD = 0x01000000; |
| pub const DI_FORCECOPY: DWORD = 0x02000000; |
| pub const DI_DRIVERPAGE_ADDED: DWORD = 0x04000000; |
| pub const DI_USECI_SELECTSTRINGS: DWORD = 0x08000000; |
| pub const DI_OVERRIDE_INFFLAGS: DWORD = 0x10000000; |
| pub const DI_PROPS_NOCHANGEUSAGE: DWORD = 0x20000000; |
| pub const DI_NOSELECTICONS: DWORD = 0x40000000; |
| pub const DI_NOWRITE_IDS: DWORD = 0x80000000; |
| pub const DI_FLAGSEX_RESERVED2: DWORD = 0x00000001; |
| pub const DI_FLAGSEX_RESERVED3: DWORD = 0x00000002; |
| pub const DI_FLAGSEX_CI_FAILED: DWORD = 0x00000004; |
| pub const DI_FLAGSEX_FINISHINSTALL_ACTION: DWORD = 0x00000008; |
| pub const DI_FLAGSEX_DIDINFOLIST: DWORD = 0x00000010; |
| pub const DI_FLAGSEX_DIDCOMPATINFO: DWORD = 0x00000020; |
| pub const DI_FLAGSEX_FILTERCLASSES: DWORD = 0x00000040; |
| pub const DI_FLAGSEX_SETFAILEDINSTALL: DWORD = 0x00000080; |
| pub const DI_FLAGSEX_DEVICECHANGE: DWORD = 0x00000100; |
| pub const DI_FLAGSEX_ALWAYSWRITEIDS: DWORD = 0x00000200; |
| pub const DI_FLAGSEX_PROPCHANGE_PENDING: DWORD = 0x00000400; |
| pub const DI_FLAGSEX_ALLOWEXCLUDEDDRVS: DWORD = 0x00000800; |
| pub const DI_FLAGSEX_NOUIONQUERYREMOVE: DWORD = 0x00001000; |
| pub const DI_FLAGSEX_USECLASSFORCOMPAT: DWORD = 0x00002000; |
| pub const DI_FLAGSEX_RESERVED4: DWORD = 0x00004000; |
| pub const DI_FLAGSEX_NO_DRVREG_MODIFY: DWORD = 0x00008000; |
| pub const DI_FLAGSEX_IN_SYSTEM_SETUP: DWORD = 0x00010000; |
| pub const DI_FLAGSEX_INET_DRIVER: DWORD = 0x00020000; |
| pub const DI_FLAGSEX_APPENDDRIVERLIST: DWORD = 0x00040000; |
| pub const DI_FLAGSEX_PREINSTALLBACKUP: DWORD = 0x00080000; |
| pub const DI_FLAGSEX_BACKUPONREPLACE: DWORD = 0x00100000; |
| pub const DI_FLAGSEX_DRIVERLIST_FROM_URL: DWORD = 0x00200000; |
| pub const DI_FLAGSEX_RESERVED1: DWORD = 0x00400000; |
| pub const DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS: DWORD = 0x00800000; |
| pub const DI_FLAGSEX_POWERPAGE_ADDED: DWORD = 0x01000000; |
| pub const DI_FLAGSEX_FILTERSIMILARDRIVERS: DWORD = 0x02000000; |
| pub const DI_FLAGSEX_INSTALLEDDRIVER: DWORD = 0x04000000; |
| pub const DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE: DWORD = 0x08000000; |
| pub const DI_FLAGSEX_ALTPLATFORM_DRVSEARCH: DWORD = 0x10000000; |
| pub const DI_FLAGSEX_RESTART_DEVICE_ONLY: DWORD = 0x20000000; |
| pub const DI_FLAGSEX_RECURSIVESEARCH: DWORD = 0x40000000; |
| pub const DI_FLAGSEX_SEARCH_PUBLISHED_INFS: DWORD = 0x80000000; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_CLASSINSTALL_HEADER { |
| cbSize: DWORD, |
| InstallFunction: DI_FUNCTION, |
| }} |
| pub type PSP_CLASSINSTALL_HEADER = *mut SP_CLASSINSTALL_HEADER; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ENABLECLASS_PARAMS { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| ClassGuid: GUID, |
| EnableMessage: DWORD, |
| }} |
| pub type PSP_ENABLECLASS_PARAMS = *mut SP_ENABLECLASS_PARAMS; |
| pub const ENABLECLASS_QUERY: DWORD = 0; |
| pub const ENABLECLASS_SUCCESS: DWORD = 1; |
| pub const ENABLECLASS_FAILURE: DWORD = 2; |
| pub const DICS_ENABLE: DWORD = 0x00000001; |
| pub const DICS_DISABLE: DWORD = 0x00000002; |
| pub const DICS_PROPCHANGE: DWORD = 0x00000003; |
| pub const DICS_START: DWORD = 0x00000004; |
| pub const DICS_STOP: DWORD = 0x00000005; |
| pub const DICS_FLAG_GLOBAL: DWORD = 0x00000001; |
| pub const DICS_FLAG_CONFIGSPECIFIC: DWORD = 0x00000002; |
| pub const DICS_FLAG_CONFIGGENERAL: DWORD = 0x00000004; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_PROPCHANGE_PARAMS { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| StateChange: DWORD, |
| Scope: DWORD, |
| HwProfile: DWORD, |
| }} |
| pub type PSP_PROPCHANGE_PARAMS = *mut SP_PROPCHANGE_PARAMS; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_REMOVEDEVICE_PARAMS { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| Scope: DWORD, |
| HwProfile: DWORD, |
| }} |
| pub type PSP_REMOVEDEVICE_PARAMS = *mut SP_REMOVEDEVICE_PARAMS; |
| pub const DI_REMOVEDEVICE_GLOBAL: DWORD = 0x00000001; |
| pub const DI_REMOVEDEVICE_CONFIGSPECIFIC: DWORD = 0x00000002; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_UNREMOVEDEVICE_PARAMS { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| Scope: DWORD, |
| HwProfile: DWORD, |
| }} |
| pub type PSP_UNREMOVEDEVICE_PARAMS = *mut SP_UNREMOVEDEVICE_PARAMS; |
| pub const DI_UNREMOVEDEVICE_CONFIGSPECIFIC: DWORD = 0x00000002; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_SELECTDEVICE_PARAMS_A { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| Title: [CHAR; MAX_TITLE_LEN], |
| Instructions: [CHAR; MAX_INSTRUCTION_LEN], |
| ListLabel: [CHAR; MAX_LABEL_LEN], |
| SubTitle: [CHAR; MAX_SUBTITLE_LEN], |
| Reserved: [BYTE; 2], |
| }} |
| pub type PSP_SELECTDEVICE_PARAMS_A = *mut SP_SELECTDEVICE_PARAMS_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_SELECTDEVICE_PARAMS_W { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| Title: [WCHAR; MAX_TITLE_LEN], |
| Instructions: [WCHAR; MAX_INSTRUCTION_LEN], |
| ListLabel: [WCHAR; MAX_LABEL_LEN], |
| SubTitle: [WCHAR; MAX_SUBTITLE_LEN], |
| }} |
| pub type PSP_SELECTDEVICE_PARAMS_W = *mut SP_SELECTDEVICE_PARAMS_W; |
| FN!{stdcall PDETECT_PROGRESS_NOTIFY( |
| ProgressNotifyParam: PVOID, |
| DetectComplete: DWORD, |
| ) -> BOOL} |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DETECTDEVICE_PARAMS { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| DetectProgressNotify: PDETECT_PROGRESS_NOTIFY, |
| ProgressNotifyParam: PVOID, |
| }} |
| pub type PSP_DETECTDEVICE_PARAMS = *mut SP_DETECTDEVICE_PARAMS; |
| pub const MAX_INSTALLWIZARD_DYNAPAGES: usize = 20; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INSTALLWIZARD_DATA { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| Flags: DWORD, |
| DynamicPages: [HPROPSHEETPAGE; MAX_INSTALLWIZARD_DYNAPAGES], |
| NumDynamicPages: DWORD, |
| DynamicPageFlags: DWORD, |
| PrivateFlags: DWORD, |
| PrivateData: LPARAM, |
| hwndWizardDlg: HWND, |
| }} |
| pub type PSP_INSTALLWIZARD_DATA = *mut SP_INSTALLWIZARD_DATA; |
| pub const NDW_INSTALLFLAG_DIDFACTDEFS: DWORD = 0x00000001; |
| pub const NDW_INSTALLFLAG_HARDWAREALLREADYIN: DWORD = 0x00000002; |
| pub const NDW_INSTALLFLAG_NEEDRESTART: DWORD = DI_NEEDRESTART; |
| pub const NDW_INSTALLFLAG_NEEDREBOOT: DWORD = DI_NEEDREBOOT; |
| pub const NDW_INSTALLFLAG_NEEDSHUTDOWN: DWORD = 0x00000200; |
| pub const NDW_INSTALLFLAG_EXPRESSINTRO: DWORD = 0x00000400; |
| pub const NDW_INSTALLFLAG_SKIPISDEVINSTALLED: DWORD = 0x00000800; |
| pub const NDW_INSTALLFLAG_NODETECTEDDEVS: DWORD = 0x00001000; |
| pub const NDW_INSTALLFLAG_INSTALLSPECIFIC: DWORD = 0x00002000; |
| pub const NDW_INSTALLFLAG_SKIPCLASSLIST: DWORD = 0x00004000; |
| pub const NDW_INSTALLFLAG_CI_PICKED_OEM: DWORD = 0x00008000; |
| pub const NDW_INSTALLFLAG_PCMCIAMODE: DWORD = 0x00010000; |
| pub const NDW_INSTALLFLAG_PCMCIADEVICE: DWORD = 0x00020000; |
| pub const NDW_INSTALLFLAG_USERCANCEL: DWORD = 0x00040000; |
| pub const NDW_INSTALLFLAG_KNOWNCLASS: DWORD = 0x00080000; |
| pub const DYNAWIZ_FLAG_PAGESADDED: DWORD = 0x00000001; |
| pub const DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT: DWORD = 0x00000008; |
| pub const DYNAWIZ_FLAG_INSTALLDET_NEXT: DWORD = 0x00000002; |
| pub const DYNAWIZ_FLAG_INSTALLDET_PREV: DWORD = 0x00000004; |
| pub const MIN_IDD_DYNAWIZ_RESOURCE_ID: c_int = 10000; |
| pub const MAX_IDD_DYNAWIZ_RESOURCE_ID: c_int = 11000; |
| pub const IDD_DYNAWIZ_FIRSTPAGE: c_int = 10000; |
| pub const IDD_DYNAWIZ_SELECT_PREVPAGE: c_int = 10001; |
| pub const IDD_DYNAWIZ_SELECT_NEXTPAGE: c_int = 10002; |
| pub const IDD_DYNAWIZ_ANALYZE_PREVPAGE: c_int = 10003; |
| pub const IDD_DYNAWIZ_ANALYZE_NEXTPAGE: c_int = 10004; |
| pub const IDD_DYNAWIZ_SELECTDEV_PAGE: c_int = 10009; |
| pub const IDD_DYNAWIZ_ANALYZEDEV_PAGE: c_int = 10010; |
| pub const IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE: c_int = 10011; |
| pub const IDD_DYNAWIZ_SELECTCLASS_PAGE: c_int = 10012; |
| pub const IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE: c_int = 10006; |
| pub const IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE: c_int = 10007; |
| pub const IDD_DYNAWIZ_INSTALLDETECTED_NODEVS: c_int = 10008; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_NEWDEVICEWIZARD_DATA { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| Flags: DWORD, |
| DynamicPages: [HPROPSHEETPAGE; MAX_INSTALLWIZARD_DYNAPAGES], |
| NumDynamicPages: DWORD, |
| hwndWizardDlg: HWND, |
| }} |
| pub type PSP_NEWDEVICEWIZARD_DATA = *mut SP_NEWDEVICEWIZARD_DATA; |
| pub type SP_ADDPROPERTYPAGE_DATA = SP_NEWDEVICEWIZARD_DATA; |
| pub type PSP_ADDPROPERTYPAGE_DATA = PSP_NEWDEVICEWIZARD_DATA; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_TROUBLESHOOTER_PARAMS_A { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| ChmFile: [CHAR; MAX_PATH], |
| HtmlTroubleShooter: [CHAR; MAX_PATH], |
| }} |
| pub type PSP_TROUBLESHOOTER_PARAMS_A = *mut SP_TROUBLESHOOTER_PARAMS_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_TROUBLESHOOTER_PARAMS_W { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| ChmFile: [WCHAR; MAX_PATH], |
| HtmlTroubleShooter: [WCHAR; MAX_PATH], |
| }} |
| pub type PSP_TROUBLESHOOTER_PARAMS_W = *mut SP_TROUBLESHOOTER_PARAMS_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_POWERMESSAGEWAKE_PARAMS_A { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| PowerMessageWake: [CHAR; LINE_LEN * 2], |
| }} |
| pub type PSP_POWERMESSAGEWAKE_PARAMS_A = *mut SP_POWERMESSAGEWAKE_PARAMS_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_POWERMESSAGEWAKE_PARAMS_W { |
| ClassInstallHeader: SP_CLASSINSTALL_HEADER, |
| PowerMessageWake: [WCHAR; LINE_LEN * 2], |
| }} |
| pub type PSP_POWERMESSAGEWAKE_PARAMS_W = *mut SP_POWERMESSAGEWAKE_PARAMS_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V2_A { |
| cbSize: DWORD, |
| DriverType: DWORD, |
| Reserved: ULONG_PTR, |
| Description: [CHAR; LINE_LEN], |
| MfgName: [CHAR; LINE_LEN], |
| ProviderName: [CHAR; LINE_LEN], |
| DriverDate: FILETIME, |
| DriverVersion: DWORDLONG, |
| }} |
| pub type PSP_DRVINFO_DATA_V2_A = *mut SP_DRVINFO_DATA_V2_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V2_W { |
| cbSize: DWORD, |
| DriverType: DWORD, |
| Reserved: ULONG_PTR, |
| Description: [WCHAR; LINE_LEN], |
| MfgName: [WCHAR; LINE_LEN], |
| ProviderName: [WCHAR; LINE_LEN], |
| DriverDate: FILETIME, |
| DriverVersion: DWORDLONG, |
| }} |
| pub type PSP_DRVINFO_DATA_V2_W = *mut SP_DRVINFO_DATA_V2_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V1_A { |
| cbSize: DWORD, |
| DriverType: DWORD, |
| Reserved: ULONG_PTR, |
| Description: [CHAR; LINE_LEN], |
| MfgName: [CHAR; LINE_LEN], |
| ProviderName: [CHAR; LINE_LEN], |
| }} |
| pub type PSP_DRVINFO_DATA_V1_A = *mut SP_DRVINFO_DATA_V1_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V1_W { |
| cbSize: DWORD, |
| DriverType: DWORD, |
| Reserved: ULONG_PTR, |
| Description: [WCHAR; LINE_LEN], |
| MfgName: [WCHAR; LINE_LEN], |
| ProviderName: [WCHAR; LINE_LEN], |
| }} |
| pub type PSP_DRVINFO_DATA_V1_W = *mut SP_DRVINFO_DATA_V1_W; |
| pub type SP_DRVINFO_DATA_A = SP_DRVINFO_DATA_V2_A; |
| pub type PSP_DRVINFO_DATA_A = PSP_DRVINFO_DATA_V2_A; |
| pub type SP_DRVINFO_DATA_W = SP_DRVINFO_DATA_V2_W; |
| pub type PSP_DRVINFO_DATA_W = PSP_DRVINFO_DATA_V2_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DETAIL_DATA_A { |
| cbSize: DWORD, |
| InfDate: FILETIME, |
| CompatIDsOffset: DWORD, |
| CompatIDsLength: DWORD, |
| Reserved: ULONG_PTR, |
| SectionName: [CHAR; LINE_LEN], |
| InfFileName: [CHAR; MAX_PATH], |
| DrvDescription: [CHAR; LINE_LEN], |
| HardwareID: [CHAR; ANYSIZE_ARRAY], |
| }} |
| pub type PSP_DRVINFO_DETAIL_DATA_A = *mut SP_DRVINFO_DETAIL_DATA_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DETAIL_DATA_W { |
| cbSize: DWORD, |
| InfDate: FILETIME, |
| CompatIDsOffset: DWORD, |
| CompatIDsLength: DWORD, |
| Reserved: ULONG_PTR, |
| SectionName: [WCHAR; LINE_LEN], |
| InfFileName: [WCHAR; MAX_PATH], |
| DrvDescription: [WCHAR; LINE_LEN], |
| HardwareID: [WCHAR; ANYSIZE_ARRAY], |
| }} |
| pub type PSP_DRVINFO_DETAIL_DATA_W = *mut SP_DRVINFO_DETAIL_DATA_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINSTALL_PARAMS { |
| cbSize: DWORD, |
| Rank: DWORD, |
| Flags: DWORD, |
| PrivateData: DWORD_PTR, |
| Reserved: DWORD, |
| }} |
| pub type PSP_DRVINSTALL_PARAMS = *mut SP_DRVINSTALL_PARAMS; |
| pub const DNF_DUPDESC: DWORD = 0x00000001; |
| pub const DNF_OLDDRIVER: DWORD = 0x00000002; |
| pub const DNF_EXCLUDEFROMLIST: DWORD = 0x00000004; |
| pub const DNF_NODRIVER: DWORD = 0x00000008; |
| pub const DNF_LEGACYINF: DWORD = 0x00000010; |
| pub const DNF_CLASS_DRIVER: DWORD = 0x00000020; |
| pub const DNF_COMPATIBLE_DRIVER: DWORD = 0x00000040; |
| pub const DNF_INET_DRIVER: DWORD = 0x00000080; |
| pub const DNF_UNUSED1: DWORD = 0x00000100; |
| pub const DNF_UNUSED2: DWORD = 0x00000200; |
| pub const DNF_OLD_INET_DRIVER: DWORD = 0x00000400; |
| pub const DNF_BAD_DRIVER: DWORD = 0x00000800; |
| pub const DNF_DUPPROVIDER: DWORD = 0x00001000; |
| pub const DNF_INF_IS_SIGNED: DWORD = 0x00002000; |
| pub const DNF_OEM_F6_INF: DWORD = 0x00004000; |
| pub const DNF_DUPDRIVERVER: DWORD = 0x00008000; |
| pub const DNF_BASIC_DRIVER: DWORD = 0x00010000; |
| pub const DNF_AUTHENTICODE_SIGNED: DWORD = 0x00020000; |
| pub const DNF_INSTALLEDDRIVER: DWORD = 0x00040000; |
| pub const DNF_ALWAYSEXCLUDEFROMLIST: DWORD = 0x00080000; |
| pub const DNF_INBOX_DRIVER: DWORD = 0x00100000; |
| pub const DNF_REQUESTADDITIONALSOFTWARE: DWORD = 0x00200000; |
| pub const DNF_UNUSED_22: DWORD = 0x00400000; |
| pub const DNF_UNUSED_23: DWORD = 0x00800000; |
| pub const DNF_UNUSED_24: DWORD = 0x01000000; |
| pub const DNF_UNUSED_25: DWORD = 0x02000000; |
| pub const DNF_UNUSED_26: DWORD = 0x04000000; |
| pub const DNF_UNUSED_27: DWORD = 0x08000000; |
| pub const DNF_UNUSED_28: DWORD = 0x10000000; |
| pub const DNF_UNUSED_29: DWORD = 0x20000000; |
| pub const DNF_UNUSED_30: DWORD = 0x40000000; |
| pub const DNF_UNUSED_31: DWORD = 0x80000000; |
| pub const DRIVER_HARDWAREID_RANK: DWORD = 0x00000FFF; |
| pub const DRIVER_HARDWAREID_MASK: DWORD = 0x80000FFF; |
| pub const DRIVER_UNTRUSTED_RANK: DWORD = 0x80000000; |
| pub const DRIVER_W9X_SUSPECT_RANK: DWORD = 0xC0000000; |
| FN!{stdcall PSP_DETSIG_CMPPROC( |
| DeviceInfoSet: HDEVINFO, |
| NewDeviceData: PSP_DEVINFO_DATA, |
| ExistingDeviceData: PSP_DEVINFO_DATA, |
| CompareContext: PVOID, |
| ) -> DWORD} |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct COINSTALLER_CONTEXT_DATA { |
| PostProcessing: BOOL, |
| InstallResult: DWORD, |
| PrivateData: PVOID, |
| }} |
| pub type PCOINSTALLER_CONTEXT_DATA = *mut COINSTALLER_CONTEXT_DATA; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_CLASSIMAGELIST_DATA { |
| cbSize: DWORD, |
| ImageList: HIMAGELIST, |
| Reserved: ULONG_PTR, |
| }} |
| pub type PSP_CLASSIMAGELIST_DATA = *mut SP_CLASSIMAGELIST_DATA; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_PROPSHEETPAGE_REQUEST { |
| cbSize: DWORD, |
| PageRequested: DWORD, |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| }} |
| pub type PSP_PROPSHEETPAGE_REQUEST = *mut SP_PROPSHEETPAGE_REQUEST; |
| pub const SPPSR_SELECT_DEVICE_RESOURCES: DWORD = 1; |
| pub const SPPSR_ENUM_BASIC_DEVICE_PROPERTIES: DWORD = 2; |
| pub const SPPSR_ENUM_ADV_DEVICE_PROPERTIES: DWORD = 3; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V2_A { |
| cbSize: DWORD, |
| FullInfPath: [CHAR; MAX_PATH], |
| FilenameOffset: INT, |
| ReinstallInstance: [CHAR; MAX_PATH], |
| }} |
| pub type PSP_BACKUP_QUEUE_PARAMS_V2_A = *mut SP_BACKUP_QUEUE_PARAMS_V2_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V2_W { |
| cbSize: DWORD, |
| FullInfPath: [WCHAR; MAX_PATH], |
| FilenameOffset: INT, |
| ReinstallInstance: [WCHAR; MAX_PATH], |
| }} |
| pub type PSP_BACKUP_QUEUE_PARAMS_V2_W = *mut SP_BACKUP_QUEUE_PARAMS_V2_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V1_A { |
| cbSize: DWORD, |
| FullInfPath: [CHAR; MAX_PATH], |
| FilenameOffset: INT, |
| }} |
| pub type PSP_BACKUP_QUEUE_PARAMS_V1_A = *mut SP_BACKUP_QUEUE_PARAMS_V1_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V1_W { |
| cbSize: DWORD, |
| FullInfPath: [WCHAR; MAX_PATH], |
| FilenameOffset: INT, |
| }} |
| pub type PSP_BACKUP_QUEUE_PARAMS_V1_W = *mut SP_BACKUP_QUEUE_PARAMS_V1_W; |
| pub type SP_BACKUP_QUEUE_PARAMS_A = SP_BACKUP_QUEUE_PARAMS_V2_A; |
| pub type PSP_BACKUP_QUEUE_PARAMS_A = PSP_BACKUP_QUEUE_PARAMS_V2_A; |
| pub type SP_BACKUP_QUEUE_PARAMS_W = SP_BACKUP_QUEUE_PARAMS_V2_W; |
| pub type PSP_BACKUP_QUEUE_PARAMS_W = PSP_BACKUP_QUEUE_PARAMS_V2_W; |
| pub const ERROR_EXPECTED_SECTION_NAME: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0; |
| pub const ERROR_BAD_SECTION_NAME_LINE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1; |
| pub const ERROR_SECTION_NAME_TOO_LONG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2; |
| pub const ERROR_GENERAL_SYNTAX: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3; |
| pub const ERROR_WRONG_INF_STYLE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100; |
| pub const ERROR_SECTION_NOT_FOUND: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101; |
| pub const ERROR_LINE_NOT_FOUND: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102; |
| pub const ERROR_NO_BACKUP: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103; |
| pub const ERROR_NO_ASSOCIATED_CLASS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200; |
| pub const ERROR_CLASS_MISMATCH: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201; |
| pub const ERROR_DUPLICATE_FOUND: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202; |
| pub const ERROR_NO_DRIVER_SELECTED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203; |
| pub const ERROR_KEY_DOES_NOT_EXIST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204; |
| pub const ERROR_INVALID_DEVINST_NAME: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x205; |
| pub const ERROR_INVALID_CLASS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206; |
| pub const ERROR_DEVINST_ALREADY_EXISTS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x207; |
| pub const ERROR_DEVINFO_NOT_REGISTERED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x208; |
| pub const ERROR_INVALID_REG_PROPERTY: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x209; |
| pub const ERROR_NO_INF: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A; |
| pub const ERROR_NO_SUCH_DEVINST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B; |
| pub const ERROR_CANT_LOAD_CLASS_ICON: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x20C; |
| pub const ERROR_INVALID_CLASS_INSTALLER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x20D; |
| pub const ERROR_DI_DO_DEFAULT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E; |
| pub const ERROR_DI_NOFILECOPY: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F; |
| pub const ERROR_INVALID_HWPROFILE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210; |
| pub const ERROR_NO_DEVICE_SELECTED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211; |
| pub const ERROR_DEVINFO_LIST_LOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212; |
| pub const ERROR_DEVINFO_DATA_LOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213; |
| pub const ERROR_DI_BAD_PATH: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214; |
| pub const ERROR_NO_CLASSINSTALL_PARAMS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x215; |
| pub const ERROR_FILEQUEUE_LOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216; |
| pub const ERROR_BAD_SERVICE_INSTALLSECT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x217; |
| pub const ERROR_NO_CLASS_DRIVER_LIST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x218; |
| pub const ERROR_NO_ASSOCIATED_SERVICE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x219; |
| pub const ERROR_NO_DEFAULT_DEVICE_INTERFACE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x21A; |
| pub const ERROR_DEVICE_INTERFACE_ACTIVE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x21B; |
| pub const ERROR_DEVICE_INTERFACE_REMOVED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x21C; |
| pub const ERROR_BAD_INTERFACE_INSTALLSECT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x21D; |
| pub const ERROR_NO_SUCH_INTERFACE_CLASS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x21E; |
| pub const ERROR_INVALID_REFERENCE_STRING: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x21F; |
| pub const ERROR_INVALID_MACHINENAME: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220; |
| pub const ERROR_REMOTE_COMM_FAILURE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221; |
| pub const ERROR_MACHINE_UNAVAILABLE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222; |
| pub const ERROR_NO_CONFIGMGR_SERVICES: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x223; |
| pub const ERROR_INVALID_PROPPAGE_PROVIDER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x224; |
| pub const ERROR_NO_SUCH_DEVICE_INTERFACE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x225; |
| pub const ERROR_DI_POSTPROCESSING_REQUIRED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x226; |
| pub const ERROR_INVALID_COINSTALLER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227; |
| pub const ERROR_NO_COMPAT_DRIVERS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228; |
| pub const ERROR_NO_DEVICE_ICON: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229; |
| pub const ERROR_INVALID_INF_LOGCONFIG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x22A; |
| pub const ERROR_DI_DONT_INSTALL: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B; |
| pub const ERROR_INVALID_FILTER_DRIVER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x22C; |
| pub const ERROR_NON_WINDOWS_NT_DRIVER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x22D; |
| pub const ERROR_NON_WINDOWS_DRIVER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E; |
| pub const ERROR_NO_CATALOG_FOR_OEM_INF: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x22F; |
| pub const ERROR_DEVINSTALL_QUEUE_NONNATIVE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x230; |
| pub const ERROR_NOT_DISABLEABLE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231; |
| pub const ERROR_CANT_REMOVE_DEVINST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232; |
| pub const ERROR_INVALID_TARGET: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x233; |
| pub const ERROR_DRIVER_NONNATIVE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x234; |
| pub const ERROR_IN_WOW64: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x235; |
| pub const ERROR_SET_SYSTEM_RESTORE_POINT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x236; |
| pub const ERROR_SCE_DISABLED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x238; |
| pub const ERROR_UNKNOWN_EXCEPTION: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x239; |
| pub const ERROR_PNP_REGISTRY_ERROR: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x23A; |
| pub const ERROR_REMOTE_REQUEST_UNSUPPORTED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x23B; |
| pub const ERROR_NOT_AN_INSTALLED_OEM_INF: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x23C; |
| pub const ERROR_INF_IN_USE_BY_DEVICES: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x23D; |
| pub const ERROR_DI_FUNCTION_OBSOLETE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x23E; |
| pub const ERROR_NO_AUTHENTICODE_CATALOG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x23F; |
| pub const ERROR_AUTHENTICODE_DISALLOWED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x240; |
| pub const ERROR_AUTHENTICODE_TRUSTED_PUBLISHER: DWORD = APPLICATION_ERROR_MASK |
| | ERROR_SEVERITY_ERROR | 0x241; |
| pub const ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED: DWORD = APPLICATION_ERROR_MASK |
| | ERROR_SEVERITY_ERROR | 0x242; |
| pub const ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED: DWORD = APPLICATION_ERROR_MASK |
| | ERROR_SEVERITY_ERROR | 0x243; |
| pub const ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH: DWORD = APPLICATION_ERROR_MASK |
| | ERROR_SEVERITY_ERROR | 0x244; |
| pub const ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE: DWORD = APPLICATION_ERROR_MASK |
| | ERROR_SEVERITY_ERROR | 0x245; |
| pub const ERROR_DEVICE_INSTALLER_NOT_READY: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x246; |
| pub const ERROR_DRIVER_STORE_ADD_FAILED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x247; |
| pub const ERROR_DEVICE_INSTALL_BLOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x248; |
| pub const ERROR_DRIVER_INSTALL_BLOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x249; |
| pub const ERROR_WRONG_INF_TYPE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x24A; |
| pub const ERROR_FILE_HASH_NOT_IN_CATALOG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x24B; |
| pub const ERROR_DRIVER_STORE_DELETE_FAILED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x24C; |
| pub const ERROR_UNRECOVERABLE_STACK_OVERFLOW: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x300; |
| pub const EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW: DWORD = ERROR_UNRECOVERABLE_STACK_OVERFLOW; |
| pub const ERROR_NO_DEFAULT_INTERFACE_DEVICE: DWORD = ERROR_NO_DEFAULT_DEVICE_INTERFACE; |
| pub const ERROR_INTERFACE_DEVICE_ACTIVE: DWORD = ERROR_DEVICE_INTERFACE_ACTIVE; |
| pub const ERROR_INTERFACE_DEVICE_REMOVED: DWORD = ERROR_DEVICE_INTERFACE_REMOVED; |
| pub const ERROR_NO_SUCH_INTERFACE_DEVICE: DWORD = ERROR_NO_SUCH_DEVICE_INTERFACE; |
| pub const ERROR_NOT_INSTALLED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR |
| | 0x1000; |
| extern "system" { |
| pub fn SetupGetInfInformationA( |
| InfSpec: LPCVOID, |
| SearchControl: DWORD, |
| ReturnBuffer: PSP_INF_INFORMATION, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetInfInformationW( |
| InfSpec: LPCVOID, |
| SearchControl: DWORD, |
| ReturnBuffer: PSP_INF_INFORMATION, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| } |
| pub const INFINFO_INF_SPEC_IS_HINF: DWORD = 1; |
| pub const INFINFO_INF_NAME_IS_ABSOLUTE: DWORD = 2; |
| pub const INFINFO_DEFAULT_SEARCH: DWORD = 3; |
| pub const INFINFO_REVERSE_DEFAULT_SEARCH: DWORD = 4; |
| pub const INFINFO_INF_PATH_LIST_SEARCH: DWORD = 5; |
| extern "system" { |
| pub fn SetupQueryInfFileInformationA( |
| InfInformation: PSP_INF_INFORMATION, |
| InfIndex: UINT, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupQueryInfFileInformationW( |
| InfInformation: PSP_INF_INFORMATION, |
| InfIndex: UINT, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupQueryInfOriginalFileInformationA( |
| InfInformation: PSP_INF_INFORMATION, |
| InfIndex: UINT, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_A, |
| ) -> BOOL; |
| pub fn SetupQueryInfOriginalFileInformationW( |
| InfInformation: PSP_INF_INFORMATION, |
| InfIndex: UINT, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_W, |
| ) -> BOOL; |
| pub fn SetupQueryInfVersionInformationA( |
| InfInformation: PSP_INF_INFORMATION, |
| InfIndex: UINT, |
| Key: PCSTR, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupQueryInfVersionInformationW( |
| InfInformation: PSP_INF_INFORMATION, |
| InfIndex: UINT, |
| Key: PCWSTR, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetInfDriverStoreLocationA( |
| FileName: PCSTR, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| LocaleName: PCSTR, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetInfDriverStoreLocationW( |
| FileName: PCWSTR, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| LocaleName: PCWSTR, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetInfPublishedNameA( |
| DriverStoreLocation: PCSTR, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetInfPublishedNameW( |
| DriverStoreLocation: PCWSTR, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetInfFileListA( |
| DirectoryPath: PCSTR, |
| InfStyle: DWORD, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetInfFileListW( |
| DirectoryPath: PCWSTR, |
| InfStyle: DWORD, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupOpenInfFileW( |
| FileName: PCWSTR, |
| InfClass: PCWSTR, |
| InfStyle: DWORD, |
| ErrorLine: PUINT, |
| ) -> HINF; |
| pub fn SetupOpenInfFileA( |
| FileName: PCSTR, |
| InfClass: PCSTR, |
| InfStyle: DWORD, |
| ErrorLine: PUINT, |
| ) -> HINF; |
| pub fn SetupOpenMasterInf() -> HINF; |
| pub fn SetupOpenAppendInfFileW( |
| FileName: PCWSTR, |
| InfHandle: HINF, |
| ErrorLine: PUINT, |
| ) -> BOOL; |
| pub fn SetupOpenAppendInfFileA( |
| FileName: PCSTR, |
| InfHandle: HINF, |
| ErrorLine: PUINT, |
| ) -> BOOL; |
| pub fn SetupCloseInfFile( |
| InfHandle: HINF, |
| ) -> (); |
| pub fn SetupFindFirstLineA( |
| InfHandle: HINF, |
| Section: PCSTR, |
| Key: PCSTR, |
| Context: PINFCONTEXT, |
| ) -> BOOL; |
| pub fn SetupFindFirstLineW( |
| InfHandle: HINF, |
| Section: PCWSTR, |
| Key: PCWSTR, |
| Context: PINFCONTEXT, |
| ) -> BOOL; |
| pub fn SetupFindNextLine( |
| ContextIn: PINFCONTEXT, |
| ContextOut: PINFCONTEXT, |
| ) -> BOOL; |
| pub fn SetupFindNextMatchLineA( |
| ContextIn: PINFCONTEXT, |
| Key: PCSTR, |
| ContextOut: PINFCONTEXT, |
| ) -> BOOL; |
| pub fn SetupFindNextMatchLineW( |
| ContextIn: PINFCONTEXT, |
| Key: PCWSTR, |
| ContextOut: PINFCONTEXT, |
| ) -> BOOL; |
| pub fn SetupGetLineByIndexA( |
| InfHandle: HINF, |
| Section: PCSTR, |
| Index: DWORD, |
| Context: PINFCONTEXT, |
| ) -> BOOL; |
| pub fn SetupGetLineByIndexW( |
| InfHandle: HINF, |
| Section: PCWSTR, |
| Index: DWORD, |
| Context: PINFCONTEXT, |
| ) -> BOOL; |
| pub fn SetupGetLineCountA( |
| InfHandle: HINF, |
| Section: PCSTR, |
| ) -> LONG; |
| pub fn SetupGetLineCountW( |
| InfHandle: HINF, |
| Section: PCWSTR, |
| ) -> LONG; |
| pub fn SetupGetLineTextA( |
| Context: PINFCONTEXT, |
| InfHandle: HINF, |
| Section: PCSTR, |
| Key: PCSTR, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| ReturnBufferSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetLineTextW( |
| Context: PINFCONTEXT, |
| InfHandle: HINF, |
| Section: PCWSTR, |
| Key: PCWSTR, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| ReturnBufferSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetFieldCount( |
| Context: PINFCONTEXT, |
| ) -> DWORD; |
| pub fn SetupGetStringFieldA( |
| Context: PINFCONTEXT, |
| FieldIndex: DWORD, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetStringFieldW( |
| Context: PINFCONTEXT, |
| FieldIndex: DWORD, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetIntField( |
| Context: PINFCONTEXT, |
| FieldIndex: DWORD, |
| IntegerValue: PINT, |
| ) -> BOOL; |
| pub fn SetupGetMultiSzFieldA( |
| Context: PINFCONTEXT, |
| FieldIndex: DWORD, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: LPDWORD, |
| ) -> BOOL; |
| pub fn SetupGetMultiSzFieldW( |
| Context: PINFCONTEXT, |
| FieldIndex: DWORD, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: LPDWORD, |
| ) -> BOOL; |
| pub fn SetupGetBinaryField( |
| Context: PINFCONTEXT, |
| FieldIndex: DWORD, |
| ReturnBuffer: PBYTE, |
| ReturnBufferSize: DWORD, |
| RequiredSize: LPDWORD, |
| ) -> BOOL; |
| pub fn SetupGetFileCompressionInfoA( |
| SourceFileName: PCSTR, |
| ActualSourceFileName: *mut PSTR, |
| SourceFileSize: PDWORD, |
| TargetFileSize: PDWORD, |
| CompressionType: PUINT, |
| ) -> DWORD; |
| pub fn SetupGetFileCompressionInfoW( |
| SourceFileName: PCWSTR, |
| ActualSourceFileName: *mut PWSTR, |
| SourceFileSize: PDWORD, |
| TargetFileSize: PDWORD, |
| CompressionType: PUINT, |
| ) -> DWORD; |
| pub fn SetupGetFileCompressionInfoExA( |
| SourceFileName: PCSTR, |
| ActualSourceFileNameBuffer: PSTR, |
| ActualSourceFileNameBufferLen: DWORD, |
| RequiredBufferLen: PDWORD, |
| SourceFileSize: PDWORD, |
| TargetFileSize: PDWORD, |
| CompressionType: PUINT, |
| ) -> BOOL; |
| pub fn SetupGetFileCompressionInfoExW( |
| SourceFileName: PCWSTR, |
| ActualSourceFileNameBuffer: PWSTR, |
| ActualSourceFileNameBufferLen: DWORD, |
| RequiredBufferLen: PDWORD, |
| SourceFileSize: PDWORD, |
| TargetFileSize: PDWORD, |
| CompressionType: PUINT, |
| ) -> BOOL; |
| } |
| pub const FILE_COMPRESSION_NONE: UINT = 0; |
| pub const FILE_COMPRESSION_WINLZA: UINT = 1; |
| pub const FILE_COMPRESSION_MSZIP: UINT = 2; |
| pub const FILE_COMPRESSION_NTCAB: UINT = 3; |
| extern "system" { |
| pub fn SetupDecompressOrCopyFileA( |
| SourceFileName: PCSTR, |
| TargetFileName: PCSTR, |
| CompressionType: PUINT, |
| ) -> DWORD; |
| pub fn SetupDecompressOrCopyFileW( |
| SourceFileName: PCWSTR, |
| TargetFileName: PCWSTR, |
| CompressionType: PUINT, |
| ) -> DWORD; |
| pub fn SetupGetSourceFileLocationA( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| FileName: PCSTR, |
| SourceId: PUINT, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetSourceFileLocationW( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| FileName: PCWSTR, |
| SourceId: PUINT, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetSourceFileSizeA( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| FileName: PCSTR, |
| Section: PCSTR, |
| FileSize: PDWORD, |
| RoundingFactor: UINT, |
| ) -> BOOL; |
| pub fn SetupGetSourceFileSizeW( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| FileName: PCWSTR, |
| Section: PCWSTR, |
| FileSize: PDWORD, |
| RoundingFactor: UINT, |
| ) -> BOOL; |
| pub fn SetupGetTargetPathA( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| Section: PCSTR, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetTargetPathW( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| Section: PCWSTR, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| } |
| pub const SRCLIST_TEMPORARY: DWORD = 0x00000001; |
| pub const SRCLIST_NOBROWSE: DWORD = 0x00000002; |
| pub const SRCLIST_SYSTEM: DWORD = 0x00000010; |
| pub const SRCLIST_USER: DWORD = 0x00000020; |
| pub const SRCLIST_SYSIFADMIN: DWORD = 0x00000040; |
| pub const SRCLIST_SUBDIRS: DWORD = 0x00000100; |
| pub const SRCLIST_APPEND: DWORD = 0x00000200; |
| pub const SRCLIST_NOSTRIPPLATFORM: DWORD = 0x00000400; |
| extern "system" { |
| pub fn SetupSetSourceListA( |
| Flags: DWORD, |
| SourceList: *mut PCSTR, |
| SourceCount: UINT, |
| ) -> BOOL; |
| pub fn SetupSetSourceListW( |
| Flags: DWORD, |
| SourceList: *mut PCWSTR, |
| SourceCount: UINT, |
| ) -> BOOL; |
| pub fn SetupCancelTemporarySourceList() -> BOOL; |
| pub fn SetupAddToSourceListA( |
| Flags: DWORD, |
| Source: PCSTR, |
| ) -> BOOL; |
| pub fn SetupAddToSourceListW( |
| Flags: DWORD, |
| Source: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupRemoveFromSourceListA( |
| Flags: DWORD, |
| Source: PCSTR, |
| ) -> BOOL; |
| pub fn SetupRemoveFromSourceListW( |
| Flags: DWORD, |
| Source: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupQuerySourceListA( |
| Flags: DWORD, |
| List: *mut *mut PCSTR, |
| Count: PUINT, |
| ) -> BOOL; |
| pub fn SetupQuerySourceListW( |
| Flags: DWORD, |
| List: *mut *mut PCWSTR, |
| Count: PUINT, |
| ) -> BOOL; |
| pub fn SetupFreeSourceListA( |
| List: *mut *mut PCSTR, |
| Count: UINT, |
| ) -> BOOL; |
| pub fn SetupFreeSourceListW( |
| List: *mut *mut PCWSTR, |
| Count: UINT, |
| ) -> BOOL; |
| pub fn SetupPromptForDiskA( |
| hwndParent: HWND, |
| DialogTitle: PCSTR, |
| DiskName: PCSTR, |
| PathToSource: PCSTR, |
| FileSought: PCSTR, |
| TagFile: PCSTR, |
| DiskPromptStyle: DWORD, |
| PathBuffer: PSTR, |
| PathBufferSize: DWORD, |
| PathRequiredSize: PDWORD, |
| ) -> UINT; |
| pub fn SetupPromptForDiskW( |
| hwndParent: HWND, |
| DialogTitle: PCWSTR, |
| DiskName: PCWSTR, |
| PathToSource: PCWSTR, |
| FileSought: PCWSTR, |
| TagFile: PCWSTR, |
| DiskPromptStyle: DWORD, |
| PathBuffer: PWSTR, |
| PathBufferSize: DWORD, |
| PathRequiredSize: PDWORD, |
| ) -> UINT; |
| pub fn SetupCopyErrorA( |
| hwndParent: HWND, |
| DialogTitle: PCSTR, |
| DiskName: PCSTR, |
| PathToSource: PCSTR, |
| SourceFile: PCSTR, |
| TargetPathFile: PCSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| PathBuffer: PSTR, |
| PathBufferSize: DWORD, |
| PathRequiredSize: PDWORD, |
| ) -> UINT; |
| pub fn SetupCopyErrorW( |
| hwndParent: HWND, |
| DialogTitle: PCWSTR, |
| DiskName: PCWSTR, |
| PathToSource: PCWSTR, |
| SourceFile: PCWSTR, |
| TargetPathFile: PCWSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| PathBuffer: PWSTR, |
| PathBufferSize: DWORD, |
| PathRequiredSize: PDWORD, |
| ) -> UINT; |
| pub fn SetupRenameErrorA( |
| hwndParent: HWND, |
| DialogTitle: PCSTR, |
| SourceFile: PCSTR, |
| TargetFile: PCSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| ) -> UINT; |
| pub fn SetupRenameErrorW( |
| hwndParent: HWND, |
| DialogTitle: PCWSTR, |
| SourceFile: PCWSTR, |
| TargetFile: PCWSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| ) -> UINT; |
| pub fn SetupDeleteErrorA( |
| hwndParent: HWND, |
| DialogTitle: PCSTR, |
| File: PCSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| ) -> UINT; |
| pub fn SetupDeleteErrorW( |
| hwndParent: HWND, |
| DialogTitle: PCWSTR, |
| File: PCWSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| ) -> UINT; |
| pub fn SetupBackupErrorA( |
| hwndParent: HWND, |
| DialogTitle: PCSTR, |
| SourceFile: PCSTR, |
| TargetFile: PCSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| ) -> UINT; |
| pub fn SetupBackupErrorW( |
| hwndParent: HWND, |
| DialogTitle: PCWSTR, |
| SourceFile: PCWSTR, |
| TargetFile: PCWSTR, |
| Win32ErrorCode: UINT, |
| Style: DWORD, |
| ) -> UINT; |
| } |
| pub const IDF_NOBROWSE: DWORD = 0x00000001; |
| pub const IDF_NOSKIP: DWORD = 0x00000002; |
| pub const IDF_NODETAILS: DWORD = 0x00000004; |
| pub const IDF_NOCOMPRESSED: DWORD = 0x00000008; |
| pub const IDF_CHECKFIRST: DWORD = 0x00000100; |
| pub const IDF_NOBEEP: DWORD = 0x00000200; |
| pub const IDF_NOFOREGROUND: DWORD = 0x00000400; |
| pub const IDF_WARNIFSKIP: DWORD = 0x00000800; |
| pub const IDF_NOREMOVABLEMEDIAPROMPT: DWORD = 0x00001000; |
| pub const IDF_USEDISKNAMEASPROMPT: DWORD = 0x00002000; |
| pub const IDF_OEMDISK: DWORD = 0x80000000; |
| pub const DPROMPT_SUCCESS: UINT = 0; |
| pub const DPROMPT_CANCEL: UINT = 1; |
| pub const DPROMPT_SKIPFILE: UINT = 2; |
| pub const DPROMPT_BUFFERTOOSMALL: UINT = 3; |
| pub const DPROMPT_OUTOFMEMORY: UINT = 4; |
| extern "system" { |
| pub fn SetupSetDirectoryIdA( |
| InfHandle: HINF, |
| Id: DWORD, |
| Directory: PCSTR, |
| ) -> BOOL; |
| pub fn SetupSetDirectoryIdW( |
| InfHandle: HINF, |
| Id: DWORD, |
| Directory: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupSetDirectoryIdExA( |
| InfHandle: HINF, |
| Id: DWORD, |
| Directory: PCSTR, |
| Flags: DWORD, |
| Reserved1: DWORD, |
| Reserved2: PVOID, |
| ) -> BOOL; |
| pub fn SetupSetDirectoryIdExW( |
| InfHandle: HINF, |
| Id: DWORD, |
| Directory: PCWSTR, |
| Flags: DWORD, |
| Reserved1: DWORD, |
| Reserved2: PVOID, |
| ) -> BOOL; |
| } |
| pub const SETDIRID_NOT_FULL_PATH: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupGetSourceInfoA( |
| InfHandle: HINF, |
| SourceId: UINT, |
| InfoDesired: UINT, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupGetSourceInfoW( |
| InfHandle: HINF, |
| SourceId: UINT, |
| InfoDesired: UINT, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| } |
| pub const SRCINFO_PATH: UINT = 1; |
| pub const SRCINFO_TAGFILE: UINT = 2; |
| pub const SRCINFO_DESCRIPTION: UINT = 3; |
| pub const SRCINFO_FLAGS: UINT = 4; |
| pub const SRCINFO_TAGFILE2: UINT = 4; |
| pub const SRC_FLAGS_CABFILE: UINT = 0x0010; |
| extern "system" { |
| pub fn SetupInstallFileA( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| SourceFile: PCSTR, |
| SourcePathRoot: PCSTR, |
| DestinationName: PCSTR, |
| CopyStyle: DWORD, |
| CopyMsgHandler: PSP_FILE_CALLBACK_A, |
| Context: PVOID, |
| ) -> BOOL; |
| pub fn SetupInstallFileW( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| SourceFile: PCWSTR, |
| SourcePathRoot: PCWSTR, |
| DestinationName: PCWSTR, |
| CopyStyle: DWORD, |
| CopyMsgHandler: PSP_FILE_CALLBACK_W, |
| Context: PVOID, |
| ) -> BOOL; |
| pub fn SetupInstallFileExA( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| SourceFile: PCSTR, |
| SourcePathRoot: PCSTR, |
| DestinationName: PCSTR, |
| CopyStyle: DWORD, |
| CopyMsgHandler: PSP_FILE_CALLBACK_A, |
| Context: PVOID, |
| FileWasInUse: PBOOL, |
| ) -> BOOL; |
| pub fn SetupInstallFileExW( |
| InfHandle: HINF, |
| InfContext: PINFCONTEXT, |
| SourceFile: PCWSTR, |
| SourcePathRoot: PCWSTR, |
| DestinationName: PCWSTR, |
| CopyStyle: DWORD, |
| CopyMsgHandler: PSP_FILE_CALLBACK_W, |
| Context: PVOID, |
| FileWasInUse: PBOOL, |
| ) -> BOOL; |
| } |
| pub const SP_COPY_DELETESOURCE: DWORD = 0x0000001; |
| pub const SP_COPY_REPLACEONLY: DWORD = 0x0000002; |
| pub const SP_COPY_NEWER: DWORD = 0x0000004; |
| pub const SP_COPY_NEWER_OR_SAME: DWORD = SP_COPY_NEWER; |
| pub const SP_COPY_NOOVERWRITE: DWORD = 0x0000008; |
| pub const SP_COPY_NODECOMP: DWORD = 0x0000010; |
| pub const SP_COPY_LANGUAGEAWARE: DWORD = 0x0000020; |
| pub const SP_COPY_SOURCE_ABSOLUTE: DWORD = 0x0000040; |
| pub const SP_COPY_SOURCEPATH_ABSOLUTE: DWORD = 0x0000080; |
| pub const SP_COPY_IN_USE_NEEDS_REBOOT: DWORD = 0x0000100; |
| pub const SP_COPY_FORCE_IN_USE: DWORD = 0x0000200; |
| pub const SP_COPY_NOSKIP: DWORD = 0x0000400; |
| pub const SP_FLAG_CABINETCONTINUATION: DWORD = 0x0000800; |
| pub const SP_COPY_FORCE_NOOVERWRITE: DWORD = 0x0001000; |
| pub const SP_COPY_FORCE_NEWER: DWORD = 0x0002000; |
| pub const SP_COPY_WARNIFSKIP: DWORD = 0x0004000; |
| pub const SP_COPY_NOBROWSE: DWORD = 0x0008000; |
| pub const SP_COPY_NEWER_ONLY: DWORD = 0x0010000; |
| pub const SP_COPY_RESERVED: DWORD = 0x0020000; |
| pub const SP_COPY_OEMINF_CATALOG_ONLY: DWORD = 0x0040000; |
| pub const SP_COPY_REPLACE_BOOT_FILE: DWORD = 0x0080000; |
| pub const SP_COPY_NOPRUNE: DWORD = 0x0100000; |
| pub const SP_COPY_OEM_F6_INF: DWORD = 0x0200000; |
| pub const SP_COPY_ALREADYDECOMP: DWORD = 0x0400000; |
| pub const SP_COPY_WINDOWS_SIGNED: DWORD = 0x1000000; |
| pub const SP_COPY_PNPLOCKED: DWORD = 0x2000000; |
| pub const SP_COPY_IN_USE_TRY_RENAME: DWORD = 0x4000000; |
| pub const SP_COPY_INBOX_INF: DWORD = 0x8000000; |
| pub const SP_COPY_HARDLINK: DWORD = 0x10000000; |
| pub const SP_BACKUP_BACKUPPASS: DWORD = 0x00000001; |
| pub const SP_BACKUP_DEMANDPASS: DWORD = 0x00000002; |
| pub const SP_BACKUP_SPECIAL: DWORD = 0x00000004; |
| pub const SP_BACKUP_BOOTFILE: DWORD = 0x00000008; |
| extern "system" { |
| pub fn SetupOpenFileQueue() -> HSPFILEQ; |
| pub fn SetupCloseFileQueue( |
| QueueHandle: HSPFILEQ, |
| ) -> BOOL; |
| pub fn SetupSetFileQueueAlternatePlatformA( |
| QueueHandle: HSPFILEQ, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| AlternateDefaultCatalogFile: PCSTR, |
| ) -> BOOL; |
| pub fn SetupSetFileQueueAlternatePlatformW( |
| QueueHandle: HSPFILEQ, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| AlternateDefaultCatalogFile: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupSetPlatformPathOverrideA( |
| Override: PCSTR, |
| ) -> BOOL; |
| pub fn SetupSetPlatformPathOverrideW( |
| Override: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupQueueCopyA( |
| QueueHandle: HSPFILEQ, |
| SourceRootPath: PCSTR, |
| SourcePath: PCSTR, |
| SourceFilename: PCSTR, |
| SourceDescription: PCSTR, |
| SourceTagfile: PCSTR, |
| TargetDirectory: PCSTR, |
| TargetFilename: PCSTR, |
| CopyStyle: DWORD, |
| ) -> BOOL; |
| pub fn SetupQueueCopyW( |
| QueueHandle: HSPFILEQ, |
| SourceRootPath: PCWSTR, |
| SourcePath: PCWSTR, |
| SourceFilename: PCWSTR, |
| SourceDescription: PCWSTR, |
| SourceTagfile: PCWSTR, |
| TargetDirectory: PCWSTR, |
| TargetFilename: PCWSTR, |
| CopyStyle: DWORD, |
| ) -> BOOL; |
| pub fn SetupQueueCopyIndirectA( |
| CopyParams: PSP_FILE_COPY_PARAMS_A, |
| ) -> BOOL; |
| pub fn SetupQueueCopyIndirectW( |
| CopyParams: PSP_FILE_COPY_PARAMS_W, |
| ) -> BOOL; |
| pub fn SetupQueueDefaultCopyA( |
| QueueHandle: HSPFILEQ, |
| InfHandle: HINF, |
| SourceRootPath: PCSTR, |
| SourceFilename: PCSTR, |
| TargetFilename: PCSTR, |
| CopyStyle: DWORD, |
| ) -> BOOL; |
| pub fn SetupQueueDefaultCopyW( |
| QueueHandle: HSPFILEQ, |
| InfHandle: HINF, |
| SourceRootPath: PCWSTR, |
| SourceFilename: PCWSTR, |
| TargetFilename: PCWSTR, |
| CopyStyle: DWORD, |
| ) -> BOOL; |
| pub fn SetupQueueCopySectionA( |
| QueueHandle: HSPFILEQ, |
| SourceRootPath: PCSTR, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| Section: PCSTR, |
| CopyStyle: DWORD, |
| ) -> BOOL; |
| pub fn SetupQueueCopySectionW( |
| QueueHandle: HSPFILEQ, |
| SourceRootPath: PCWSTR, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| Section: PCWSTR, |
| CopyStyle: DWORD, |
| ) -> BOOL; |
| pub fn SetupQueueDeleteA( |
| QueueHandle: HSPFILEQ, |
| PathPart1: PCSTR, |
| PathPart2: PCSTR, |
| ) -> BOOL; |
| pub fn SetupQueueDeleteW( |
| QueueHandle: HSPFILEQ, |
| PathPart1: PCWSTR, |
| PathPart2: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupQueueDeleteSectionA( |
| QueueHandle: HSPFILEQ, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| Section: PCSTR, |
| ) -> BOOL; |
| pub fn SetupQueueDeleteSectionW( |
| QueueHandle: HSPFILEQ, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| Section: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupQueueRenameA( |
| QueueHandle: HSPFILEQ, |
| SourcePath: PCSTR, |
| SourceFilename: PCSTR, |
| TargetPath: PCSTR, |
| TargetFilename: PCSTR, |
| ) -> BOOL; |
| pub fn SetupQueueRenameW( |
| QueueHandle: HSPFILEQ, |
| SourcePath: PCWSTR, |
| SourceFilename: PCWSTR, |
| TargetPath: PCWSTR, |
| TargetFilename: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupQueueRenameSectionA( |
| QueueHandle: HSPFILEQ, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| Section: PCSTR, |
| ) -> BOOL; |
| pub fn SetupQueueRenameSectionW( |
| QueueHandle: HSPFILEQ, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| Section: PCWSTR, |
| ) -> BOOL; |
| pub fn SetupCommitFileQueueA( |
| Owner: HWND, |
| QueueHandle: HSPFILEQ, |
| MsgHandler: PSP_FILE_CALLBACK_A, |
| Context: PVOID, |
| ) -> BOOL; |
| pub fn SetupCommitFileQueueW( |
| Owner: HWND, |
| QueueHandle: HSPFILEQ, |
| MsgHandler: PSP_FILE_CALLBACK_W, |
| Context: PVOID, |
| ) -> BOOL; |
| pub fn SetupScanFileQueueA( |
| FileQueue: HSPFILEQ, |
| Flags: DWORD, |
| Window: HWND, |
| CallbackRoutine: PSP_FILE_CALLBACK_A, |
| CallbackContext: PVOID, |
| Result: PDWORD, |
| ) -> BOOL; |
| pub fn SetupScanFileQueueW( |
| FileQueue: HSPFILEQ, |
| Flags: DWORD, |
| Window: HWND, |
| CallbackRoutine: PSP_FILE_CALLBACK_W, |
| CallbackContext: PVOID, |
| Result: PDWORD, |
| ) -> BOOL; |
| } |
| pub const SPQ_SCAN_FILE_PRESENCE: DWORD = 0x00000001; |
| pub const SPQ_SCAN_FILE_VALIDITY: DWORD = 0x00000002; |
| pub const SPQ_SCAN_USE_CALLBACK: DWORD = 0x00000004; |
| pub const SPQ_SCAN_USE_CALLBACKEX: DWORD = 0x00000008; |
| pub const SPQ_SCAN_INFORM_USER: DWORD = 0x00000010; |
| pub const SPQ_SCAN_PRUNE_COPY_QUEUE: DWORD = 0x00000020; |
| pub const SPQ_SCAN_USE_CALLBACK_SIGNERINFO: DWORD = 0x00000040; |
| pub const SPQ_SCAN_PRUNE_DELREN: DWORD = 0x00000080; |
| pub const SPQ_SCAN_FILE_PRESENCE_WITHOUT_SOURCE: DWORD = 0x00000100; |
| pub const SPQ_SCAN_FILE_COMPARISON: DWORD = 0x00000200; |
| pub const SPQ_SCAN_ACTIVATE_DRP: DWORD = 0x00000400; |
| pub const SPQ_DELAYED_COPY: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupGetFileQueueCount( |
| FileQueue: HSPFILEQ, |
| SubQueueFileOp: UINT, |
| NumOperations: PUINT, |
| ) -> BOOL; |
| pub fn SetupGetFileQueueFlags( |
| FileQueue: HSPFILEQ, |
| Flags: PDWORD, |
| ) -> BOOL; |
| pub fn SetupSetFileQueueFlags( |
| FileQueue: HSPFILEQ, |
| FlagMask: DWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| } |
| pub const SPQ_FLAG_BACKUP_AWARE: DWORD = 0x00000001; |
| pub const SPQ_FLAG_ABORT_IF_UNSIGNED: DWORD = 0x00000002; |
| pub const SPQ_FLAG_FILES_MODIFIED: DWORD = 0x00000004; |
| pub const SPQ_FLAG_DO_SHUFFLEMOVE: DWORD = 0x00000008; |
| pub const SPQ_FLAG_VALID: DWORD = 0x0000000F; |
| pub const SPOST_NONE: DWORD = 0; |
| pub const SPOST_PATH: DWORD = 1; |
| pub const SPOST_URL: DWORD = 2; |
| pub const SPOST_MAX: DWORD = 3; |
| extern "system" { |
| pub fn SetupCopyOEMInfA( |
| SourceInfFileName: PCSTR, |
| OEMSourceMediaLocation: PCSTR, |
| OEMSourceMediaType: DWORD, |
| CopyStyle: DWORD, |
| DestinationInfFileName: PSTR, |
| DestinationInfFileNameSize: DWORD, |
| RequiredSize: PDWORD, |
| DestinationInfFileNameComponent: *mut PSTR, |
| ) -> BOOL; |
| pub fn SetupCopyOEMInfW( |
| SourceInfFileName: PCWSTR, |
| OEMSourceMediaLocation: PCWSTR, |
| OEMSourceMediaType: DWORD, |
| CopyStyle: DWORD, |
| DestinationInfFileName: PWSTR, |
| DestinationInfFileNameSize: DWORD, |
| RequiredSize: PDWORD, |
| DestinationInfFileNameComponent: *mut PWSTR, |
| ) -> BOOL; |
| } |
| pub const SUOI_FORCEDELETE: DWORD = 0x00000001; |
| pub const SUOI_INTERNAL1: DWORD = 0x00000002; |
| extern "system" { |
| pub fn SetupUninstallOEMInfA( |
| InfFileName: PCSTR, |
| Flags: DWORD, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupUninstallOEMInfW( |
| InfFileName: PCWSTR, |
| Flags: DWORD, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupUninstallNewlyCopiedInfs( |
| FileQueue: HSPFILEQ, |
| Flags: DWORD, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupCreateDiskSpaceListA( |
| Reserved1: PVOID, |
| Reserved2: DWORD, |
| Flags: UINT, |
| ) -> HDSKSPC; |
| pub fn SetupCreateDiskSpaceListW( |
| Reserved1: PVOID, |
| Reserved2: DWORD, |
| Flags: UINT, |
| ) -> HDSKSPC; |
| } |
| pub const SPDSL_IGNORE_DISK: UINT = 0x00000001; |
| pub const SPDSL_DISALLOW_NEGATIVE_ADJUST: UINT = 0x00000002; |
| extern "system" { |
| pub fn SetupDuplicateDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| Reserved1: PVOID, |
| Reserved2: DWORD, |
| Flags: UINT, |
| ) -> HDSKSPC; |
| pub fn SetupDuplicateDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| Reserved1: PVOID, |
| Reserved2: DWORD, |
| Flags: UINT, |
| ) -> HDSKSPC; |
| pub fn SetupDestroyDiskSpaceList( |
| DiskSpace: HDSKSPC, |
| ) -> BOOL; |
| pub fn SetupQueryDrivesInDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| ReturnBuffer: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupQueryDrivesInDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| ReturnBuffer: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupQuerySpaceRequiredOnDriveA( |
| DiskSpace: HDSKSPC, |
| DriveSpec: PCSTR, |
| SpaceRequired: *mut LONGLONG, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupQuerySpaceRequiredOnDriveW( |
| DiskSpace: HDSKSPC, |
| DriveSpec: PCWSTR, |
| SpaceRequired: *mut LONGLONG, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAdjustDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| DriveRoot: LPCSTR, |
| Amount: LONGLONG, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAdjustDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| DriveRoot: LPCWSTR, |
| Amount: LONGLONG, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAddToDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| TargetFilespec: PCSTR, |
| FileSize: LONGLONG, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAddToDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| TargetFilespec: PCWSTR, |
| FileSize: LONGLONG, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAddSectionToDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| SectionName: PCSTR, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAddSectionToDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| SectionName: PCWSTR, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAddInstallSectionToDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| LayoutInfHandle: HINF, |
| SectionName: PCSTR, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupAddInstallSectionToDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| LayoutInfHandle: HINF, |
| SectionName: PCWSTR, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupRemoveFromDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| TargetFilespec: PCSTR, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupRemoveFromDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| TargetFilespec: PCWSTR, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupRemoveSectionFromDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| SectionName: PCSTR, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupRemoveSectionFromDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| ListInfHandle: HINF, |
| SectionName: PCWSTR, |
| Operation: UINT, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupRemoveInstallSectionFromDiskSpaceListA( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| LayoutInfHandle: HINF, |
| SectionName: PCSTR, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupRemoveInstallSectionFromDiskSpaceListW( |
| DiskSpace: HDSKSPC, |
| InfHandle: HINF, |
| LayoutInfHandle: HINF, |
| SectionName: PCWSTR, |
| Reserved1: PVOID, |
| Reserved2: UINT, |
| ) -> BOOL; |
| pub fn SetupIterateCabinetA( |
| CabinetFile: PCSTR, |
| Reserved: DWORD, |
| MsgHandler: PSP_FILE_CALLBACK_A, |
| Context: PVOID, |
| ) -> BOOL; |
| pub fn SetupIterateCabinetW( |
| CabinetFile: PCWSTR, |
| Reserved: DWORD, |
| MsgHandler: PSP_FILE_CALLBACK_W, |
| Context: PVOID, |
| ) -> BOOL; |
| pub fn SetupPromptReboot( |
| FileQueue: HSPFILEQ, |
| Owner: HWND, |
| ScanOnly: BOOL, |
| ) -> INT; |
| } |
| pub const SPFILEQ_FILE_IN_USE: INT = 0x00000001; |
| pub const SPFILEQ_REBOOT_RECOMMENDED: INT = 0x00000002; |
| pub const SPFILEQ_REBOOT_IN_PROGRESS: INT = 0x00000004; |
| extern "system" { |
| pub fn SetupInitDefaultQueueCallback( |
| OwnerWindow: HWND, |
| ) -> PVOID; |
| pub fn SetupInitDefaultQueueCallbackEx( |
| OwnerWindow: HWND, |
| AlternateProgressWindow: HWND, |
| ProgressMessage: UINT, |
| Reserved1: DWORD, |
| Reserved2: PVOID, |
| ) -> PVOID; |
| pub fn SetupTermDefaultQueueCallback( |
| Context: PVOID, |
| ) -> (); |
| pub fn SetupDefaultQueueCallbackA( |
| Context: PVOID, |
| Notification: UINT, |
| Param1: UINT_PTR, |
| Param2: UINT_PTR, |
| ) -> UINT; |
| pub fn SetupDefaultQueueCallbackW( |
| Context: PVOID, |
| Notification: UINT, |
| Param1: UINT_PTR, |
| Param2: UINT_PTR, |
| ) -> UINT; |
| } |
| pub const FLG_ADDREG_DELREG_BIT: DWORD = 0x00008000; |
| pub const FLG_ADDREG_BINVALUETYPE: DWORD = 0x00000001; |
| pub const FLG_ADDREG_NOCLOBBER: DWORD = 0x00000002; |
| pub const FLG_ADDREG_DELVAL: DWORD = 0x00000004; |
| pub const FLG_ADDREG_APPEND: DWORD = 0x00000008; |
| pub const FLG_ADDREG_KEYONLY: DWORD = 0x00000010; |
| pub const FLG_ADDREG_OVERWRITEONLY: DWORD = 0x00000020; |
| pub const FLG_ADDREG_64BITKEY: DWORD = 0x00001000; |
| pub const FLG_ADDREG_KEYONLY_COMMON: DWORD = 0x00002000; |
| pub const FLG_ADDREG_32BITKEY: DWORD = 0x00004000; |
| pub const FLG_ADDREG_TYPE_MASK: DWORD = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE; |
| pub const FLG_ADDREG_TYPE_SZ: DWORD = 0x00000000; |
| pub const FLG_ADDREG_TYPE_MULTI_SZ: DWORD = 0x00010000; |
| pub const FLG_ADDREG_TYPE_EXPAND_SZ: DWORD = 0x00020000; |
| pub const FLG_ADDREG_TYPE_BINARY: DWORD = 0x00000000 | FLG_ADDREG_BINVALUETYPE; |
| pub const FLG_ADDREG_TYPE_DWORD: DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE; |
| pub const FLG_ADDREG_TYPE_NONE: DWORD = 0x00020000 | FLG_ADDREG_BINVALUETYPE; |
| pub const FLG_DELREG_VALUE: DWORD = 0x00000000; |
| pub const FLG_DELREG_TYPE_MASK: DWORD = FLG_ADDREG_TYPE_MASK; |
| pub const FLG_DELREG_TYPE_SZ: DWORD = FLG_ADDREG_TYPE_SZ; |
| pub const FLG_DELREG_TYPE_MULTI_SZ: DWORD = FLG_ADDREG_TYPE_MULTI_SZ; |
| pub const FLG_DELREG_TYPE_EXPAND_SZ: DWORD = FLG_ADDREG_TYPE_EXPAND_SZ; |
| pub const FLG_DELREG_TYPE_BINARY: DWORD = FLG_ADDREG_TYPE_BINARY; |
| pub const FLG_DELREG_TYPE_DWORD: DWORD = FLG_ADDREG_TYPE_DWORD; |
| pub const FLG_DELREG_TYPE_NONE: DWORD = FLG_ADDREG_TYPE_NONE; |
| pub const FLG_DELREG_64BITKEY: DWORD = FLG_ADDREG_64BITKEY; |
| pub const FLG_DELREG_KEYONLY_COMMON: DWORD = FLG_ADDREG_KEYONLY_COMMON; |
| pub const FLG_DELREG_32BITKEY: DWORD = FLG_ADDREG_32BITKEY; |
| pub const FLG_DELREG_OPERATION_MASK: DWORD = 0x000000FE; |
| pub const FLG_DELREG_MULTI_SZ_DELSTRING: DWORD = FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT |
| | 0x00000002; |
| pub const FLG_BITREG_CLEARBITS: DWORD = 0x00000000; |
| pub const FLG_BITREG_SETBITS: DWORD = 0x00000001; |
| pub const FLG_BITREG_64BITKEY: DWORD = 0x00001000; |
| pub const FLG_BITREG_32BITKEY: DWORD = 0x00004000; |
| pub const FLG_INI2REG_64BITKEY: DWORD = 0x00001000; |
| pub const FLG_INI2REG_32BITKEY: DWORD = 0x00004000; |
| pub const FLG_REGSVR_DLLREGISTER: DWORD = 0x00000001; |
| pub const FLG_REGSVR_DLLINSTALL: DWORD = 0x00000002; |
| pub const FLG_PROFITEM_CURRENTUSER: DWORD = 0x00000001; |
| pub const FLG_PROFITEM_DELETE: DWORD = 0x00000002; |
| pub const FLG_PROFITEM_GROUP: DWORD = 0x00000004; |
| pub const FLG_PROFITEM_CSIDL: DWORD = 0x00000008; |
| pub const FLG_ADDPROPERTY_NOCLOBBER: DWORD = 0x00000001; |
| pub const FLG_ADDPROPERTY_OVERWRITEONLY: DWORD = 0x00000002; |
| pub const FLG_ADDPROPERTY_APPEND: DWORD = 0x00000004; |
| pub const FLG_ADDPROPERTY_OR: DWORD = 0x00000008; |
| pub const FLG_ADDPROPERTY_AND: DWORD = 0x00000010; |
| pub const FLG_DELPROPERTY_MULTI_SZ_DELSTRING: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupInstallFromInfSectionA( |
| Owner: HWND, |
| InfHandle: HINF, |
| SectionName: PCSTR, |
| Flags: UINT, |
| RelativeKeyRoot: HKEY, |
| SourceRootPath: PCSTR, |
| CopyFlags: UINT, |
| MsgHandler: PSP_FILE_CALLBACK_A, |
| Context: PVOID, |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupInstallFromInfSectionW( |
| Owner: HWND, |
| InfHandle: HINF, |
| SectionName: PCWSTR, |
| Flags: UINT, |
| RelativeKeyRoot: HKEY, |
| SourceRootPath: PCWSTR, |
| CopyFlags: UINT, |
| MsgHandler: PSP_FILE_CALLBACK_W, |
| Context: PVOID, |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| } |
| pub const SPINST_LOGCONFIG: UINT = 0x00000001; |
| pub const SPINST_INIFILES: UINT = 0x00000002; |
| pub const SPINST_REGISTRY: UINT = 0x00000004; |
| pub const SPINST_INI2REG: UINT = 0x00000008; |
| pub const SPINST_FILES: UINT = 0x00000010; |
| pub const SPINST_BITREG: UINT = 0x00000020; |
| pub const SPINST_REGSVR: UINT = 0x00000040; |
| pub const SPINST_UNREGSVR: UINT = 0x00000080; |
| pub const SPINST_PROFILEITEMS: UINT = 0x00000100; |
| pub const SPINST_COPYINF: UINT = 0x00000200; |
| pub const SPINST_PROPERTIES: UINT = 0x00000400; |
| pub const SPINST_ALL: UINT = 0x000007ff; |
| pub const SPINST_SINGLESECTION: UINT = 0x00010000; |
| pub const SPINST_LOGCONFIG_IS_FORCED: UINT = 0x00020000; |
| pub const SPINST_LOGCONFIGS_ARE_OVERRIDES: UINT = 0x00040000; |
| pub const SPINST_REGISTERCALLBACKAWARE: UINT = 0x00080000; |
| pub const SPINST_DEVICEINSTALL: UINT = 0x00100000; |
| extern "system" { |
| pub fn SetupInstallFilesFromInfSectionA( |
| InfHandle: HINF, |
| LayoutInfHandle: HINF, |
| FileQueue: HSPFILEQ, |
| SectionName: PCSTR, |
| SourceRootPath: PCSTR, |
| CopyFlags: UINT, |
| ) -> BOOL; |
| pub fn SetupInstallFilesFromInfSectionW( |
| InfHandle: HINF, |
| LayoutInfHandle: HINF, |
| FileQueue: HSPFILEQ, |
| SectionName: PCWSTR, |
| SourceRootPath: PCWSTR, |
| CopyFlags: UINT, |
| ) -> BOOL; |
| } |
| pub const SPSVCINST_TAGTOFRONT: DWORD = 0x00000001; |
| pub const SPSVCINST_ASSOCSERVICE: DWORD = 0x00000002; |
| pub const SPSVCINST_DELETEEVENTLOGENTRY: DWORD = 0x00000004; |
| pub const SPSVCINST_NOCLOBBER_DISPLAYNAME: DWORD = 0x00000008; |
| pub const SPSVCINST_NOCLOBBER_STARTTYPE: DWORD = 0x00000010; |
| pub const SPSVCINST_NOCLOBBER_ERRORCONTROL: DWORD = 0x00000020; |
| pub const SPSVCINST_NOCLOBBER_LOADORDERGROUP: DWORD = 0x00000040; |
| pub const SPSVCINST_NOCLOBBER_DEPENDENCIES: DWORD = 0x00000080; |
| pub const SPSVCINST_NOCLOBBER_DESCRIPTION: DWORD = 0x00000100; |
| pub const SPSVCINST_STOPSERVICE: DWORD = 0x00000200; |
| pub const SPSVCINST_CLOBBER_SECURITY: DWORD = 0x00000400; |
| pub const SPSVCINST_STARTSERVICE: DWORD = 0x00000800; |
| pub const SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES: DWORD = 0x00001000; |
| extern "system" { |
| pub fn SetupInstallServicesFromInfSectionA( |
| InfHandle: HINF, |
| SectionName: PCSTR, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupInstallServicesFromInfSectionW( |
| InfHandle: HINF, |
| SectionName: PCWSTR, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupInstallServicesFromInfSectionExA( |
| InfHandle: HINF, |
| SectionName: PCSTR, |
| Flags: DWORD, |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Reserved1: PVOID, |
| Reserved2: PVOID, |
| ) -> BOOL; |
| pub fn SetupInstallServicesFromInfSectionExW( |
| InfHandle: HINF, |
| SectionName: PCWSTR, |
| Flags: DWORD, |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Reserved1: PVOID, |
| Reserved2: PVOID, |
| ) -> BOOL; |
| pub fn InstallHinfSectionA( |
| Window: HWND, |
| ModuleHandle: HINSTANCE, |
| CommandLine: PCSTR, |
| ShowCommand: INT, |
| ) -> (); |
| pub fn InstallHinfSectionW( |
| Window: HWND, |
| ModuleHandle: HINSTANCE, |
| CommandLine: PCWSTR, |
| ShowCommand: INT, |
| ) -> (); |
| } |
| pub type HSPFILELOG = PVOID; |
| extern "system" { |
| pub fn SetupInitializeFileLogA( |
| LogFileName: PCSTR, |
| Flags: DWORD, |
| ) -> HSPFILELOG; |
| pub fn SetupInitializeFileLogW( |
| LogFileName: PCWSTR, |
| Flags: DWORD, |
| ) -> HSPFILELOG; |
| } |
| pub const SPFILELOG_SYSTEMLOG: DWORD = 0x00000001; |
| pub const SPFILELOG_FORCENEW: DWORD = 0x00000002; |
| pub const SPFILELOG_QUERYONLY: DWORD = 0x00000004; |
| extern "system" { |
| pub fn SetupTerminateFileLog( |
| FileLogHandle: HSPFILELOG, |
| ) -> BOOL; |
| pub fn SetupLogFileA( |
| FileLogHandle: HSPFILELOG, |
| LogSectionName: PCSTR, |
| SourceFilename: PCSTR, |
| TargetFilename: PCSTR, |
| Checksum: DWORD, |
| DiskTagfile: PCSTR, |
| DiskDescription: PCSTR, |
| OtherInfo: PCSTR, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupLogFileW( |
| FileLogHandle: HSPFILELOG, |
| LogSectionName: PCWSTR, |
| SourceFilename: PCWSTR, |
| TargetFilename: PCWSTR, |
| Checksum: DWORD, |
| DiskTagfile: PCWSTR, |
| DiskDescription: PCWSTR, |
| OtherInfo: PCWSTR, |
| Flags: DWORD, |
| ) -> BOOL; |
| } |
| pub const SPFILELOG_OEMFILE: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupRemoveFileLogEntryA( |
| FileLogHandle: HSPFILELOG, |
| LogSectionName: PCSTR, |
| TargetFilename: PCSTR, |
| ) -> BOOL; |
| pub fn SetupRemoveFileLogEntryW( |
| FileLogHandle: HSPFILELOG, |
| LogSectionName: PCWSTR, |
| TargetFilename: PCWSTR, |
| ) -> BOOL; |
| } |
| ENUM!{enum SetupFileLogInfo { |
| SetupFileLogSourceFilename, |
| SetupFileLogChecksum, |
| SetupFileLogDiskTagfile, |
| SetupFileLogDiskDescription, |
| SetupFileLogOtherInfo, |
| SetupFileLogMax, |
| }} |
| extern "system" { |
| pub fn SetupQueryFileLogA( |
| FileLogHandle: HSPFILELOG, |
| LogSectionName: PCSTR, |
| TargetFilename: PCSTR, |
| DesiredInfo: SetupFileLogInfo, |
| DataOut: PSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupQueryFileLogW( |
| FileLogHandle: HSPFILELOG, |
| LogSectionName: PCWSTR, |
| TargetFilename: PCWSTR, |
| DesiredInfo: SetupFileLogInfo, |
| DataOut: PWSTR, |
| ReturnBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| } |
| pub type LogSeverity = DWORD; |
| pub const LogSevInformation: LogSeverity = 0x00000000; |
| pub const LogSevWarning: LogSeverity = 0x00000001; |
| pub const LogSevError: LogSeverity = 0x00000002; |
| pub const LogSevFatalError: LogSeverity = 0x00000003; |
| pub const LogSevMaximum: LogSeverity = 0x00000004; |
| extern "system" { |
| pub fn SetupOpenLog( |
| Erase: BOOL, |
| ) -> BOOL; |
| pub fn SetupLogErrorA( |
| MessageString: LPCSTR, |
| Severity: LogSeverity, |
| ) -> BOOL; |
| pub fn SetupLogErrorW( |
| MessageString: LPCWSTR, |
| Severity: LogSeverity, |
| ) -> BOOL; |
| pub fn SetupCloseLog() -> (); |
| pub fn SetupGetThreadLogToken() -> SP_LOG_TOKEN; |
| pub fn SetupSetThreadLogToken( |
| LogToken: SP_LOG_TOKEN, |
| ) -> (); |
| } |
| //pub fn SetupWriteTextLog() -> (); |
| //pub fn SetupWriteTextLogError() -> (); |
| extern "system" { |
| pub fn SetupWriteTextLogInfLine( |
| LogToken: SP_LOG_TOKEN, |
| Flags: DWORD, |
| InfHandle: HINF, |
| Context: PINFCONTEXT, |
| ) -> (); |
| pub fn SetupGetBackupInformationA( |
| QueueHandle: HSPFILEQ, |
| BackupParams: PSP_BACKUP_QUEUE_PARAMS_A, |
| ) -> BOOL; |
| pub fn SetupGetBackupInformationW( |
| QueueHandle: HSPFILEQ, |
| BackupParams: PSP_BACKUP_QUEUE_PARAMS_W, |
| ) -> BOOL; |
| pub fn SetupPrepareQueueForRestoreA( |
| QueueHandle: HSPFILEQ, |
| BackupPath: PCSTR, |
| RestoreFlags: DWORD, |
| ) -> BOOL; |
| pub fn SetupPrepareQueueForRestoreW( |
| QueueHandle: HSPFILEQ, |
| BackupPath: PCWSTR, |
| RestoreFlags: DWORD, |
| ) -> BOOL; |
| pub fn SetupSetNonInteractiveMode( |
| NonInteractiveFlag: BOOL, |
| ) -> BOOL; |
| pub fn SetupGetNonInteractiveMode() -> BOOL; |
| pub fn SetupDiCreateDeviceInfoList( |
| ClassGuid: *const GUID, |
| hwndParent: HWND, |
| ) -> HDEVINFO; |
| pub fn SetupDiCreateDeviceInfoListExA( |
| ClassGuid: *const GUID, |
| hwndParent: HWND, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> HDEVINFO; |
| pub fn SetupDiCreateDeviceInfoListExW( |
| ClassGuid: *const GUID, |
| hwndParent: HWND, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> HDEVINFO; |
| pub fn SetupDiGetDeviceInfoListClass( |
| DeviceInfoSet: HDEVINFO, |
| ClassGuid: LPGUID, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInfoListDetailA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_A, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInfoListDetailW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_W, |
| ) -> BOOL; |
| } |
| pub const DICD_GENERATE_ID: DWORD = 0x00000001; |
| pub const DICD_INHERIT_CLASSDRVS: DWORD = 0x00000002; |
| extern "system" { |
| pub fn SetupDiCreateDeviceInfoA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceName: PCSTR, |
| ClassGuid: *const GUID, |
| DeviceDescription: PCSTR, |
| hwndParent: HWND, |
| CreationFlags: DWORD, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiCreateDeviceInfoW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceName: PCWSTR, |
| ClassGuid: *const GUID, |
| DeviceDescription: PCWSTR, |
| hwndParent: HWND, |
| CreationFlags: DWORD, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| } |
| pub const DIOD_INHERIT_CLASSDRVS: DWORD = 0x00000002; |
| pub const DIOD_CANCEL_REMOVE: DWORD = 0x00000004; |
| extern "system" { |
| pub fn SetupDiOpenDeviceInfoA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInstanceId: PCSTR, |
| hwndParent: HWND, |
| OpenFlags: DWORD, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiOpenDeviceInfoW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInstanceId: PCWSTR, |
| hwndParent: HWND, |
| OpenFlags: DWORD, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInstanceIdA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DeviceInstanceId: PSTR, |
| DeviceInstanceIdSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInstanceIdW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DeviceInstanceId: PWSTR, |
| DeviceInstanceIdSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiDeleteDeviceInfo( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiEnumDeviceInfo( |
| DeviceInfoSet: HDEVINFO, |
| MemberIndex: DWORD, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiDestroyDeviceInfoList( |
| DeviceInfoSet: HDEVINFO, |
| ) -> BOOL; |
| pub fn SetupDiEnumDeviceInterfaces( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| InterfaceClassGuid: *const GUID, |
| MemberIndex: DWORD, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| pub fn SetupDiCreateDeviceInterfaceA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| InterfaceClassGuid: *const GUID, |
| ReferenceString: PCSTR, |
| CreationFlags: DWORD, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| pub fn SetupDiCreateDeviceInterfaceW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| InterfaceClassGuid: *const GUID, |
| ReferenceString: PCWSTR, |
| CreationFlags: DWORD, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| } |
| pub const DIODI_NO_ADD: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupDiOpenDeviceInterfaceA( |
| DeviceInfoSet: HDEVINFO, |
| DevicePath: PCSTR, |
| OpenFlags: DWORD, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| pub fn SetupDiOpenDeviceInterfaceW( |
| DeviceInfoSet: HDEVINFO, |
| DevicePath: PCWSTR, |
| OpenFlags: DWORD, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInterfaceAlias( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| AliasInterfaceClassGuid: *const GUID, |
| AliasDeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| pub fn SetupDiDeleteDeviceInterfaceData( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| pub fn SetupDiRemoveDeviceInterface( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInterfaceDetailA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A, |
| DeviceInterfaceDetailDataSize: DWORD, |
| RequiredSize: PDWORD, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInterfaceDetailW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W, |
| DeviceInterfaceDetailDataSize: DWORD, |
| RequiredSize: PDWORD, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiInstallDeviceInterfaces( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiSetDeviceInterfaceDefault( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Flags: DWORD, |
| Reserved: PVOID, |
| ) -> BOOL; |
| } |
| pub const SPRDI_FIND_DUPS: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupDiRegisterDeviceInfo( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Flags: DWORD, |
| CompareProc: PSP_DETSIG_CMPPROC, |
| CompareContext: PVOID, |
| DupDeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| } |
| pub const SPDIT_NODRIVER: DWORD = 0x00000000; |
| pub const SPDIT_CLASSDRIVER: DWORD = 0x00000001; |
| pub const SPDIT_COMPATDRIVER: DWORD = 0x00000002; |
| extern "system" { |
| pub fn SetupDiBuildDriverInfoList( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverType: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiCancelDriverInfoSearch( |
| DeviceInfoSet: HDEVINFO, |
| ) -> BOOL; |
| pub fn SetupDiEnumDriverInfoA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverType: DWORD, |
| MemberIndex: DWORD, |
| DriverInfoData: PSP_DRVINFO_DATA_A, |
| ) -> BOOL; |
| pub fn SetupDiEnumDriverInfoW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverType: DWORD, |
| MemberIndex: DWORD, |
| DriverInfoData: PSP_DRVINFO_DATA_W, |
| ) -> BOOL; |
| pub fn SetupDiGetSelectedDriverA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_A, |
| ) -> BOOL; |
| pub fn SetupDiGetSelectedDriverW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_W, |
| ) -> BOOL; |
| pub fn SetupDiSetSelectedDriverA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_A, |
| ) -> BOOL; |
| pub fn SetupDiSetSelectedDriverW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_W, |
| ) -> BOOL; |
| pub fn SetupDiGetDriverInfoDetailA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_A, |
| DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_A, |
| DriverInfoDetailDataSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetDriverInfoDetailW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_W, |
| DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_W, |
| DriverInfoDetailDataSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiDestroyDriverInfoList( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverType: DWORD, |
| ) -> BOOL; |
| } |
| pub const DIGCF_DEFAULT: DWORD = 0x00000001; |
| pub const DIGCF_PRESENT: DWORD = 0x00000002; |
| pub const DIGCF_ALLCLASSES: DWORD = 0x00000004; |
| pub const DIGCF_PROFILE: DWORD = 0x00000008; |
| pub const DIGCF_DEVICEINTERFACE: DWORD = 0x00000010; |
| extern "system" { |
| pub fn SetupDiGetClassDevsA( |
| ClassGuid: *const GUID, |
| Enumerator: PCSTR, |
| hwndParent: HWND, |
| Flags: DWORD, |
| ) -> HDEVINFO; |
| pub fn SetupDiGetClassDevsW( |
| ClassGuid: *const GUID, |
| Enumerator: PCWSTR, |
| hwndParent: HWND, |
| Flags: DWORD, |
| ) -> HDEVINFO; |
| pub fn SetupDiGetClassDevsExA( |
| ClassGuid: *const GUID, |
| Enumerator: PCSTR, |
| hwndParent: HWND, |
| Flags: DWORD, |
| DeviceInfoSet: HDEVINFO, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> HDEVINFO; |
| pub fn SetupDiGetClassDevsExW( |
| ClassGuid: *const GUID, |
| Enumerator: PCWSTR, |
| hwndParent: HWND, |
| Flags: DWORD, |
| DeviceInfoSet: HDEVINFO, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> HDEVINFO; |
| pub fn SetupDiGetINFClassA( |
| InfName: PCSTR, |
| ClassGuid: LPGUID, |
| ClassName: PSTR, |
| ClassNameSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetINFClassW( |
| InfName: PCWSTR, |
| ClassGuid: LPGUID, |
| ClassName: PWSTR, |
| ClassNameSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| } |
| pub const DIBCI_NOINSTALLCLASS: DWORD = 0x00000001; |
| pub const DIBCI_NODISPLAYCLASS: DWORD = 0x00000002; |
| extern "system" { |
| pub fn SetupDiBuildClassInfoList( |
| Flags: DWORD, |
| ClassGuidList: LPGUID, |
| ClassGuidListSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiBuildClassInfoListExA( |
| Flags: DWORD, |
| ClassGuidList: LPGUID, |
| ClassGuidListSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiBuildClassInfoListExW( |
| Flags: DWORD, |
| ClassGuidList: LPGUID, |
| ClassGuidListSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetClassDescriptionA( |
| ClassGuid: *const GUID, |
| ClassDescription: PSTR, |
| ClassDescriptionSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetClassDescriptionW( |
| ClassGuid: *const GUID, |
| ClassDescription: PWSTR, |
| ClassDescriptionSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetClassDescriptionExA( |
| ClassGuid: *const GUID, |
| ClassDescription: PSTR, |
| ClassDescriptionSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetClassDescriptionExW( |
| ClassGuid: *const GUID, |
| ClassDescription: PWSTR, |
| ClassDescriptionSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiCallClassInstaller( |
| InstallFunction: DI_FUNCTION, |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiSelectDevice( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiSelectBestCompatDrv( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiInstallDevice( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiInstallDriverFiles( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiRegisterCoDeviceInstallers( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiRemoveDevice( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiUnremoveDevice( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiRestartDevices( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiChangeState( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiInstallClassA( |
| hwndParent: HWND, |
| InfFileName: PCSTR, |
| Flags: DWORD, |
| FileQueue: HSPFILEQ, |
| ) -> BOOL; |
| pub fn SetupDiInstallClassW( |
| hwndParent: HWND, |
| InfFileName: PCWSTR, |
| Flags: DWORD, |
| FileQueue: HSPFILEQ, |
| ) -> BOOL; |
| pub fn SetupDiInstallClassExA( |
| hwndParent: HWND, |
| InfFileName: PCSTR, |
| Flags: DWORD, |
| FileQueue: HSPFILEQ, |
| InterfaceClassGuid: *const GUID, |
| Reserved1: PVOID, |
| Reserved2: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiInstallClassExW( |
| hwndParent: HWND, |
| InfFileName: PCWSTR, |
| Flags: DWORD, |
| FileQueue: HSPFILEQ, |
| InterfaceClassGuid: *const GUID, |
| Reserved1: PVOID, |
| Reserved2: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiOpenClassRegKey( |
| ClassGuid: *const GUID, |
| samDesired: REGSAM, |
| ) -> HKEY; |
| } |
| pub const DIOCR_INSTALLER: DWORD = 0x00000001; |
| pub const DIOCR_INTERFACE: DWORD = 0x00000002; |
| extern "system" { |
| pub fn SetupDiOpenClassRegKeyExA( |
| ClassGuid: *const GUID, |
| samDesired: REGSAM, |
| Flags: DWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> HKEY; |
| pub fn SetupDiOpenClassRegKeyExW( |
| ClassGuid: *const GUID, |
| samDesired: REGSAM, |
| Flags: DWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> HKEY; |
| pub fn SetupDiCreateDeviceInterfaceRegKeyA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| Reserved: DWORD, |
| samDesired: REGSAM, |
| InfHandle: HINF, |
| InfSectionName: PCSTR, |
| ) -> HKEY; |
| pub fn SetupDiCreateDeviceInterfaceRegKeyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| Reserved: DWORD, |
| samDesired: REGSAM, |
| InfHandle: HINF, |
| InfSectionName: PCWSTR, |
| ) -> HKEY; |
| pub fn SetupDiOpenDeviceInterfaceRegKey( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| Reserved: DWORD, |
| samDesired: REGSAM, |
| ) -> HKEY; |
| pub fn SetupDiDeleteDeviceInterfaceRegKey( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| Reserved: DWORD, |
| ) -> BOOL; |
| } |
| pub const DIREG_DEV: DWORD = 0x00000001; |
| pub const DIREG_DRV: DWORD = 0x00000002; |
| pub const DIREG_BOTH: DWORD = 0x00000004; |
| extern "system" { |
| pub fn SetupDiCreateDevRegKeyA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Scope: DWORD, |
| HwProfile: DWORD, |
| KeyType: DWORD, |
| InfHandle: HINF, |
| InfSectionName: PCSTR, |
| ) -> HKEY; |
| pub fn SetupDiCreateDevRegKeyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Scope: DWORD, |
| HwProfile: DWORD, |
| KeyType: DWORD, |
| InfHandle: HINF, |
| InfSectionName: PCWSTR, |
| ) -> HKEY; |
| pub fn SetupDiOpenDevRegKey( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Scope: DWORD, |
| HwProfile: DWORD, |
| KeyType: DWORD, |
| samDesired: REGSAM, |
| ) -> HKEY; |
| pub fn SetupDiDeleteDevRegKey( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Scope: DWORD, |
| HwProfile: DWORD, |
| KeyType: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetHwProfileList( |
| HwProfileList: PDWORD, |
| HwProfileListSize: DWORD, |
| RequiredSize: PDWORD, |
| CurrentlyActiveIndex: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetHwProfileListExA( |
| HwProfileList: PDWORD, |
| HwProfileListSize: DWORD, |
| RequiredSize: PDWORD, |
| CurrentlyActiveIndex: PDWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetHwProfileListExW( |
| HwProfileList: PDWORD, |
| HwProfileListSize: DWORD, |
| RequiredSize: PDWORD, |
| CurrentlyActiveIndex: PDWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetDevicePropertyKeys( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| PropertyKeyArray: *mut DEVPROPKEY, |
| PropertyKeyCount: DWORD, |
| RequiredPropertyKeyCount: PDWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetDevicePropertyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: *mut DEVPROPTYPE, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiSetDevicePropertyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: DEVPROPTYPE, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInterfacePropertyKeys( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| PropertyKeyArray: *mut DEVPROPKEY, |
| PropertyKeyCount: DWORD, |
| RequiredPropertyKeyCount: PDWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInterfacePropertyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: *mut DEVPROPTYPE, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiSetDeviceInterfacePropertyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: DEVPROPTYPE, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| } |
| pub const DICLASSPROP_INSTALLER: DWORD = 0x00000001; |
| pub const DICLASSPROP_INTERFACE: DWORD = 0x00000002; |
| extern "system" { |
| pub fn SetupDiGetClassPropertyKeys( |
| ClassGuid: *const GUID, |
| PropertyKeyArray: *mut DEVPROPKEY, |
| PropertyKeyCount: DWORD, |
| RequiredPropertyKeyCount: PDWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetClassPropertyKeysExW( |
| ClassGuid: *const GUID, |
| PropertyKeyArray: *mut DEVPROPKEY, |
| PropertyKeyCount: DWORD, |
| RequiredPropertyKeyCount: PDWORD, |
| Flags: DWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetClassPropertyW( |
| ClassGuid: *const GUID, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: *mut DEVPROPTYPE, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetClassPropertyExW( |
| ClassGuid: *const GUID, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: *mut DEVPROPTYPE, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| Flags: DWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiSetClassPropertyW( |
| ClassGuid: *const GUID, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: DEVPROPTYPE, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiSetClassPropertyExW( |
| ClassGuid: *const GUID, |
| PropertyKey: *const DEVPROPKEY, |
| PropertyType: DEVPROPTYPE, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| Flags: DWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| } |
| pub const SPDRP_DEVICEDESC: DWORD = 0x00000000; |
| pub const SPDRP_HARDWAREID: DWORD = 0x00000001; |
| pub const SPDRP_COMPATIBLEIDS: DWORD = 0x00000002; |
| pub const SPDRP_UNUSED0: DWORD = 0x00000003; |
| pub const SPDRP_SERVICE: DWORD = 0x00000004; |
| pub const SPDRP_UNUSED1: DWORD = 0x00000005; |
| pub const SPDRP_UNUSED2: DWORD = 0x00000006; |
| pub const SPDRP_CLASS: DWORD = 0x00000007; |
| pub const SPDRP_CLASSGUID: DWORD = 0x00000008; |
| pub const SPDRP_DRIVER: DWORD = 0x00000009; |
| pub const SPDRP_CONFIGFLAGS: DWORD = 0x0000000A; |
| pub const SPDRP_MFG: DWORD = 0x0000000B; |
| pub const SPDRP_FRIENDLYNAME: DWORD = 0x0000000C; |
| pub const SPDRP_LOCATION_INFORMATION: DWORD = 0x0000000D; |
| pub const SPDRP_PHYSICAL_DEVICE_OBJECT_NAME: DWORD = 0x0000000E; |
| pub const SPDRP_CAPABILITIES: DWORD = 0x0000000F; |
| pub const SPDRP_UI_NUMBER: DWORD = 0x00000010; |
| pub const SPDRP_UPPERFILTERS: DWORD = 0x00000011; |
| pub const SPDRP_LOWERFILTERS: DWORD = 0x00000012; |
| pub const SPDRP_BUSTYPEGUID: DWORD = 0x00000013; |
| pub const SPDRP_LEGACYBUSTYPE: DWORD = 0x00000014; |
| pub const SPDRP_BUSNUMBER: DWORD = 0x00000015; |
| pub const SPDRP_ENUMERATOR_NAME: DWORD = 0x00000016; |
| pub const SPDRP_SECURITY: DWORD = 0x00000017; |
| pub const SPDRP_SECURITY_SDS: DWORD = 0x00000018; |
| pub const SPDRP_DEVTYPE: DWORD = 0x00000019; |
| pub const SPDRP_EXCLUSIVE: DWORD = 0x0000001A; |
| pub const SPDRP_CHARACTERISTICS: DWORD = 0x0000001B; |
| pub const SPDRP_ADDRESS: DWORD = 0x0000001C; |
| pub const SPDRP_UI_NUMBER_DESC_FORMAT: DWORD = 0x0000001D; |
| pub const SPDRP_DEVICE_POWER_DATA: DWORD = 0x0000001E; |
| pub const SPDRP_REMOVAL_POLICY: DWORD = 0x0000001F; |
| pub const SPDRP_REMOVAL_POLICY_HW_DEFAULT: DWORD = 0x00000020; |
| pub const SPDRP_REMOVAL_POLICY_OVERRIDE: DWORD = 0x00000021; |
| pub const SPDRP_INSTALL_STATE: DWORD = 0x00000022; |
| pub const SPDRP_LOCATION_PATHS: DWORD = 0x00000023; |
| pub const SPDRP_BASE_CONTAINERID: DWORD = 0x00000024; |
| pub const SPDRP_MAXIMUM_PROPERTY: DWORD = 0x00000025; |
| pub const SPCRP_UPPERFILTERS: DWORD = 0x00000011; |
| pub const SPCRP_LOWERFILTERS: DWORD = 0x00000012; |
| pub const SPCRP_SECURITY: DWORD = 0x00000017; |
| pub const SPCRP_SECURITY_SDS: DWORD = 0x00000018; |
| pub const SPCRP_DEVTYPE: DWORD = 0x00000019; |
| pub const SPCRP_EXCLUSIVE: DWORD = 0x0000001A; |
| pub const SPCRP_CHARACTERISTICS: DWORD = 0x0000001B; |
| pub const SPCRP_MAXIMUM_PROPERTY: DWORD = 0x0000001C; |
| extern "system" { |
| pub fn SetupDiGetDeviceRegistryPropertyA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Property: DWORD, |
| PropertyRegDataType: PDWORD, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceRegistryPropertyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Property: DWORD, |
| PropertyRegDataType: PDWORD, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetClassRegistryPropertyA( |
| ClassGuid: *const GUID, |
| Property: DWORD, |
| PropertyRegDataType: PDWORD, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetClassRegistryPropertyW( |
| ClassGuid: *const GUID, |
| Property: DWORD, |
| PropertyRegDataType: PDWORD, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiSetDeviceRegistryPropertyA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Property: DWORD, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiSetDeviceRegistryPropertyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| Property: DWORD, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiSetClassRegistryPropertyA( |
| ClassGuid: *const GUID, |
| Property: DWORD, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiSetClassRegistryPropertyW( |
| ClassGuid: *const GUID, |
| Property: DWORD, |
| PropertyBuffer: *const BYTE, |
| PropertyBufferSize: DWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInstallParamsA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A, |
| ) -> BOOL; |
| pub fn SetupDiGetDeviceInstallParamsW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W, |
| ) -> BOOL; |
| pub fn SetupDiGetClassInstallParamsA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ClassInstallParams: PSP_CLASSINSTALL_HEADER, |
| ClassInstallParamsSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetClassInstallParamsW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ClassInstallParams: PSP_CLASSINSTALL_HEADER, |
| ClassInstallParamsSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiSetDeviceInstallParamsA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A, |
| ) -> BOOL; |
| pub fn SetupDiSetDeviceInstallParamsW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W, |
| ) -> BOOL; |
| pub fn SetupDiSetClassInstallParamsA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ClassInstallParams: PSP_CLASSINSTALL_HEADER, |
| ClassInstallParamsSize: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiSetClassInstallParamsW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ClassInstallParams: PSP_CLASSINSTALL_HEADER, |
| ClassInstallParamsSize: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetDriverInstallParamsA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_A, |
| DriverInstallParams: PSP_DRVINSTALL_PARAMS, |
| ) -> BOOL; |
| pub fn SetupDiGetDriverInstallParamsW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_W, |
| DriverInstallParams: PSP_DRVINSTALL_PARAMS, |
| ) -> BOOL; |
| pub fn SetupDiSetDriverInstallParamsA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_A, |
| DriverInstallParams: PSP_DRVINSTALL_PARAMS, |
| ) -> BOOL; |
| pub fn SetupDiSetDriverInstallParamsW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| DriverInfoData: PSP_DRVINFO_DATA_W, |
| DriverInstallParams: PSP_DRVINSTALL_PARAMS, |
| ) -> BOOL; |
| pub fn SetupDiLoadClassIcon( |
| ClassGuid: *const GUID, |
| LargeIcon: *mut HICON, |
| MiniIconIndex: PINT, |
| ) -> BOOL; |
| pub fn SetupDiLoadDeviceIcon( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| cxIcon: UINT, |
| cyIcon: UINT, |
| Flags: DWORD, |
| hIcon: *mut HICON, |
| ) -> BOOL; |
| } |
| pub const DMI_MASK: DWORD = 0x00000001; |
| pub const DMI_BKCOLOR: DWORD = 0x00000002; |
| pub const DMI_USERECT: DWORD = 0x00000004; |
| extern "system" { |
| pub fn SetupDiDrawMiniIcon( |
| hdc: HDC, |
| rc: RECT, |
| MiniIconIndex: INT, |
| Flags: DWORD, |
| ) -> INT; |
| pub fn SetupDiGetClassBitmapIndex( |
| ClassGuid: *const GUID, |
| MiniIconIndex: PINT, |
| ) -> BOOL; |
| pub fn SetupDiGetClassImageList( |
| ClassImageListData: PSP_CLASSIMAGELIST_DATA, |
| ) -> BOOL; |
| pub fn SetupDiGetClassImageListExA( |
| ClassImageListData: PSP_CLASSIMAGELIST_DATA, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetClassImageListExW( |
| ClassImageListData: PSP_CLASSIMAGELIST_DATA, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetClassImageIndex( |
| ClassImageListData: PSP_CLASSIMAGELIST_DATA, |
| ClassGuid: *const GUID, |
| ImageIndex: PINT, |
| ) -> BOOL; |
| pub fn SetupDiDestroyClassImageList( |
| ClassImageListData: PSP_CLASSIMAGELIST_DATA, |
| ) -> BOOL; |
| } |
| pub const DIGCDP_FLAG_BASIC: DWORD = 0x00000001; |
| pub const DIGCDP_FLAG_ADVANCED: DWORD = 0x00000002; |
| pub const DIGCDP_FLAG_REMOTE_BASIC: DWORD = 0x00000003; |
| pub const DIGCDP_FLAG_REMOTE_ADVANCED: DWORD = 0x00000004; |
| extern "system" { |
| pub fn SetupDiGetClassDevPropertySheetsA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| PropertySheetHeader: LPPROPSHEETHEADERA, |
| PropertySheetHeaderPageListSize: DWORD, |
| RequiredSize: PDWORD, |
| PropertySheetType: DWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetClassDevPropertySheetsW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| PropertySheetHeader: LPPROPSHEETHEADERW, |
| PropertySheetHeaderPageListSize: DWORD, |
| RequiredSize: PDWORD, |
| PropertySheetType: DWORD, |
| ) -> BOOL; |
| } |
| pub const IDI_RESOURCEFIRST: c_int = 159; |
| pub const IDI_RESOURCE: c_int = 159; |
| pub const IDI_RESOURCELAST: c_int = 161; |
| pub const IDI_RESOURCEOVERLAYFIRST: c_int = 161; |
| pub const IDI_RESOURCEOVERLAYLAST: c_int = 161; |
| pub const IDI_CONFLICT: c_int = 161; |
| pub const IDI_CLASSICON_OVERLAYFIRST: c_int = 500; |
| pub const IDI_CLASSICON_OVERLAYLAST: c_int = 502; |
| pub const IDI_PROBLEM_OVL: c_int = 500; |
| pub const IDI_DISABLED_OVL: c_int = 501; |
| pub const IDI_FORCED_OVL: c_int = 502; |
| extern "system" { |
| pub fn SetupDiAskForOEMDisk( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiSelectOEMDrv( |
| hwndParent: HWND, |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiClassNameFromGuidA( |
| ClassGuid: *const GUID, |
| ClassName: PSTR, |
| ClassNameSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiClassNameFromGuidW( |
| ClassGuid: *const GUID, |
| ClassName: PWSTR, |
| ClassNameSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiClassNameFromGuidExA( |
| ClassGuid: *const GUID, |
| ClassName: PSTR, |
| ClassNameSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiClassNameFromGuidExW( |
| ClassGuid: *const GUID, |
| ClassName: PWSTR, |
| ClassNameSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiClassGuidsFromNameA( |
| ClassName: PCSTR, |
| ClassGuidList: LPGUID, |
| ClassGuidListSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiClassGuidsFromNameW( |
| ClassName: PCWSTR, |
| ClassGuidList: LPGUID, |
| ClassGuidListSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiClassGuidsFromNameExA( |
| ClassName: PCSTR, |
| ClassGuidList: LPGUID, |
| ClassGuidListSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiClassGuidsFromNameExW( |
| ClassName: PCWSTR, |
| ClassGuidList: LPGUID, |
| ClassGuidListSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetHwProfileFriendlyNameA( |
| HwProfile: DWORD, |
| FriendlyName: PSTR, |
| FriendlyNameSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetHwProfileFriendlyNameW( |
| HwProfile: DWORD, |
| FriendlyName: PWSTR, |
| FriendlyNameSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetHwProfileFriendlyNameExA( |
| HwProfile: DWORD, |
| FriendlyName: PSTR, |
| FriendlyNameSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetHwProfileFriendlyNameExW( |
| HwProfile: DWORD, |
| FriendlyName: PWSTR, |
| FriendlyNameSize: DWORD, |
| RequiredSize: PDWORD, |
| MachineName: PCWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| } |
| pub const SPWPT_SELECTDEVICE: DWORD = 0x00000001; |
| pub const SPWP_USE_DEVINFO_DATA: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupDiGetWizardPage( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| InstallWizardData: PSP_INSTALLWIZARD_DATA, |
| PageType: DWORD, |
| Flags: DWORD, |
| ) -> HPROPSHEETPAGE; |
| pub fn SetupDiGetSelectedDevice( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiSetSelectedDevice( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| ) -> BOOL; |
| pub fn SetupDiGetActualModelsSectionA( |
| Context: PINFCONTEXT, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| InfSectionWithExt: PSTR, |
| InfSectionWithExtSize: DWORD, |
| RequiredSize: PDWORD, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetActualModelsSectionW( |
| Context: PINFCONTEXT, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| InfSectionWithExt: PWSTR, |
| InfSectionWithExtSize: DWORD, |
| RequiredSize: PDWORD, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetActualSectionToInstallA( |
| InfHandle: HINF, |
| InfSectionName: PCSTR, |
| InfSectionWithExt: PSTR, |
| InfSectionWithExtSize: DWORD, |
| RequiredSize: PDWORD, |
| Extension: *mut PSTR, |
| ) -> BOOL; |
| pub fn SetupDiGetActualSectionToInstallW( |
| InfHandle: HINF, |
| InfSectionName: PCWSTR, |
| InfSectionWithExt: PWSTR, |
| InfSectionWithExtSize: DWORD, |
| RequiredSize: PDWORD, |
| Extension: *mut PWSTR, |
| ) -> BOOL; |
| pub fn SetupDiGetActualSectionToInstallExA( |
| InfHandle: HINF, |
| InfSectionName: PCSTR, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| InfSectionWithExt: PSTR, |
| InfSectionWithExtSize: DWORD, |
| RequiredSize: PDWORD, |
| Extension: *mut PSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupDiGetActualSectionToInstallExW( |
| InfHandle: HINF, |
| InfSectionName: PCWSTR, |
| AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, |
| InfSectionWithExt: PWSTR, |
| InfSectionWithExtSize: DWORD, |
| RequiredSize: PDWORD, |
| Extension: *mut PWSTR, |
| Reserved: PVOID, |
| ) -> BOOL; |
| pub fn SetupEnumInfSectionsA( |
| InfHandle: HINF, |
| Index: UINT, |
| Buffer: PSTR, |
| Size: UINT, |
| SizeNeeded: *mut UINT, |
| ) -> BOOL; |
| pub fn SetupEnumInfSectionsW( |
| InfHandle: HINF, |
| Index: UINT, |
| Buffer: PWSTR, |
| Size: UINT, |
| SizeNeeded: *mut UINT, |
| ) -> BOOL; |
| } |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INF_SIGNER_INFO_V1_A { |
| cbSize: DWORD, |
| CatalogFile: [CHAR; MAX_PATH], |
| DigitalSigner: [CHAR; MAX_PATH], |
| DigitalSignerVersion: [CHAR; MAX_PATH], |
| }} |
| pub type PSP_INF_SIGNER_INFO_V1_A = *mut SP_INF_SIGNER_INFO_V1_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INF_SIGNER_INFO_V1_W { |
| cbSize: DWORD, |
| CatalogFile: [WCHAR; MAX_PATH], |
| DigitalSigner: [WCHAR; MAX_PATH], |
| DigitalSignerVersion: [WCHAR; MAX_PATH], |
| }} |
| pub type PSP_INF_SIGNER_INFO_V1_W = *mut SP_INF_SIGNER_INFO_V1_W; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INF_SIGNER_INFO_V2_A { |
| cbSize: DWORD, |
| CatalogFile: [CHAR; MAX_PATH], |
| DigitalSigner: [CHAR; MAX_PATH], |
| DigitalSignerVersion: [CHAR; MAX_PATH], |
| SignerScore: DWORD, |
| }} |
| pub type PSP_INF_SIGNER_INFO_V2_A = *mut SP_INF_SIGNER_INFO_V2_A; |
| STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INF_SIGNER_INFO_V2_W { |
| cbSize: DWORD, |
| CatalogFile: [WCHAR; MAX_PATH], |
| DigitalSigner: [WCHAR; MAX_PATH], |
| DigitalSignerVersion: [WCHAR; MAX_PATH], |
| SignerScore: DWORD, |
| }} |
| pub type PSP_INF_SIGNER_INFO_V2_W = *mut SP_INF_SIGNER_INFO_V2_W; |
| pub const SIGNERSCORE_UNKNOWN: DWORD = 0xFF000000; |
| pub const SIGNERSCORE_W9X_SUSPECT: DWORD = 0xC0000000; |
| pub const SIGNERSCORE_UNSIGNED: DWORD = 0x80000000; |
| pub const SIGNERSCORE_AUTHENTICODE: DWORD = 0x0F000000; |
| pub const SIGNERSCORE_WHQL: DWORD = 0x0D000005; |
| pub const SIGNERSCORE_UNCLASSIFIED: DWORD = 0x0D000004; |
| pub const SIGNERSCORE_INBOX: DWORD = 0x0D000003; |
| pub const SIGNERSCORE_LOGO_STANDARD: DWORD = 0x0D000002; |
| pub const SIGNERSCORE_LOGO_PREMIUM: DWORD = 0x0D000001; |
| pub const SIGNERSCORE_MASK: DWORD = 0xFF000000; |
| pub const SIGNERSCORE_SIGNED_MASK: DWORD = 0xF0000000; |
| pub type SP_INF_SIGNER_INFO_A = SP_INF_SIGNER_INFO_V2_A; |
| pub type PSP_INF_SIGNER_INFO_A = PSP_INF_SIGNER_INFO_V2_A; |
| pub type SP_INF_SIGNER_INFO_W = SP_INF_SIGNER_INFO_V2_W; |
| pub type PSP_INF_SIGNER_INFO_W = PSP_INF_SIGNER_INFO_V2_W; |
| extern "system" { |
| pub fn SetupVerifyInfFileA( |
| InfName: PCSTR, |
| AltPlatformInfo: PSP_ALTPLATFORM_INFO, |
| InfSignerInfo: PSP_INF_SIGNER_INFO_A, |
| ) -> BOOL; |
| pub fn SetupVerifyInfFileW( |
| InfName: PCWSTR, |
| AltPlatformInfo: PSP_ALTPLATFORM_INFO, |
| InfSignerInfo: PSP_INF_SIGNER_INFO_W, |
| ) -> BOOL; |
| } |
| pub const DICUSTOMDEVPROP_MERGE_MULTISZ: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupDiGetCustomDevicePropertyA( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| CustomPropertyName: PCSTR, |
| Flags: DWORD, |
| PropertyRegDataType: PDWORD, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| pub fn SetupDiGetCustomDevicePropertyW( |
| DeviceInfoSet: HDEVINFO, |
| DeviceInfoData: PSP_DEVINFO_DATA, |
| CustomPropertyName: PCWSTR, |
| Flags: DWORD, |
| PropertyRegDataType: PDWORD, |
| PropertyBuffer: PBYTE, |
| PropertyBufferSize: DWORD, |
| RequiredSize: PDWORD, |
| ) -> BOOL; |
| } |
| pub const SCWMI_CLOBBER_SECURITY: DWORD = 0x00000001; |
| extern "system" { |
| pub fn SetupConfigureWmiFromInfSectionA( |
| InfHandle: HINF, |
| SectionName: PCSTR, |
| Flags: DWORD, |
| ) -> BOOL; |
| pub fn SetupConfigureWmiFromInfSectionW( |
| InfHandle: HINF, |
| SectionName: PCWSTR, |
| Flags: DWORD, |
| ) -> BOOL; |
| } |