summaryrefslogtreecommitdiffstats
path: root/third_party/rust/winapi-0.2.8/src/setupapi.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/rust/winapi-0.2.8/src/setupapi.rs1301
1 files changed, 1301 insertions, 0 deletions
diff --git a/third_party/rust/winapi-0.2.8/src/setupapi.rs b/third_party/rust/winapi-0.2.8/src/setupapi.rs
new file mode 100644
index 0000000000..cf3149d79f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/setupapi.rs
@@ -0,0 +1,1301 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Windows NT Setup and Device Installer services
+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!{struct INFCONTEXT {
+ Inf: ::PVOID,
+ CurrentInf: ::PVOID,
+ Section: ::UINT,
+ Line: ::UINT,
+}}
+pub type PINFCONTEXT = *mut INFCONTEXT;
+STRUCT!{struct SP_INF_INFORMATION {
+ InfStyle: ::DWORD,
+ InfCount: ::DWORD,
+ VersionData: [::BYTE; ::ANYSIZE_ARRAY],
+}}
+pub type PSP_INF_INFORMATION = *mut SP_INF_INFORMATION;
+STRUCT!{struct SP_ALTPLATFORM_INFO_V2 {
+ cbSize: ::DWORD,
+ Platform: ::DWORD,
+ MajorVersion: ::DWORD,
+ MinorVersion: ::DWORD,
+ ProcessorArchitecture: ::WORD,
+ Reserved: ::WORD,
+ FirstValidatedMajorVersion: ::DWORD,
+ FirstValidatedMinorVersion: ::DWORD,
+}}
+UNION!(SP_ALTPLATFORM_INFO_V2, Reserved, Flags, Flags_mut, ::WORD);
+pub type PSP_ALTPLATFORM_INFO_V2 = *mut SP_ALTPLATFORM_INFO_V2;
+STRUCT!{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;
+STRUCT!{nodebug 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!{nodebug 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 ::DWORD;
+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;
+pub type PSP_FILE_CALLBACK_A = Option<unsafe extern "system" fn(
+ Context: ::PVOID, Notification: ::UINT, Param1: ::UINT_PTR, Param2: ::UINT_PTR,
+) -> ::UINT>;
+pub type PSP_FILE_CALLBACK_W = Option<unsafe extern "system" fn(
+ 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!{struct FILEPATHS_A {
+ Target: ::PCSTR,
+ Source: ::PCSTR,
+ Win32Error: ::UINT,
+ Flags: ::DWORD,
+}}
+pub type PFILEPATHS_A = *mut FILEPATHS_A;
+STRUCT!{struct FILEPATHS_W {
+ Target: ::PCWSTR,
+ Source: ::PCWSTR,
+ Win32Error: ::UINT,
+ Flags: ::DWORD,
+}}
+pub type PFILEPATHS_W = *mut FILEPATHS_W;
+STRUCT!{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!{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!{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!{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!{struct CABINET_INFO_A {
+ CabinetPath: ::PCSTR,
+ CabinetFile: ::PCSTR,
+ DiskName: ::PCSTR,
+ SetId: ::USHORT,
+ CabinetNumber: ::USHORT,
+}}
+pub type PCABINET_INFO_A = *mut CABINET_INFO_A;
+STRUCT!{struct CABINET_INFO_W {
+ CabinetPath: ::PCWSTR,
+ CabinetFile: ::PCWSTR,
+ DiskName: ::PCWSTR,
+ SetId: ::USHORT,
+ CabinetNumber: ::USHORT,
+}}
+pub type PCABINET_INFO_W = *mut CABINET_INFO_W;
+STRUCT!{nodebug 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!{nodebug 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!{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!{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!{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!{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!{struct SP_DEVINFO_DATA {
+ cbSize: ::DWORD,
+ ClassGuid: ::GUID,
+ DevInst: ::DWORD,
+ Reserved: ::ULONG_PTR,
+}}
+pub type PSP_DEVINFO_DATA = *mut SP_DEVINFO_DATA;
+STRUCT!{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!{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!{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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{struct SP_CLASSINSTALL_HEADER {
+ cbSize: ::DWORD,
+ InstallFunction: DI_FUNCTION,
+}}
+pub type PSP_CLASSINSTALL_HEADER = *mut SP_CLASSINSTALL_HEADER;
+STRUCT!{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!{struct SP_PROPCHANGE_PARAMS {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ StateChange: ::DWORD,
+ Scope: ::DWORD,
+ HwProfile: ::DWORD,
+}}
+pub type PSP_PROPCHANGE_PARAMS = *mut SP_PROPCHANGE_PARAMS;
+STRUCT!{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!{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!{nodebug 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!{nodebug 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;
+pub type PDETECT_PROGRESS_NOTIFY = Option<unsafe extern "system" fn(
+ ProgressNotifyParam: ::PVOID, DetectComplete: ::DWORD,
+) -> ::BOOL>;
+STRUCT!{nodebug 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!{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!{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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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!{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 type PSP_DETSIG_CMPPROC = Option<unsafe extern "system" fn(
+ DeviceInfoSet: HDEVINFO, NewDeviceData: PSP_DEVINFO_DATA, ExistingDeviceData: PSP_DEVINFO_DATA,
+ CompareContext: ::PVOID,
+) -> ::DWORD>;
+STRUCT!{struct COINSTALLER_CONTEXT_DATA {
+ PostProcessing: ::BOOL,
+ InstallResult: ::DWORD,
+ PrivateData: ::PVOID,
+}}
+pub type PCOINSTALLER_CONTEXT_DATA = *mut COINSTALLER_CONTEXT_DATA;
+STRUCT!{struct SP_CLASSIMAGELIST_DATA {
+ cbSize: ::DWORD,
+ ImageList: ::HIMAGELIST,
+ Reserved: ::ULONG_PTR,
+}}
+pub type PSP_CLASSIMAGELIST_DATA = *mut SP_CLASSIMAGELIST_DATA;
+STRUCT!{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!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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;
+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;
+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;
+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;
+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;
+pub const SETDIRID_NOT_FULL_PATH: ::DWORD = 0x00000001;
+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;
+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;
+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;
+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;
+pub const SUOI_FORCEDELETE: ::DWORD = 0x00000001;
+pub const SUOI_INTERNAL1: ::DWORD = 0x00000002;
+pub const SPDSL_IGNORE_DISK: ::UINT = 0x00000001;
+pub const SPDSL_DISALLOW_NEGATIVE_ADJUST: ::UINT = 0x00000002;
+pub const SPFILEQ_FILE_IN_USE: ::INT = 0x00000001;
+pub const SPFILEQ_REBOOT_RECOMMENDED: ::INT = 0x00000002;
+pub const SPFILEQ_REBOOT_IN_PROGRESS: ::INT = 0x00000004;
+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;
+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;
+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;
+pub type HSPFILELOG = ::PVOID;
+pub const SPFILELOG_SYSTEMLOG: ::DWORD = 0x00000001;
+pub const SPFILELOG_FORCENEW: ::DWORD = 0x00000002;
+pub const SPFILELOG_QUERYONLY: ::DWORD = 0x00000004;
+pub const SPFILELOG_OEMFILE: ::DWORD = 0x00000001;
+ENUM!{enum SetupFileLogInfo {
+ SetupFileLogSourceFilename,
+ SetupFileLogChecksum,
+ SetupFileLogDiskTagfile,
+ SetupFileLogDiskDescription,
+ SetupFileLogOtherInfo,
+ SetupFileLogMax,
+}}
+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;
+pub const DICD_GENERATE_ID: ::DWORD = 0x00000001;
+pub const DICD_INHERIT_CLASSDRVS: ::DWORD = 0x00000002;
+pub const DIOD_INHERIT_CLASSDRVS: ::DWORD = 0x00000002;
+pub const DIOD_CANCEL_REMOVE: ::DWORD = 0x00000004;
+pub const DIODI_NO_ADD: ::DWORD = 0x00000001;
+pub const SPRDI_FIND_DUPS: ::DWORD = 0x00000001;
+pub const SPDIT_NODRIVER: ::DWORD = 0x00000000;
+pub const SPDIT_CLASSDRIVER: ::DWORD = 0x00000001;
+pub const SPDIT_COMPATDRIVER: ::DWORD = 0x00000002;
+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;
+pub const DIBCI_NOINSTALLCLASS: ::DWORD = 0x00000001;
+pub const DIBCI_NODISPLAYCLASS: ::DWORD = 0x00000002;
+pub const DIOCR_INSTALLER: ::DWORD = 0x00000001;
+pub const DIOCR_INTERFACE: ::DWORD = 0x00000002;
+pub const DIREG_DEV: ::DWORD = 0x00000001;
+pub const DIREG_DRV: ::DWORD = 0x00000002;
+pub const DIREG_BOTH: ::DWORD = 0x00000004;
+pub const DICLASSPROP_INSTALLER: ::DWORD = 0x00000001;
+pub const DICLASSPROP_INTERFACE: ::DWORD = 0x00000002;
+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;
+pub const DMI_MASK: ::DWORD = 0x00000001;
+pub const DMI_BKCOLOR: ::DWORD = 0x00000002;
+pub const DMI_USERECT: ::DWORD = 0x00000004;
+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;
+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;
+pub const SPWPT_SELECTDEVICE: ::DWORD = 0x00000001;
+pub const SPWP_USE_DEVINFO_DATA: ::DWORD = 0x00000001;
+STRUCT!{nodebug 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!{nodebug 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!{nodebug 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!{nodebug 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 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;
+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 const DICUSTOMDEVPROP_MERGE_MULTISZ: ::DWORD = 0x00000001;
+pub const SCWMI_CLOBBER_SECURITY: ::DWORD = 0x00000001;