1 // Copyright © 2016-2017 winapi-rs developers 2 // Licensed under the Apache License, Version 2.0 3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 5 // All files in the project carrying such notice may not be copied, modified, or distributed 6 // except according to those terms. 7 //! Public header file for Windows NT Setup and Device Installer services Dll. 8 use ctypes::c_int; 9 use shared::basetsd::{DWORD_PTR, UINT_PTR, ULONG_PTR}; 10 use shared::devpropdef::{DEVPROPKEY, DEVPROPTYPE}; 11 use shared::guiddef::{GUID, LPGUID}; 12 use shared::minwindef::{ 13 BOOL, BYTE, DWORD, FILETIME, HINSTANCE, HKEY, INT, LPARAM, LPCVOID, LPDWORD, MAX_PATH, PBOOL, 14 PBYTE, PDWORD, PINT, PUINT, UINT, USHORT, WORD, 15 }; 16 use shared::windef::{HDC, HICON, HWND, RECT}; 17 use um::commctrl::HIMAGELIST; 18 use um::prsht::{HPROPSHEETPAGE, LPPROPSHEETHEADERA, LPPROPSHEETHEADERW}; 19 use um::spapidef::SP_LOG_TOKEN; 20 use um::winnt::{ 21 ANYSIZE_ARRAY, APPLICATION_ERROR_MASK, CHAR, DWORDLONG, ERROR_SEVERITY_ERROR, HANDLE, LONG, 22 LONGLONG, LPCSTR, LPCWSTR, PCSTR, PCWSTR, PSTR, PVOID, PWSTR, WCHAR, 23 }; 24 use um::winreg::REGSAM; 25 pub const LINE_LEN: usize = 256; 26 pub const MAX_INF_STRING_LENGTH: usize = 4096; 27 pub const MAX_INF_SECTION_NAME_LENGTH: usize = 255; 28 pub const MAX_TITLE_LEN: usize = 60; 29 pub const MAX_INSTRUCTION_LEN: usize = 256; 30 pub const MAX_LABEL_LEN: usize = 30; 31 pub const MAX_SERVICE_NAME_LEN: usize = 256; 32 pub const MAX_SUBTITLE_LEN: usize = 256; 33 pub const SP_MAX_MACHINENAME_LENGTH: usize = MAX_PATH + 3; 34 pub type HINF = PVOID; 35 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct INFCONTEXT { 36 Inf: PVOID, 37 CurrentInf: PVOID, 38 Section: UINT, 39 Line: UINT, 40 }} 41 pub type PINFCONTEXT = *mut INFCONTEXT; 42 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INF_INFORMATION { 43 InfStyle: DWORD, 44 InfCount: DWORD, 45 VersionData: [BYTE; ANYSIZE_ARRAY], 46 }} 47 pub type PSP_INF_INFORMATION = *mut SP_INF_INFORMATION; 48 UNION!{#[cfg_attr(target_arch = "x86", repr(packed))] union SP_ALTPLATFORM_INFO_V3_u { 49 [u16; 1], 50 Reserved Reserved_mut: WORD, 51 Flags Flags_mut: WORD, 52 }} 53 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ALTPLATFORM_INFO_V3 { 54 cbSize: DWORD, 55 Platform: DWORD, 56 MajorVersion: DWORD, 57 MinorVersion: DWORD, 58 ProcessorArchitecture: WORD, 59 u: SP_ALTPLATFORM_INFO_V3_u, 60 FirstValidatedMajorVersion: DWORD, 61 FirstValidatedMinorVersion: DWORD, 62 ProductType: BYTE, 63 SuiteMask: WORD, 64 BuildNumber: DWORD, 65 }} 66 pub type PSP_ALTPLATFORM_INFO_V3 = *mut SP_ALTPLATFORM_INFO_V3; 67 UNION!{#[cfg_attr(target_arch = "x86", repr(packed))] union SP_ALTPLATFORM_INFO_V2_u { 68 [u16; 1], 69 Reserved Reserved_mut: WORD, 70 Flags Flags_mut: WORD, 71 }} 72 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ALTPLATFORM_INFO_V2 { 73 cbSize: DWORD, 74 Platform: DWORD, 75 MajorVersion: DWORD, 76 MinorVersion: DWORD, 77 ProcessorArchitecture: WORD, 78 u: SP_ALTPLATFORM_INFO_V2_u, 79 FirstValidatedMajorVersion: DWORD, 80 FirstValidatedMinorVersion: DWORD, 81 }} 82 pub type PSP_ALTPLATFORM_INFO_V2 = *mut SP_ALTPLATFORM_INFO_V2; 83 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ALTPLATFORM_INFO_V1 { 84 cbSize: DWORD, 85 Platform: DWORD, 86 MajorVersion: DWORD, 87 MinorVersion: DWORD, 88 ProcessorArchitecture: WORD, 89 Reserved: WORD, 90 }} 91 pub type PSP_ALTPLATFORM_INFO_V1 = *mut SP_ALTPLATFORM_INFO_V1; 92 pub type SP_ALTPLATFORM_INFO = SP_ALTPLATFORM_INFO_V2; 93 pub type PSP_ALTPLATFORM_INFO = PSP_ALTPLATFORM_INFO_V2; 94 pub const SP_ALTPLATFORM_FLAGS_VERSION_RANGE: WORD = 0x0001; 95 pub const SP_ALTPLATFORM_FLAGS_SUITE_MASK: WORD = 0x0002; 96 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ORIGINAL_FILE_INFO_A { 97 cbSize: DWORD, 98 OriginalInfName: [CHAR; MAX_PATH], 99 OriginalCatalogName: [CHAR; MAX_PATH], 100 }} 101 pub type PSP_ORIGINAL_FILE_INFO_A = *mut SP_ORIGINAL_FILE_INFO_A; 102 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ORIGINAL_FILE_INFO_W { 103 cbSize: DWORD, 104 OriginalInfName: [WCHAR; MAX_PATH], 105 OriginalCatalogName: [WCHAR; MAX_PATH], 106 }} 107 pub type PSP_ORIGINAL_FILE_INFO_W = *mut SP_ORIGINAL_FILE_INFO_W; 108 pub const INF_STYLE_NONE: DWORD = 0x00000000; 109 pub const INF_STYLE_OLDNT: DWORD = 0x00000001; 110 pub const INF_STYLE_WIN4: DWORD = 0x00000002; 111 pub const INF_STYLE_CACHE_ENABLE: DWORD = 0x00000010; 112 pub const INF_STYLE_CACHE_DISABLE: DWORD = 0x00000020; 113 pub const INF_STYLE_CACHE_IGNORE: DWORD = 0x00000040; 114 pub const DIRID_ABSOLUTE: DWORD = -1i32 as u32; 115 pub const DIRID_ABSOLUTE_16BIT: DWORD = 0xffff; 116 pub const DIRID_NULL: DWORD = 0; 117 pub const DIRID_SRCPATH: DWORD = 1; 118 pub const DIRID_WINDOWS: DWORD = 10; 119 pub const DIRID_SYSTEM: DWORD = 11; 120 pub const DIRID_DRIVERS: DWORD = 12; 121 pub const DIRID_IOSUBSYS: DWORD = DIRID_DRIVERS; 122 pub const DIRID_DRIVER_STORE: DWORD = 13; 123 pub const DIRID_INF: DWORD = 17; 124 pub const DIRID_HELP: DWORD = 18; 125 pub const DIRID_FONTS: DWORD = 20; 126 pub const DIRID_VIEWERS: DWORD = 21; 127 pub const DIRID_COLOR: DWORD = 23; 128 pub const DIRID_APPS: DWORD = 24; 129 pub const DIRID_SHARED: DWORD = 25; 130 pub const DIRID_BOOT: DWORD = 30; 131 pub const DIRID_SYSTEM16: DWORD = 50; 132 pub const DIRID_SPOOL: DWORD = 51; 133 pub const DIRID_SPOOLDRIVERS: DWORD = 52; 134 pub const DIRID_USERPROFILE: DWORD = 53; 135 pub const DIRID_LOADER: DWORD = 54; 136 pub const DIRID_PRINTPROCESSOR: DWORD = 55; 137 pub const DIRID_DEFAULT: DWORD = DIRID_SYSTEM; 138 pub const DIRID_COMMON_STARTMENU: DWORD = 16406; 139 pub const DIRID_COMMON_PROGRAMS: DWORD = 16407; 140 pub const DIRID_COMMON_STARTUP: DWORD = 16408; 141 pub const DIRID_COMMON_DESKTOPDIRECTORY: DWORD = 16409; 142 pub const DIRID_COMMON_FAVORITES: DWORD = 16415; 143 pub const DIRID_COMMON_APPDATA: DWORD = 16419; 144 pub const DIRID_PROGRAM_FILES: DWORD = 16422; 145 pub const DIRID_SYSTEM_X86: DWORD = 16425; 146 pub const DIRID_PROGRAM_FILES_X86: DWORD = 16426; 147 pub const DIRID_PROGRAM_FILES_COMMON: DWORD = 16427; 148 pub const DIRID_PROGRAM_FILES_COMMONX86: DWORD = 16428; 149 pub const DIRID_COMMON_TEMPLATES: DWORD = 16429; 150 pub const DIRID_COMMON_DOCUMENTS: DWORD = 16430; 151 pub const DIRID_USER: DWORD = 0x8000; 152 FN!{stdcall PSP_FILE_CALLBACK_A( 153 Context: PVOID, 154 Notification: UINT, 155 Param1: UINT_PTR, 156 Param2: UINT_PTR, 157 ) -> UINT} 158 FN!{stdcall PSP_FILE_CALLBACK_W( 159 Context: PVOID, 160 Notification: UINT, 161 Param1: UINT_PTR, 162 Param2: UINT_PTR, 163 ) -> UINT} 164 pub const SPFILENOTIFY_STARTQUEUE: UINT = 0x00000001; 165 pub const SPFILENOTIFY_ENDQUEUE: UINT = 0x00000002; 166 pub const SPFILENOTIFY_STARTSUBQUEUE: UINT = 0x00000003; 167 pub const SPFILENOTIFY_ENDSUBQUEUE: UINT = 0x00000004; 168 pub const SPFILENOTIFY_STARTDELETE: UINT = 0x00000005; 169 pub const SPFILENOTIFY_ENDDELETE: UINT = 0x00000006; 170 pub const SPFILENOTIFY_DELETEERROR: UINT = 0x00000007; 171 pub const SPFILENOTIFY_STARTRENAME: UINT = 0x00000008; 172 pub const SPFILENOTIFY_ENDRENAME: UINT = 0x00000009; 173 pub const SPFILENOTIFY_RENAMEERROR: UINT = 0x0000000a; 174 pub const SPFILENOTIFY_STARTCOPY: UINT = 0x0000000b; 175 pub const SPFILENOTIFY_ENDCOPY: UINT = 0x0000000c; 176 pub const SPFILENOTIFY_COPYERROR: UINT = 0x0000000d; 177 pub const SPFILENOTIFY_NEEDMEDIA: UINT = 0x0000000e; 178 pub const SPFILENOTIFY_QUEUESCAN: UINT = 0x0000000f; 179 pub const SPFILENOTIFY_CABINETINFO: UINT = 0x00000010; 180 pub const SPFILENOTIFY_FILEINCABINET: UINT = 0x00000011; 181 pub const SPFILENOTIFY_NEEDNEWCABINET: UINT = 0x00000012; 182 pub const SPFILENOTIFY_FILEEXTRACTED: UINT = 0x00000013; 183 pub const SPFILENOTIFY_FILEOPDELAYED: UINT = 0x00000014; 184 pub const SPFILENOTIFY_STARTBACKUP: UINT = 0x00000015; 185 pub const SPFILENOTIFY_BACKUPERROR: UINT = 0x00000016; 186 pub const SPFILENOTIFY_ENDBACKUP: UINT = 0x00000017; 187 pub const SPFILENOTIFY_QUEUESCAN_EX: UINT = 0x00000018; 188 pub const SPFILENOTIFY_STARTREGISTRATION: UINT = 0x00000019; 189 pub const SPFILENOTIFY_ENDREGISTRATION: UINT = 0x00000020; 190 pub const SPFILENOTIFY_QUEUESCAN_SIGNERINFO: UINT = 0x00000040; 191 pub const SPFILENOTIFY_LANGMISMATCH: UINT = 0x00010000; 192 pub const SPFILENOTIFY_TARGETEXISTS: UINT = 0x00020000; 193 pub const SPFILENOTIFY_TARGETNEWER: UINT = 0x00040000; 194 pub const FILEOP_COPY: UINT = 0; 195 pub const FILEOP_RENAME: UINT = 1; 196 pub const FILEOP_DELETE: UINT = 2; 197 pub const FILEOP_BACKUP: UINT = 3; 198 pub const FILEOP_ABORT: UINT = 0; 199 pub const FILEOP_DOIT: UINT = 1; 200 pub const FILEOP_SKIP: UINT = 2; 201 pub const FILEOP_RETRY: UINT = FILEOP_DOIT; 202 pub const FILEOP_NEWPATH: UINT = 4; 203 pub const COPYFLG_WARN_IF_SKIP: UINT = 0x00000001; 204 pub const COPYFLG_NOSKIP: UINT = 0x00000002; 205 pub const COPYFLG_NOVERSIONCHECK: UINT = 0x00000004; 206 pub const COPYFLG_FORCE_FILE_IN_USE: UINT = 0x00000008; 207 pub const COPYFLG_NO_OVERWRITE: UINT = 0x00000010; 208 pub const COPYFLG_NO_VERSION_DIALOG: UINT = 0x00000020; 209 pub const COPYFLG_OVERWRITE_OLDER_ONLY: UINT = 0x00000040; 210 pub const COPYFLG_PROTECTED_WINDOWS_DRIVER_FILE: UINT = 0x00000100; 211 pub const COPYFLG_REPLACEONLY: UINT = 0x00000400; 212 pub const COPYFLG_NODECOMP: UINT = 0x00000800; 213 pub const COPYFLG_REPLACE_BOOT_FILE: UINT = 0x00001000; 214 pub const COPYFLG_NOPRUNE: UINT = 0x00002000; 215 pub const COPYFLG_IN_USE_TRY_RENAME: UINT = 0x00004000; 216 pub const DELFLG_IN_USE: UINT = 0x00000001; 217 pub const DELFLG_IN_USE1: UINT = 0x00010000; 218 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_A { 219 Target: PCSTR, 220 Source: PCSTR, 221 Win32Error: UINT, 222 Flags: DWORD, 223 }} 224 pub type PFILEPATHS_A = *mut FILEPATHS_A; 225 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_W { 226 Target: PCWSTR, 227 Source: PCWSTR, 228 Win32Error: UINT, 229 Flags: DWORD, 230 }} 231 pub type PFILEPATHS_W = *mut FILEPATHS_W; 232 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_SIGNERINFO_A { 233 Target: PCSTR, 234 Source: PCSTR, 235 Win32Error: UINT, 236 Flags: DWORD, 237 DigitalSigner: PCSTR, 238 Version: PCSTR, 239 CatalogFile: PCSTR, 240 }} 241 pub type PFILEPATHS_SIGNERINFO_A = *mut FILEPATHS_SIGNERINFO_A; 242 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILEPATHS_SIGNERINFO_W { 243 Target: PCWSTR, 244 Source: PCWSTR, 245 Win32Error: UINT, 246 Flags: DWORD, 247 DigitalSigner: PCWSTR, 248 Version: PCWSTR, 249 CatalogFile: PCWSTR, 250 }} 251 pub type PFILEPATHS_SIGNERINFO_W = *mut FILEPATHS_SIGNERINFO_W; 252 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SOURCE_MEDIA_A { 253 Reserved: PCSTR, 254 Tagfile: PCSTR, 255 Description: PCSTR, 256 SourcePath: PCSTR, 257 SourceFile: PCSTR, 258 Flags: DWORD, 259 }} 260 pub type PSOURCE_MEDIA_A = *mut SOURCE_MEDIA_A; 261 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SOURCE_MEDIA_W { 262 Reserved: PCWSTR, 263 Tagfile: PCWSTR, 264 Description: PCWSTR, 265 SourcePath: PCWSTR, 266 SourceFile: PCWSTR, 267 Flags: DWORD, 268 }} 269 pub type PSOURCE_MEDIA_W = *mut SOURCE_MEDIA_W; 270 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CABINET_INFO_A { 271 CabinetPath: PCSTR, 272 CabinetFile: PCSTR, 273 DiskName: PCSTR, 274 SetId: USHORT, 275 CabinetNumber: USHORT, 276 }} 277 pub type PCABINET_INFO_A = *mut CABINET_INFO_A; 278 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct CABINET_INFO_W { 279 CabinetPath: PCWSTR, 280 CabinetFile: PCWSTR, 281 DiskName: PCWSTR, 282 SetId: USHORT, 283 CabinetNumber: USHORT, 284 }} 285 pub type PCABINET_INFO_W = *mut CABINET_INFO_W; 286 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILE_IN_CABINET_INFO_A { 287 NameInCabinet: PCSTR, 288 FileSize: DWORD, 289 Win32Error: DWORD, 290 DosDate: WORD, 291 DosTime: WORD, 292 DosAttribs: WORD, 293 FullTargetName: [CHAR; MAX_PATH], 294 }} 295 pub type PFILE_IN_CABINET_INFO_A = *mut FILE_IN_CABINET_INFO_A; 296 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct FILE_IN_CABINET_INFO_W { 297 NameInCabinet: PCWSTR, 298 FileSize: DWORD, 299 Win32Error: DWORD, 300 DosDate: WORD, 301 DosTime: WORD, 302 DosAttribs: WORD, 303 FullTargetName: [WCHAR; MAX_PATH], 304 }} 305 pub type PFILE_IN_CABINET_INFO_W = *mut FILE_IN_CABINET_INFO_W; 306 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_REGISTER_CONTROL_STATUSA { 307 cbSize: DWORD, 308 FileName: PCSTR, 309 Win32Error: DWORD, 310 FailureCode: DWORD, 311 }} 312 pub type PSP_REGISTER_CONTROL_STATUSA = *mut SP_REGISTER_CONTROL_STATUSA; 313 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_REGISTER_CONTROL_STATUSW { 314 cbSize: DWORD, 315 FileName: PCWSTR, 316 Win32Error: DWORD, 317 FailureCode: DWORD, 318 }} 319 pub type PSP_REGISTER_CONTROL_STATUSW = *mut SP_REGISTER_CONTROL_STATUSW; 320 pub const SPREG_SUCCESS: DWORD = 0x00000000; 321 pub const SPREG_LOADLIBRARY: DWORD = 0x00000001; 322 pub const SPREG_GETPROCADDR: DWORD = 0x00000002; 323 pub const SPREG_REGSVR: DWORD = 0x00000003; 324 pub const SPREG_DLLINSTALL: DWORD = 0x00000004; 325 pub const SPREG_TIMEOUT: DWORD = 0x00000005; 326 pub const SPREG_UNKNOWN: DWORD = 0xFFFFFFFF; 327 pub type HSPFILEQ = PVOID; 328 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_FILE_COPY_PARAMS_A { 329 cbSize: DWORD, 330 QueueHandle: HSPFILEQ, 331 SourceRootPath: PCSTR, 332 SourcePath: PCSTR, 333 SourceFilename: PCSTR, 334 SourceDescription: PCSTR, 335 SourceTagfile: PCSTR, 336 TargetDirectory: PCSTR, 337 TargetFilename: PCSTR, 338 CopyStyle: DWORD, 339 LayoutInf: HINF, 340 SecurityDescriptor: PCSTR, 341 }} 342 pub type PSP_FILE_COPY_PARAMS_A = *mut SP_FILE_COPY_PARAMS_A; 343 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_FILE_COPY_PARAMS_W { 344 cbSize: DWORD, 345 QueueHandle: HSPFILEQ, 346 SourceRootPath: PCWSTR, 347 SourcePath: PCWSTR, 348 SourceFilename: PCWSTR, 349 SourceDescription: PCWSTR, 350 SourceTagfile: PCWSTR, 351 TargetDirectory: PCWSTR, 352 TargetFilename: PCWSTR, 353 CopyStyle: DWORD, 354 LayoutInf: HINF, 355 SecurityDescriptor: PCWSTR, 356 }} 357 pub type PSP_FILE_COPY_PARAMS_W = *mut SP_FILE_COPY_PARAMS_W; 358 pub type HDSKSPC = PVOID; 359 pub type HDEVINFO = PVOID; 360 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINFO_DATA { 361 cbSize: DWORD, 362 ClassGuid: GUID, 363 DevInst: DWORD, 364 Reserved: ULONG_PTR, 365 }} 366 pub type PSP_DEVINFO_DATA = *mut SP_DEVINFO_DATA; 367 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVICE_INTERFACE_DATA { 368 cbSize: DWORD, 369 InterfaceClassGuid: GUID, 370 Flags: DWORD, 371 Reserved: ULONG_PTR, 372 }} 373 pub type PSP_DEVICE_INTERFACE_DATA = *mut SP_DEVICE_INTERFACE_DATA; 374 pub const SPINT_ACTIVE: DWORD = 0x00000001; 375 pub const SPINT_DEFAULT: DWORD = 0x00000002; 376 pub const SPINT_REMOVED: DWORD = 0x00000004; 377 pub type SP_INTERFACE_DEVICE_DATA = SP_DEVICE_INTERFACE_DATA; 378 pub type PSP_INTERFACE_DEVICE_DATA = PSP_DEVICE_INTERFACE_DATA; 379 pub const SPID_ACTIVE: DWORD = SPINT_ACTIVE; 380 pub const SPID_DEFAULT: DWORD = SPINT_DEFAULT; 381 pub const SPID_REMOVED: DWORD = SPINT_REMOVED; 382 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { 383 cbSize: DWORD, 384 DevicePath: [CHAR; ANYSIZE_ARRAY], 385 }} 386 pub type PSP_DEVICE_INTERFACE_DETAIL_DATA_A = *mut SP_DEVICE_INTERFACE_DETAIL_DATA_A; 387 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { 388 cbSize: DWORD, 389 DevicePath: [WCHAR; ANYSIZE_ARRAY], 390 }} 391 pub type PSP_DEVICE_INTERFACE_DETAIL_DATA_W = *mut SP_DEVICE_INTERFACE_DETAIL_DATA_W; 392 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINFO_LIST_DETAIL_DATA_A { 393 cbSize: DWORD, 394 ClassGuid: GUID, 395 RemoteMachineHandle: HANDLE, 396 RemoteMachineName: [CHAR; SP_MAX_MACHINENAME_LENGTH], 397 }} 398 pub type PSP_DEVINFO_LIST_DETAIL_DATA_A = *mut SP_DEVINFO_LIST_DETAIL_DATA_A; 399 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINFO_LIST_DETAIL_DATA_W { 400 cbSize: DWORD, 401 ClassGuid: GUID, 402 RemoteMachineHandle: HANDLE, 403 RemoteMachineName: [WCHAR; SP_MAX_MACHINENAME_LENGTH], 404 }} 405 pub type PSP_DEVINFO_LIST_DETAIL_DATA_W = *mut SP_DEVINFO_LIST_DETAIL_DATA_W; 406 pub const DIF_SELECTDEVICE: DI_FUNCTION = 0x00000001; 407 pub const DIF_INSTALLDEVICE: DI_FUNCTION = 0x00000002; 408 pub const DIF_ASSIGNRESOURCES: DI_FUNCTION = 0x00000003; 409 pub const DIF_PROPERTIES: DI_FUNCTION = 0x00000004; 410 pub const DIF_REMOVE: DI_FUNCTION = 0x00000005; 411 pub const DIF_FIRSTTIMESETUP: DI_FUNCTION = 0x00000006; 412 pub const DIF_FOUNDDEVICE: DI_FUNCTION = 0x00000007; 413 pub const DIF_SELECTCLASSDRIVERS: DI_FUNCTION = 0x00000008; 414 pub const DIF_VALIDATECLASSDRIVERS: DI_FUNCTION = 0x00000009; 415 pub const DIF_INSTALLCLASSDRIVERS: DI_FUNCTION = 0x0000000A; 416 pub const DIF_CALCDISKSPACE: DI_FUNCTION = 0x0000000B; 417 pub const DIF_DESTROYPRIVATEDATA: DI_FUNCTION = 0x0000000C; 418 pub const DIF_VALIDATEDRIVER: DI_FUNCTION = 0x0000000D; 419 pub const DIF_DETECT: DI_FUNCTION = 0x0000000F; 420 pub const DIF_INSTALLWIZARD: DI_FUNCTION = 0x00000010; 421 pub const DIF_DESTROYWIZARDDATA: DI_FUNCTION = 0x00000011; 422 pub const DIF_PROPERTYCHANGE: DI_FUNCTION = 0x00000012; 423 pub const DIF_ENABLECLASS: DI_FUNCTION = 0x00000013; 424 pub const DIF_DETECTVERIFY: DI_FUNCTION = 0x00000014; 425 pub const DIF_INSTALLDEVICEFILES: DI_FUNCTION = 0x00000015; 426 pub const DIF_UNREMOVE: DI_FUNCTION = 0x00000016; 427 pub const DIF_SELECTBESTCOMPATDRV: DI_FUNCTION = 0x00000017; 428 pub const DIF_ALLOW_INSTALL: DI_FUNCTION = 0x00000018; 429 pub const DIF_REGISTERDEVICE: DI_FUNCTION = 0x00000019; 430 pub const DIF_NEWDEVICEWIZARD_PRESELECT: DI_FUNCTION = 0x0000001A; 431 pub const DIF_NEWDEVICEWIZARD_SELECT: DI_FUNCTION = 0x0000001B; 432 pub const DIF_NEWDEVICEWIZARD_PREANALYZE: DI_FUNCTION = 0x0000001C; 433 pub const DIF_NEWDEVICEWIZARD_POSTANALYZE: DI_FUNCTION = 0x0000001D; 434 pub const DIF_NEWDEVICEWIZARD_FINISHINSTALL: DI_FUNCTION = 0x0000001E; 435 pub const DIF_UNUSED1: DI_FUNCTION = 0x0000001F; 436 pub const DIF_INSTALLINTERFACES: DI_FUNCTION = 0x00000020; 437 pub const DIF_DETECTCANCEL: DI_FUNCTION = 0x00000021; 438 pub const DIF_REGISTER_COINSTALLERS: DI_FUNCTION = 0x00000022; 439 pub const DIF_ADDPROPERTYPAGE_ADVANCED: DI_FUNCTION = 0x00000023; 440 pub const DIF_ADDPROPERTYPAGE_BASIC: DI_FUNCTION = 0x00000024; 441 pub const DIF_RESERVED1: DI_FUNCTION = 0x00000025; 442 pub const DIF_TROUBLESHOOTER: DI_FUNCTION = 0x00000026; 443 pub const DIF_POWERMESSAGEWAKE: DI_FUNCTION = 0x00000027; 444 pub const DIF_ADDREMOTEPROPERTYPAGE_ADVANCED: DI_FUNCTION = 0x00000028; 445 pub const DIF_UPDATEDRIVER_UI: DI_FUNCTION = 0x00000029; 446 pub const DIF_FINISHINSTALL_ACTION: DI_FUNCTION = 0x0000002A; 447 pub const DIF_RESERVED2: DI_FUNCTION = 0x00000030; 448 pub const DIF_MOVEDEVICE: DI_FUNCTION = 0x0000000E; 449 pub type DI_FUNCTION = UINT; 450 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINSTALL_PARAMS_A { 451 cbSize: DWORD, 452 Flags: DWORD, 453 FlagsEx: DWORD, 454 hwndParent: HWND, 455 InstallMsgHandler: PSP_FILE_CALLBACK_A, 456 InstallMsgHandlerContext: PVOID, 457 FileQueue: HSPFILEQ, 458 ClassInstallReserved: ULONG_PTR, 459 Reserved: DWORD, 460 DriverPath: [CHAR; MAX_PATH], 461 }} 462 pub type PSP_DEVINSTALL_PARAMS_A = *mut SP_DEVINSTALL_PARAMS_A; 463 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DEVINSTALL_PARAMS_W { 464 cbSize: DWORD, 465 Flags: DWORD, 466 FlagsEx: DWORD, 467 hwndParent: HWND, 468 InstallMsgHandler: PSP_FILE_CALLBACK_W, 469 InstallMsgHandlerContext: PVOID, 470 FileQueue: HSPFILEQ, 471 ClassInstallReserved: ULONG_PTR, 472 Reserved: DWORD, 473 DriverPath: [WCHAR; MAX_PATH], 474 }} 475 pub type PSP_DEVINSTALL_PARAMS_W = *mut SP_DEVINSTALL_PARAMS_W; 476 pub const DI_SHOWOEM: DWORD = 0x00000001; 477 pub const DI_SHOWCOMPAT: DWORD = 0x00000002; 478 pub const DI_SHOWCLASS: DWORD = 0x00000004; 479 pub const DI_SHOWALL: DWORD = 0x00000007; 480 pub const DI_NOVCP: DWORD = 0x00000008; 481 pub const DI_DIDCOMPAT: DWORD = 0x00000010; 482 pub const DI_DIDCLASS: DWORD = 0x00000020; 483 pub const DI_AUTOASSIGNRES: DWORD = 0x00000040; 484 pub const DI_NEEDRESTART: DWORD = 0x00000080; 485 pub const DI_NEEDREBOOT: DWORD = 0x00000100; 486 pub const DI_NOBROWSE: DWORD = 0x00000200; 487 pub const DI_MULTMFGS: DWORD = 0x00000400; 488 pub const DI_DISABLED: DWORD = 0x00000800; 489 pub const DI_GENERALPAGE_ADDED: DWORD = 0x00001000; 490 pub const DI_RESOURCEPAGE_ADDED: DWORD = 0x00002000; 491 pub const DI_PROPERTIES_CHANGE: DWORD = 0x00004000; 492 pub const DI_INF_IS_SORTED: DWORD = 0x00008000; 493 pub const DI_ENUMSINGLEINF: DWORD = 0x00010000; 494 pub const DI_DONOTCALLCONFIGMG: DWORD = 0x00020000; 495 pub const DI_INSTALLDISABLED: DWORD = 0x00040000; 496 pub const DI_COMPAT_FROM_CLASS: DWORD = 0x00080000; 497 pub const DI_CLASSINSTALLPARAMS: DWORD = 0x00100000; 498 pub const DI_NODI_DEFAULTACTION: DWORD = 0x00200000; 499 pub const DI_QUIETINSTALL: DWORD = 0x00800000; 500 pub const DI_NOFILECOPY: DWORD = 0x01000000; 501 pub const DI_FORCECOPY: DWORD = 0x02000000; 502 pub const DI_DRIVERPAGE_ADDED: DWORD = 0x04000000; 503 pub const DI_USECI_SELECTSTRINGS: DWORD = 0x08000000; 504 pub const DI_OVERRIDE_INFFLAGS: DWORD = 0x10000000; 505 pub const DI_PROPS_NOCHANGEUSAGE: DWORD = 0x20000000; 506 pub const DI_NOSELECTICONS: DWORD = 0x40000000; 507 pub const DI_NOWRITE_IDS: DWORD = 0x80000000; 508 pub const DI_FLAGSEX_RESERVED2: DWORD = 0x00000001; 509 pub const DI_FLAGSEX_RESERVED3: DWORD = 0x00000002; 510 pub const DI_FLAGSEX_CI_FAILED: DWORD = 0x00000004; 511 pub const DI_FLAGSEX_FINISHINSTALL_ACTION: DWORD = 0x00000008; 512 pub const DI_FLAGSEX_DIDINFOLIST: DWORD = 0x00000010; 513 pub const DI_FLAGSEX_DIDCOMPATINFO: DWORD = 0x00000020; 514 pub const DI_FLAGSEX_FILTERCLASSES: DWORD = 0x00000040; 515 pub const DI_FLAGSEX_SETFAILEDINSTALL: DWORD = 0x00000080; 516 pub const DI_FLAGSEX_DEVICECHANGE: DWORD = 0x00000100; 517 pub const DI_FLAGSEX_ALWAYSWRITEIDS: DWORD = 0x00000200; 518 pub const DI_FLAGSEX_PROPCHANGE_PENDING: DWORD = 0x00000400; 519 pub const DI_FLAGSEX_ALLOWEXCLUDEDDRVS: DWORD = 0x00000800; 520 pub const DI_FLAGSEX_NOUIONQUERYREMOVE: DWORD = 0x00001000; 521 pub const DI_FLAGSEX_USECLASSFORCOMPAT: DWORD = 0x00002000; 522 pub const DI_FLAGSEX_RESERVED4: DWORD = 0x00004000; 523 pub const DI_FLAGSEX_NO_DRVREG_MODIFY: DWORD = 0x00008000; 524 pub const DI_FLAGSEX_IN_SYSTEM_SETUP: DWORD = 0x00010000; 525 pub const DI_FLAGSEX_INET_DRIVER: DWORD = 0x00020000; 526 pub const DI_FLAGSEX_APPENDDRIVERLIST: DWORD = 0x00040000; 527 pub const DI_FLAGSEX_PREINSTALLBACKUP: DWORD = 0x00080000; 528 pub const DI_FLAGSEX_BACKUPONREPLACE: DWORD = 0x00100000; 529 pub const DI_FLAGSEX_DRIVERLIST_FROM_URL: DWORD = 0x00200000; 530 pub const DI_FLAGSEX_RESERVED1: DWORD = 0x00400000; 531 pub const DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS: DWORD = 0x00800000; 532 pub const DI_FLAGSEX_POWERPAGE_ADDED: DWORD = 0x01000000; 533 pub const DI_FLAGSEX_FILTERSIMILARDRIVERS: DWORD = 0x02000000; 534 pub const DI_FLAGSEX_INSTALLEDDRIVER: DWORD = 0x04000000; 535 pub const DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE: DWORD = 0x08000000; 536 pub const DI_FLAGSEX_ALTPLATFORM_DRVSEARCH: DWORD = 0x10000000; 537 pub const DI_FLAGSEX_RESTART_DEVICE_ONLY: DWORD = 0x20000000; 538 pub const DI_FLAGSEX_RECURSIVESEARCH: DWORD = 0x40000000; 539 pub const DI_FLAGSEX_SEARCH_PUBLISHED_INFS: DWORD = 0x80000000; 540 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_CLASSINSTALL_HEADER { 541 cbSize: DWORD, 542 InstallFunction: DI_FUNCTION, 543 }} 544 pub type PSP_CLASSINSTALL_HEADER = *mut SP_CLASSINSTALL_HEADER; 545 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_ENABLECLASS_PARAMS { 546 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 547 ClassGuid: GUID, 548 EnableMessage: DWORD, 549 }} 550 pub type PSP_ENABLECLASS_PARAMS = *mut SP_ENABLECLASS_PARAMS; 551 pub const ENABLECLASS_QUERY: DWORD = 0; 552 pub const ENABLECLASS_SUCCESS: DWORD = 1; 553 pub const ENABLECLASS_FAILURE: DWORD = 2; 554 pub const DICS_ENABLE: DWORD = 0x00000001; 555 pub const DICS_DISABLE: DWORD = 0x00000002; 556 pub const DICS_PROPCHANGE: DWORD = 0x00000003; 557 pub const DICS_START: DWORD = 0x00000004; 558 pub const DICS_STOP: DWORD = 0x00000005; 559 pub const DICS_FLAG_GLOBAL: DWORD = 0x00000001; 560 pub const DICS_FLAG_CONFIGSPECIFIC: DWORD = 0x00000002; 561 pub const DICS_FLAG_CONFIGGENERAL: DWORD = 0x00000004; 562 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_PROPCHANGE_PARAMS { 563 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 564 StateChange: DWORD, 565 Scope: DWORD, 566 HwProfile: DWORD, 567 }} 568 pub type PSP_PROPCHANGE_PARAMS = *mut SP_PROPCHANGE_PARAMS; 569 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_REMOVEDEVICE_PARAMS { 570 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 571 Scope: DWORD, 572 HwProfile: DWORD, 573 }} 574 pub type PSP_REMOVEDEVICE_PARAMS = *mut SP_REMOVEDEVICE_PARAMS; 575 pub const DI_REMOVEDEVICE_GLOBAL: DWORD = 0x00000001; 576 pub const DI_REMOVEDEVICE_CONFIGSPECIFIC: DWORD = 0x00000002; 577 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_UNREMOVEDEVICE_PARAMS { 578 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 579 Scope: DWORD, 580 HwProfile: DWORD, 581 }} 582 pub type PSP_UNREMOVEDEVICE_PARAMS = *mut SP_UNREMOVEDEVICE_PARAMS; 583 pub const DI_UNREMOVEDEVICE_CONFIGSPECIFIC: DWORD = 0x00000002; 584 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_SELECTDEVICE_PARAMS_A { 585 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 586 Title: [CHAR; MAX_TITLE_LEN], 587 Instructions: [CHAR; MAX_INSTRUCTION_LEN], 588 ListLabel: [CHAR; MAX_LABEL_LEN], 589 SubTitle: [CHAR; MAX_SUBTITLE_LEN], 590 Reserved: [BYTE; 2], 591 }} 592 pub type PSP_SELECTDEVICE_PARAMS_A = *mut SP_SELECTDEVICE_PARAMS_A; 593 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_SELECTDEVICE_PARAMS_W { 594 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 595 Title: [WCHAR; MAX_TITLE_LEN], 596 Instructions: [WCHAR; MAX_INSTRUCTION_LEN], 597 ListLabel: [WCHAR; MAX_LABEL_LEN], 598 SubTitle: [WCHAR; MAX_SUBTITLE_LEN], 599 }} 600 pub type PSP_SELECTDEVICE_PARAMS_W = *mut SP_SELECTDEVICE_PARAMS_W; 601 FN!{stdcall PDETECT_PROGRESS_NOTIFY( 602 ProgressNotifyParam: PVOID, 603 DetectComplete: DWORD, 604 ) -> BOOL} 605 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DETECTDEVICE_PARAMS { 606 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 607 DetectProgressNotify: PDETECT_PROGRESS_NOTIFY, 608 ProgressNotifyParam: PVOID, 609 }} 610 pub type PSP_DETECTDEVICE_PARAMS = *mut SP_DETECTDEVICE_PARAMS; 611 pub const MAX_INSTALLWIZARD_DYNAPAGES: usize = 20; 612 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_INSTALLWIZARD_DATA { 613 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 614 Flags: DWORD, 615 DynamicPages: [HPROPSHEETPAGE; MAX_INSTALLWIZARD_DYNAPAGES], 616 NumDynamicPages: DWORD, 617 DynamicPageFlags: DWORD, 618 PrivateFlags: DWORD, 619 PrivateData: LPARAM, 620 hwndWizardDlg: HWND, 621 }} 622 pub type PSP_INSTALLWIZARD_DATA = *mut SP_INSTALLWIZARD_DATA; 623 pub const NDW_INSTALLFLAG_DIDFACTDEFS: DWORD = 0x00000001; 624 pub const NDW_INSTALLFLAG_HARDWAREALLREADYIN: DWORD = 0x00000002; 625 pub const NDW_INSTALLFLAG_NEEDRESTART: DWORD = DI_NEEDRESTART; 626 pub const NDW_INSTALLFLAG_NEEDREBOOT: DWORD = DI_NEEDREBOOT; 627 pub const NDW_INSTALLFLAG_NEEDSHUTDOWN: DWORD = 0x00000200; 628 pub const NDW_INSTALLFLAG_EXPRESSINTRO: DWORD = 0x00000400; 629 pub const NDW_INSTALLFLAG_SKIPISDEVINSTALLED: DWORD = 0x00000800; 630 pub const NDW_INSTALLFLAG_NODETECTEDDEVS: DWORD = 0x00001000; 631 pub const NDW_INSTALLFLAG_INSTALLSPECIFIC: DWORD = 0x00002000; 632 pub const NDW_INSTALLFLAG_SKIPCLASSLIST: DWORD = 0x00004000; 633 pub const NDW_INSTALLFLAG_CI_PICKED_OEM: DWORD = 0x00008000; 634 pub const NDW_INSTALLFLAG_PCMCIAMODE: DWORD = 0x00010000; 635 pub const NDW_INSTALLFLAG_PCMCIADEVICE: DWORD = 0x00020000; 636 pub const NDW_INSTALLFLAG_USERCANCEL: DWORD = 0x00040000; 637 pub const NDW_INSTALLFLAG_KNOWNCLASS: DWORD = 0x00080000; 638 pub const DYNAWIZ_FLAG_PAGESADDED: DWORD = 0x00000001; 639 pub const DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT: DWORD = 0x00000008; 640 pub const DYNAWIZ_FLAG_INSTALLDET_NEXT: DWORD = 0x00000002; 641 pub const DYNAWIZ_FLAG_INSTALLDET_PREV: DWORD = 0x00000004; 642 pub const MIN_IDD_DYNAWIZ_RESOURCE_ID: c_int = 10000; 643 pub const MAX_IDD_DYNAWIZ_RESOURCE_ID: c_int = 11000; 644 pub const IDD_DYNAWIZ_FIRSTPAGE: c_int = 10000; 645 pub const IDD_DYNAWIZ_SELECT_PREVPAGE: c_int = 10001; 646 pub const IDD_DYNAWIZ_SELECT_NEXTPAGE: c_int = 10002; 647 pub const IDD_DYNAWIZ_ANALYZE_PREVPAGE: c_int = 10003; 648 pub const IDD_DYNAWIZ_ANALYZE_NEXTPAGE: c_int = 10004; 649 pub const IDD_DYNAWIZ_SELECTDEV_PAGE: c_int = 10009; 650 pub const IDD_DYNAWIZ_ANALYZEDEV_PAGE: c_int = 10010; 651 pub const IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE: c_int = 10011; 652 pub const IDD_DYNAWIZ_SELECTCLASS_PAGE: c_int = 10012; 653 pub const IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE: c_int = 10006; 654 pub const IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE: c_int = 10007; 655 pub const IDD_DYNAWIZ_INSTALLDETECTED_NODEVS: c_int = 10008; 656 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_NEWDEVICEWIZARD_DATA { 657 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 658 Flags: DWORD, 659 DynamicPages: [HPROPSHEETPAGE; MAX_INSTALLWIZARD_DYNAPAGES], 660 NumDynamicPages: DWORD, 661 hwndWizardDlg: HWND, 662 }} 663 pub type PSP_NEWDEVICEWIZARD_DATA = *mut SP_NEWDEVICEWIZARD_DATA; 664 pub type SP_ADDPROPERTYPAGE_DATA = SP_NEWDEVICEWIZARD_DATA; 665 pub type PSP_ADDPROPERTYPAGE_DATA = PSP_NEWDEVICEWIZARD_DATA; 666 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_TROUBLESHOOTER_PARAMS_A { 667 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 668 ChmFile: [CHAR; MAX_PATH], 669 HtmlTroubleShooter: [CHAR; MAX_PATH], 670 }} 671 pub type PSP_TROUBLESHOOTER_PARAMS_A = *mut SP_TROUBLESHOOTER_PARAMS_A; 672 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_TROUBLESHOOTER_PARAMS_W { 673 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 674 ChmFile: [WCHAR; MAX_PATH], 675 HtmlTroubleShooter: [WCHAR; MAX_PATH], 676 }} 677 pub type PSP_TROUBLESHOOTER_PARAMS_W = *mut SP_TROUBLESHOOTER_PARAMS_W; 678 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_POWERMESSAGEWAKE_PARAMS_A { 679 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 680 PowerMessageWake: [CHAR; LINE_LEN * 2], 681 }} 682 pub type PSP_POWERMESSAGEWAKE_PARAMS_A = *mut SP_POWERMESSAGEWAKE_PARAMS_A; 683 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_POWERMESSAGEWAKE_PARAMS_W { 684 ClassInstallHeader: SP_CLASSINSTALL_HEADER, 685 PowerMessageWake: [WCHAR; LINE_LEN * 2], 686 }} 687 pub type PSP_POWERMESSAGEWAKE_PARAMS_W = *mut SP_POWERMESSAGEWAKE_PARAMS_W; 688 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V2_A { 689 cbSize: DWORD, 690 DriverType: DWORD, 691 Reserved: ULONG_PTR, 692 Description: [CHAR; LINE_LEN], 693 MfgName: [CHAR; LINE_LEN], 694 ProviderName: [CHAR; LINE_LEN], 695 DriverDate: FILETIME, 696 DriverVersion: DWORDLONG, 697 }} 698 pub type PSP_DRVINFO_DATA_V2_A = *mut SP_DRVINFO_DATA_V2_A; 699 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V2_W { 700 cbSize: DWORD, 701 DriverType: DWORD, 702 Reserved: ULONG_PTR, 703 Description: [WCHAR; LINE_LEN], 704 MfgName: [WCHAR; LINE_LEN], 705 ProviderName: [WCHAR; LINE_LEN], 706 DriverDate: FILETIME, 707 DriverVersion: DWORDLONG, 708 }} 709 pub type PSP_DRVINFO_DATA_V2_W = *mut SP_DRVINFO_DATA_V2_W; 710 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V1_A { 711 cbSize: DWORD, 712 DriverType: DWORD, 713 Reserved: ULONG_PTR, 714 Description: [CHAR; LINE_LEN], 715 MfgName: [CHAR; LINE_LEN], 716 ProviderName: [CHAR; LINE_LEN], 717 }} 718 pub type PSP_DRVINFO_DATA_V1_A = *mut SP_DRVINFO_DATA_V1_A; 719 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DATA_V1_W { 720 cbSize: DWORD, 721 DriverType: DWORD, 722 Reserved: ULONG_PTR, 723 Description: [WCHAR; LINE_LEN], 724 MfgName: [WCHAR; LINE_LEN], 725 ProviderName: [WCHAR; LINE_LEN], 726 }} 727 pub type PSP_DRVINFO_DATA_V1_W = *mut SP_DRVINFO_DATA_V1_W; 728 pub type SP_DRVINFO_DATA_A = SP_DRVINFO_DATA_V2_A; 729 pub type PSP_DRVINFO_DATA_A = PSP_DRVINFO_DATA_V2_A; 730 pub type SP_DRVINFO_DATA_W = SP_DRVINFO_DATA_V2_W; 731 pub type PSP_DRVINFO_DATA_W = PSP_DRVINFO_DATA_V2_W; 732 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DETAIL_DATA_A { 733 cbSize: DWORD, 734 InfDate: FILETIME, 735 CompatIDsOffset: DWORD, 736 CompatIDsLength: DWORD, 737 Reserved: ULONG_PTR, 738 SectionName: [CHAR; LINE_LEN], 739 InfFileName: [CHAR; MAX_PATH], 740 DrvDescription: [CHAR; LINE_LEN], 741 HardwareID: [CHAR; ANYSIZE_ARRAY], 742 }} 743 pub type PSP_DRVINFO_DETAIL_DATA_A = *mut SP_DRVINFO_DETAIL_DATA_A; 744 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINFO_DETAIL_DATA_W { 745 cbSize: DWORD, 746 InfDate: FILETIME, 747 CompatIDsOffset: DWORD, 748 CompatIDsLength: DWORD, 749 Reserved: ULONG_PTR, 750 SectionName: [WCHAR; LINE_LEN], 751 InfFileName: [WCHAR; MAX_PATH], 752 DrvDescription: [WCHAR; LINE_LEN], 753 HardwareID: [WCHAR; ANYSIZE_ARRAY], 754 }} 755 pub type PSP_DRVINFO_DETAIL_DATA_W = *mut SP_DRVINFO_DETAIL_DATA_W; 756 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_DRVINSTALL_PARAMS { 757 cbSize: DWORD, 758 Rank: DWORD, 759 Flags: DWORD, 760 PrivateData: DWORD_PTR, 761 Reserved: DWORD, 762 }} 763 pub type PSP_DRVINSTALL_PARAMS = *mut SP_DRVINSTALL_PARAMS; 764 pub const DNF_DUPDESC: DWORD = 0x00000001; 765 pub const DNF_OLDDRIVER: DWORD = 0x00000002; 766 pub const DNF_EXCLUDEFROMLIST: DWORD = 0x00000004; 767 pub const DNF_NODRIVER: DWORD = 0x00000008; 768 pub const DNF_LEGACYINF: DWORD = 0x00000010; 769 pub const DNF_CLASS_DRIVER: DWORD = 0x00000020; 770 pub const DNF_COMPATIBLE_DRIVER: DWORD = 0x00000040; 771 pub const DNF_INET_DRIVER: DWORD = 0x00000080; 772 pub const DNF_UNUSED1: DWORD = 0x00000100; 773 pub const DNF_UNUSED2: DWORD = 0x00000200; 774 pub const DNF_OLD_INET_DRIVER: DWORD = 0x00000400; 775 pub const DNF_BAD_DRIVER: DWORD = 0x00000800; 776 pub const DNF_DUPPROVIDER: DWORD = 0x00001000; 777 pub const DNF_INF_IS_SIGNED: DWORD = 0x00002000; 778 pub const DNF_OEM_F6_INF: DWORD = 0x00004000; 779 pub const DNF_DUPDRIVERVER: DWORD = 0x00008000; 780 pub const DNF_BASIC_DRIVER: DWORD = 0x00010000; 781 pub const DNF_AUTHENTICODE_SIGNED: DWORD = 0x00020000; 782 pub const DNF_INSTALLEDDRIVER: DWORD = 0x00040000; 783 pub const DNF_ALWAYSEXCLUDEFROMLIST: DWORD = 0x00080000; 784 pub const DNF_INBOX_DRIVER: DWORD = 0x00100000; 785 pub const DNF_REQUESTADDITIONALSOFTWARE: DWORD = 0x00200000; 786 pub const DNF_UNUSED_22: DWORD = 0x00400000; 787 pub const DNF_UNUSED_23: DWORD = 0x00800000; 788 pub const DNF_UNUSED_24: DWORD = 0x01000000; 789 pub const DNF_UNUSED_25: DWORD = 0x02000000; 790 pub const DNF_UNUSED_26: DWORD = 0x04000000; 791 pub const DNF_UNUSED_27: DWORD = 0x08000000; 792 pub const DNF_UNUSED_28: DWORD = 0x10000000; 793 pub const DNF_UNUSED_29: DWORD = 0x20000000; 794 pub const DNF_UNUSED_30: DWORD = 0x40000000; 795 pub const DNF_UNUSED_31: DWORD = 0x80000000; 796 pub const DRIVER_HARDWAREID_RANK: DWORD = 0x00000FFF; 797 pub const DRIVER_HARDWAREID_MASK: DWORD = 0x80000FFF; 798 pub const DRIVER_UNTRUSTED_RANK: DWORD = 0x80000000; 799 pub const DRIVER_W9X_SUSPECT_RANK: DWORD = 0xC0000000; 800 FN!{stdcall PSP_DETSIG_CMPPROC( 801 DeviceInfoSet: HDEVINFO, 802 NewDeviceData: PSP_DEVINFO_DATA, 803 ExistingDeviceData: PSP_DEVINFO_DATA, 804 CompareContext: PVOID, 805 ) -> DWORD} 806 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct COINSTALLER_CONTEXT_DATA { 807 PostProcessing: BOOL, 808 InstallResult: DWORD, 809 PrivateData: PVOID, 810 }} 811 pub type PCOINSTALLER_CONTEXT_DATA = *mut COINSTALLER_CONTEXT_DATA; 812 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_CLASSIMAGELIST_DATA { 813 cbSize: DWORD, 814 ImageList: HIMAGELIST, 815 Reserved: ULONG_PTR, 816 }} 817 pub type PSP_CLASSIMAGELIST_DATA = *mut SP_CLASSIMAGELIST_DATA; 818 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_PROPSHEETPAGE_REQUEST { 819 cbSize: DWORD, 820 PageRequested: DWORD, 821 DeviceInfoSet: HDEVINFO, 822 DeviceInfoData: PSP_DEVINFO_DATA, 823 }} 824 pub type PSP_PROPSHEETPAGE_REQUEST = *mut SP_PROPSHEETPAGE_REQUEST; 825 pub const SPPSR_SELECT_DEVICE_RESOURCES: DWORD = 1; 826 pub const SPPSR_ENUM_BASIC_DEVICE_PROPERTIES: DWORD = 2; 827 pub const SPPSR_ENUM_ADV_DEVICE_PROPERTIES: DWORD = 3; 828 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V2_A { 829 cbSize: DWORD, 830 FullInfPath: [CHAR; MAX_PATH], 831 FilenameOffset: INT, 832 ReinstallInstance: [CHAR; MAX_PATH], 833 }} 834 pub type PSP_BACKUP_QUEUE_PARAMS_V2_A = *mut SP_BACKUP_QUEUE_PARAMS_V2_A; 835 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V2_W { 836 cbSize: DWORD, 837 FullInfPath: [WCHAR; MAX_PATH], 838 FilenameOffset: INT, 839 ReinstallInstance: [WCHAR; MAX_PATH], 840 }} 841 pub type PSP_BACKUP_QUEUE_PARAMS_V2_W = *mut SP_BACKUP_QUEUE_PARAMS_V2_W; 842 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V1_A { 843 cbSize: DWORD, 844 FullInfPath: [CHAR; MAX_PATH], 845 FilenameOffset: INT, 846 }} 847 pub type PSP_BACKUP_QUEUE_PARAMS_V1_A = *mut SP_BACKUP_QUEUE_PARAMS_V1_A; 848 STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct SP_BACKUP_QUEUE_PARAMS_V1_W { 849 cbSize: DWORD, 850 FullInfPath: [WCHAR; MAX_PATH], 851 FilenameOffset: INT, 852 }} 853 pub type PSP_BACKUP_QUEUE_PARAMS_V1_W = *mut SP_BACKUP_QUEUE_PARAMS_V1_W; 854 pub type SP_BACKUP_QUEUE_PARAMS_A = SP_BACKUP_QUEUE_PARAMS_V2_A; 855 pub type PSP_BACKUP_QUEUE_PARAMS_A = PSP_BACKUP_QUEUE_PARAMS_V2_A; 856 pub type SP_BACKUP_QUEUE_PARAMS_W = SP_BACKUP_QUEUE_PARAMS_V2_W; 857 pub type PSP_BACKUP_QUEUE_PARAMS_W = PSP_BACKUP_QUEUE_PARAMS_V2_W; 858 pub const ERROR_EXPECTED_SECTION_NAME: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0; 859 pub const ERROR_BAD_SECTION_NAME_LINE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1; 860 pub const ERROR_SECTION_NAME_TOO_LONG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2; 861 pub const ERROR_GENERAL_SYNTAX: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3; 862 pub const ERROR_WRONG_INF_STYLE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100; 863 pub const ERROR_SECTION_NOT_FOUND: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101; 864 pub const ERROR_LINE_NOT_FOUND: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102; 865 pub const ERROR_NO_BACKUP: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103; 866 pub const ERROR_NO_ASSOCIATED_CLASS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200; 867 pub const ERROR_CLASS_MISMATCH: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201; 868 pub const ERROR_DUPLICATE_FOUND: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202; 869 pub const ERROR_NO_DRIVER_SELECTED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203; 870 pub const ERROR_KEY_DOES_NOT_EXIST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204; 871 pub const ERROR_INVALID_DEVINST_NAME: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 872 | 0x205; 873 pub const ERROR_INVALID_CLASS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206; 874 pub const ERROR_DEVINST_ALREADY_EXISTS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 875 | 0x207; 876 pub const ERROR_DEVINFO_NOT_REGISTERED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 877 | 0x208; 878 pub const ERROR_INVALID_REG_PROPERTY: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 879 | 0x209; 880 pub const ERROR_NO_INF: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A; 881 pub const ERROR_NO_SUCH_DEVINST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B; 882 pub const ERROR_CANT_LOAD_CLASS_ICON: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 883 | 0x20C; 884 pub const ERROR_INVALID_CLASS_INSTALLER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 885 | 0x20D; 886 pub const ERROR_DI_DO_DEFAULT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E; 887 pub const ERROR_DI_NOFILECOPY: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F; 888 pub const ERROR_INVALID_HWPROFILE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210; 889 pub const ERROR_NO_DEVICE_SELECTED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211; 890 pub const ERROR_DEVINFO_LIST_LOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212; 891 pub const ERROR_DEVINFO_DATA_LOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213; 892 pub const ERROR_DI_BAD_PATH: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214; 893 pub const ERROR_NO_CLASSINSTALL_PARAMS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 894 | 0x215; 895 pub const ERROR_FILEQUEUE_LOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216; 896 pub const ERROR_BAD_SERVICE_INSTALLSECT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 897 | 0x217; 898 pub const ERROR_NO_CLASS_DRIVER_LIST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 899 | 0x218; 900 pub const ERROR_NO_ASSOCIATED_SERVICE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 901 | 0x219; 902 pub const ERROR_NO_DEFAULT_DEVICE_INTERFACE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 903 | 0x21A; 904 pub const ERROR_DEVICE_INTERFACE_ACTIVE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 905 | 0x21B; 906 pub const ERROR_DEVICE_INTERFACE_REMOVED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 907 | 0x21C; 908 pub const ERROR_BAD_INTERFACE_INSTALLSECT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 909 | 0x21D; 910 pub const ERROR_NO_SUCH_INTERFACE_CLASS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 911 | 0x21E; 912 pub const ERROR_INVALID_REFERENCE_STRING: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 913 | 0x21F; 914 pub const ERROR_INVALID_MACHINENAME: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220; 915 pub const ERROR_REMOTE_COMM_FAILURE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221; 916 pub const ERROR_MACHINE_UNAVAILABLE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222; 917 pub const ERROR_NO_CONFIGMGR_SERVICES: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 918 | 0x223; 919 pub const ERROR_INVALID_PROPPAGE_PROVIDER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 920 | 0x224; 921 pub const ERROR_NO_SUCH_DEVICE_INTERFACE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 922 | 0x225; 923 pub const ERROR_DI_POSTPROCESSING_REQUIRED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 924 | 0x226; 925 pub const ERROR_INVALID_COINSTALLER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227; 926 pub const ERROR_NO_COMPAT_DRIVERS: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228; 927 pub const ERROR_NO_DEVICE_ICON: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229; 928 pub const ERROR_INVALID_INF_LOGCONFIG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 929 | 0x22A; 930 pub const ERROR_DI_DONT_INSTALL: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B; 931 pub const ERROR_INVALID_FILTER_DRIVER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 932 | 0x22C; 933 pub const ERROR_NON_WINDOWS_NT_DRIVER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 934 | 0x22D; 935 pub const ERROR_NON_WINDOWS_DRIVER: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E; 936 pub const ERROR_NO_CATALOG_FOR_OEM_INF: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 937 | 0x22F; 938 pub const ERROR_DEVINSTALL_QUEUE_NONNATIVE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 939 | 0x230; 940 pub const ERROR_NOT_DISABLEABLE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231; 941 pub const ERROR_CANT_REMOVE_DEVINST: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232; 942 pub const ERROR_INVALID_TARGET: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x233; 943 pub const ERROR_DRIVER_NONNATIVE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x234; 944 pub const ERROR_IN_WOW64: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x235; 945 pub const ERROR_SET_SYSTEM_RESTORE_POINT: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 946 | 0x236; 947 pub const ERROR_SCE_DISABLED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x238; 948 pub const ERROR_UNKNOWN_EXCEPTION: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x239; 949 pub const ERROR_PNP_REGISTRY_ERROR: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x23A; 950 pub const ERROR_REMOTE_REQUEST_UNSUPPORTED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 951 | 0x23B; 952 pub const ERROR_NOT_AN_INSTALLED_OEM_INF: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 953 | 0x23C; 954 pub const ERROR_INF_IN_USE_BY_DEVICES: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 955 | 0x23D; 956 pub const ERROR_DI_FUNCTION_OBSOLETE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 957 | 0x23E; 958 pub const ERROR_NO_AUTHENTICODE_CATALOG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 959 | 0x23F; 960 pub const ERROR_AUTHENTICODE_DISALLOWED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 961 | 0x240; 962 pub const ERROR_AUTHENTICODE_TRUSTED_PUBLISHER: DWORD = APPLICATION_ERROR_MASK 963 | ERROR_SEVERITY_ERROR | 0x241; 964 pub const ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED: DWORD = APPLICATION_ERROR_MASK 965 | ERROR_SEVERITY_ERROR | 0x242; 966 pub const ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED: DWORD = APPLICATION_ERROR_MASK 967 | ERROR_SEVERITY_ERROR | 0x243; 968 pub const ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH: DWORD = APPLICATION_ERROR_MASK 969 | ERROR_SEVERITY_ERROR | 0x244; 970 pub const ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE: DWORD = APPLICATION_ERROR_MASK 971 | ERROR_SEVERITY_ERROR | 0x245; 972 pub const ERROR_DEVICE_INSTALLER_NOT_READY: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 973 | 0x246; 974 pub const ERROR_DRIVER_STORE_ADD_FAILED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 975 | 0x247; 976 pub const ERROR_DEVICE_INSTALL_BLOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 977 | 0x248; 978 pub const ERROR_DRIVER_INSTALL_BLOCKED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 979 | 0x249; 980 pub const ERROR_WRONG_INF_TYPE: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x24A; 981 pub const ERROR_FILE_HASH_NOT_IN_CATALOG: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 982 | 0x24B; 983 pub const ERROR_DRIVER_STORE_DELETE_FAILED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 984 | 0x24C; 985 pub const ERROR_UNRECOVERABLE_STACK_OVERFLOW: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 986 | 0x300; 987 pub const EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW: DWORD = ERROR_UNRECOVERABLE_STACK_OVERFLOW; 988 pub const ERROR_NO_DEFAULT_INTERFACE_DEVICE: DWORD = ERROR_NO_DEFAULT_DEVICE_INTERFACE; 989 pub const ERROR_INTERFACE_DEVICE_ACTIVE: DWORD = ERROR_DEVICE_INTERFACE_ACTIVE; 990 pub const ERROR_INTERFACE_DEVICE_REMOVED: DWORD = ERROR_DEVICE_INTERFACE_REMOVED; 991 pub const ERROR_NO_SUCH_INTERFACE_DEVICE: DWORD = ERROR_NO_SUCH_DEVICE_INTERFACE; 992 pub const ERROR_NOT_INSTALLED: DWORD = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR 993 | 0x1000; 994 extern "system" { SetupGetInfInformationA( InfSpec: LPCVOID, SearchControl: DWORD, ReturnBuffer: PSP_INF_INFORMATION, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL995 pub fn SetupGetInfInformationA( 996 InfSpec: LPCVOID, 997 SearchControl: DWORD, 998 ReturnBuffer: PSP_INF_INFORMATION, 999 ReturnBufferSize: DWORD, 1000 RequiredSize: PDWORD, 1001 ) -> BOOL; SetupGetInfInformationW( InfSpec: LPCVOID, SearchControl: DWORD, ReturnBuffer: PSP_INF_INFORMATION, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1002 pub fn SetupGetInfInformationW( 1003 InfSpec: LPCVOID, 1004 SearchControl: DWORD, 1005 ReturnBuffer: PSP_INF_INFORMATION, 1006 ReturnBufferSize: DWORD, 1007 RequiredSize: PDWORD, 1008 ) -> BOOL; 1009 } 1010 pub const INFINFO_INF_SPEC_IS_HINF: DWORD = 1; 1011 pub const INFINFO_INF_NAME_IS_ABSOLUTE: DWORD = 2; 1012 pub const INFINFO_DEFAULT_SEARCH: DWORD = 3; 1013 pub const INFINFO_REVERSE_DEFAULT_SEARCH: DWORD = 4; 1014 pub const INFINFO_INF_PATH_LIST_SEARCH: DWORD = 5; 1015 extern "system" { SetupQueryInfFileInformationA( InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1016 pub fn SetupQueryInfFileInformationA( 1017 InfInformation: PSP_INF_INFORMATION, 1018 InfIndex: UINT, 1019 ReturnBuffer: PSTR, 1020 ReturnBufferSize: DWORD, 1021 RequiredSize: PDWORD, 1022 ) -> BOOL; SetupQueryInfFileInformationW( InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1023 pub fn SetupQueryInfFileInformationW( 1024 InfInformation: PSP_INF_INFORMATION, 1025 InfIndex: UINT, 1026 ReturnBuffer: PWSTR, 1027 ReturnBufferSize: DWORD, 1028 RequiredSize: PDWORD, 1029 ) -> BOOL; SetupQueryInfOriginalFileInformationA( InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_A, ) -> BOOL1030 pub fn SetupQueryInfOriginalFileInformationA( 1031 InfInformation: PSP_INF_INFORMATION, 1032 InfIndex: UINT, 1033 AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, 1034 OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_A, 1035 ) -> BOOL; SetupQueryInfOriginalFileInformationW( InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_W, ) -> BOOL1036 pub fn SetupQueryInfOriginalFileInformationW( 1037 InfInformation: PSP_INF_INFORMATION, 1038 InfIndex: UINT, 1039 AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, 1040 OriginalFileInfo: PSP_ORIGINAL_FILE_INFO_W, 1041 ) -> BOOL; SetupQueryInfVersionInformationA( InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, Key: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1042 pub fn SetupQueryInfVersionInformationA( 1043 InfInformation: PSP_INF_INFORMATION, 1044 InfIndex: UINT, 1045 Key: PCSTR, 1046 ReturnBuffer: PSTR, 1047 ReturnBufferSize: DWORD, 1048 RequiredSize: PDWORD, 1049 ) -> BOOL; SetupQueryInfVersionInformationW( InfInformation: PSP_INF_INFORMATION, InfIndex: UINT, Key: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1050 pub fn SetupQueryInfVersionInformationW( 1051 InfInformation: PSP_INF_INFORMATION, 1052 InfIndex: UINT, 1053 Key: PCWSTR, 1054 ReturnBuffer: PWSTR, 1055 ReturnBufferSize: DWORD, 1056 RequiredSize: PDWORD, 1057 ) -> BOOL; SetupGetInfDriverStoreLocationA( FileName: PCSTR, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, LocaleName: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1058 pub fn SetupGetInfDriverStoreLocationA( 1059 FileName: PCSTR, 1060 AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, 1061 LocaleName: PCSTR, 1062 ReturnBuffer: PSTR, 1063 ReturnBufferSize: DWORD, 1064 RequiredSize: PDWORD, 1065 ) -> BOOL; SetupGetInfDriverStoreLocationW( FileName: PCWSTR, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, LocaleName: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1066 pub fn SetupGetInfDriverStoreLocationW( 1067 FileName: PCWSTR, 1068 AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, 1069 LocaleName: PCWSTR, 1070 ReturnBuffer: PWSTR, 1071 ReturnBufferSize: DWORD, 1072 RequiredSize: PDWORD, 1073 ) -> BOOL; SetupGetInfPublishedNameA( DriverStoreLocation: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1074 pub fn SetupGetInfPublishedNameA( 1075 DriverStoreLocation: PCSTR, 1076 ReturnBuffer: PSTR, 1077 ReturnBufferSize: DWORD, 1078 RequiredSize: PDWORD, 1079 ) -> BOOL; SetupGetInfPublishedNameW( DriverStoreLocation: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1080 pub fn SetupGetInfPublishedNameW( 1081 DriverStoreLocation: PCWSTR, 1082 ReturnBuffer: PWSTR, 1083 ReturnBufferSize: DWORD, 1084 RequiredSize: PDWORD, 1085 ) -> BOOL; SetupGetInfFileListA( DirectoryPath: PCSTR, InfStyle: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1086 pub fn SetupGetInfFileListA( 1087 DirectoryPath: PCSTR, 1088 InfStyle: DWORD, 1089 ReturnBuffer: PSTR, 1090 ReturnBufferSize: DWORD, 1091 RequiredSize: PDWORD, 1092 ) -> BOOL; SetupGetInfFileListW( DirectoryPath: PCWSTR, InfStyle: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1093 pub fn SetupGetInfFileListW( 1094 DirectoryPath: PCWSTR, 1095 InfStyle: DWORD, 1096 ReturnBuffer: PWSTR, 1097 ReturnBufferSize: DWORD, 1098 RequiredSize: PDWORD, 1099 ) -> BOOL; SetupOpenInfFileW( FileName: PCWSTR, InfClass: PCWSTR, InfStyle: DWORD, ErrorLine: PUINT, ) -> HINF1100 pub fn SetupOpenInfFileW( 1101 FileName: PCWSTR, 1102 InfClass: PCWSTR, 1103 InfStyle: DWORD, 1104 ErrorLine: PUINT, 1105 ) -> HINF; SetupOpenInfFileA( FileName: PCSTR, InfClass: PCSTR, InfStyle: DWORD, ErrorLine: PUINT, ) -> HINF1106 pub fn SetupOpenInfFileA( 1107 FileName: PCSTR, 1108 InfClass: PCSTR, 1109 InfStyle: DWORD, 1110 ErrorLine: PUINT, 1111 ) -> HINF; SetupOpenMasterInf() -> HINF1112 pub fn SetupOpenMasterInf() -> HINF; SetupOpenAppendInfFileW( FileName: PCWSTR, InfHandle: HINF, ErrorLine: PUINT, ) -> BOOL1113 pub fn SetupOpenAppendInfFileW( 1114 FileName: PCWSTR, 1115 InfHandle: HINF, 1116 ErrorLine: PUINT, 1117 ) -> BOOL; SetupOpenAppendInfFileA( FileName: PCSTR, InfHandle: HINF, ErrorLine: PUINT, ) -> BOOL1118 pub fn SetupOpenAppendInfFileA( 1119 FileName: PCSTR, 1120 InfHandle: HINF, 1121 ErrorLine: PUINT, 1122 ) -> BOOL; SetupCloseInfFile( InfHandle: HINF, ) -> ()1123 pub fn SetupCloseInfFile( 1124 InfHandle: HINF, 1125 ) -> (); SetupFindFirstLineA( InfHandle: HINF, Section: PCSTR, Key: PCSTR, Context: PINFCONTEXT, ) -> BOOL1126 pub fn SetupFindFirstLineA( 1127 InfHandle: HINF, 1128 Section: PCSTR, 1129 Key: PCSTR, 1130 Context: PINFCONTEXT, 1131 ) -> BOOL; SetupFindFirstLineW( InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, Context: PINFCONTEXT, ) -> BOOL1132 pub fn SetupFindFirstLineW( 1133 InfHandle: HINF, 1134 Section: PCWSTR, 1135 Key: PCWSTR, 1136 Context: PINFCONTEXT, 1137 ) -> BOOL; SetupFindNextLine( ContextIn: PINFCONTEXT, ContextOut: PINFCONTEXT, ) -> BOOL1138 pub fn SetupFindNextLine( 1139 ContextIn: PINFCONTEXT, 1140 ContextOut: PINFCONTEXT, 1141 ) -> BOOL; SetupFindNextMatchLineA( ContextIn: PINFCONTEXT, Key: PCSTR, ContextOut: PINFCONTEXT, ) -> BOOL1142 pub fn SetupFindNextMatchLineA( 1143 ContextIn: PINFCONTEXT, 1144 Key: PCSTR, 1145 ContextOut: PINFCONTEXT, 1146 ) -> BOOL; SetupFindNextMatchLineW( ContextIn: PINFCONTEXT, Key: PCWSTR, ContextOut: PINFCONTEXT, ) -> BOOL1147 pub fn SetupFindNextMatchLineW( 1148 ContextIn: PINFCONTEXT, 1149 Key: PCWSTR, 1150 ContextOut: PINFCONTEXT, 1151 ) -> BOOL; SetupGetLineByIndexA( InfHandle: HINF, Section: PCSTR, Index: DWORD, Context: PINFCONTEXT, ) -> BOOL1152 pub fn SetupGetLineByIndexA( 1153 InfHandle: HINF, 1154 Section: PCSTR, 1155 Index: DWORD, 1156 Context: PINFCONTEXT, 1157 ) -> BOOL; SetupGetLineByIndexW( InfHandle: HINF, Section: PCWSTR, Index: DWORD, Context: PINFCONTEXT, ) -> BOOL1158 pub fn SetupGetLineByIndexW( 1159 InfHandle: HINF, 1160 Section: PCWSTR, 1161 Index: DWORD, 1162 Context: PINFCONTEXT, 1163 ) -> BOOL; SetupGetLineCountA( InfHandle: HINF, Section: PCSTR, ) -> LONG1164 pub fn SetupGetLineCountA( 1165 InfHandle: HINF, 1166 Section: PCSTR, 1167 ) -> LONG; SetupGetLineCountW( InfHandle: HINF, Section: PCWSTR, ) -> LONG1168 pub fn SetupGetLineCountW( 1169 InfHandle: HINF, 1170 Section: PCWSTR, 1171 ) -> LONG; SetupGetLineTextA( Context: PINFCONTEXT, InfHandle: HINF, Section: PCSTR, Key: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, ReturnBufferSize: PDWORD, ) -> BOOL1172 pub fn SetupGetLineTextA( 1173 Context: PINFCONTEXT, 1174 InfHandle: HINF, 1175 Section: PCSTR, 1176 Key: PCSTR, 1177 ReturnBuffer: PSTR, 1178 ReturnBufferSize: DWORD, 1179 ReturnBufferSize: PDWORD, 1180 ) -> BOOL; SetupGetLineTextW( Context: PINFCONTEXT, InfHandle: HINF, Section: PCWSTR, Key: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, ReturnBufferSize: PDWORD, ) -> BOOL1181 pub fn SetupGetLineTextW( 1182 Context: PINFCONTEXT, 1183 InfHandle: HINF, 1184 Section: PCWSTR, 1185 Key: PCWSTR, 1186 ReturnBuffer: PWSTR, 1187 ReturnBufferSize: DWORD, 1188 ReturnBufferSize: PDWORD, 1189 ) -> BOOL; SetupGetFieldCount( Context: PINFCONTEXT, ) -> DWORD1190 pub fn SetupGetFieldCount( 1191 Context: PINFCONTEXT, 1192 ) -> DWORD; SetupGetStringFieldA( Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1193 pub fn SetupGetStringFieldA( 1194 Context: PINFCONTEXT, 1195 FieldIndex: DWORD, 1196 ReturnBuffer: PSTR, 1197 ReturnBufferSize: DWORD, 1198 RequiredSize: PDWORD, 1199 ) -> BOOL; SetupGetStringFieldW( Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1200 pub fn SetupGetStringFieldW( 1201 Context: PINFCONTEXT, 1202 FieldIndex: DWORD, 1203 ReturnBuffer: PWSTR, 1204 ReturnBufferSize: DWORD, 1205 RequiredSize: PDWORD, 1206 ) -> BOOL; SetupGetIntField( Context: PINFCONTEXT, FieldIndex: DWORD, IntegerValue: PINT, ) -> BOOL1207 pub fn SetupGetIntField( 1208 Context: PINFCONTEXT, 1209 FieldIndex: DWORD, 1210 IntegerValue: PINT, 1211 ) -> BOOL; SetupGetMultiSzFieldA( Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: LPDWORD, ) -> BOOL1212 pub fn SetupGetMultiSzFieldA( 1213 Context: PINFCONTEXT, 1214 FieldIndex: DWORD, 1215 ReturnBuffer: PSTR, 1216 ReturnBufferSize: DWORD, 1217 RequiredSize: LPDWORD, 1218 ) -> BOOL; SetupGetMultiSzFieldW( Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: LPDWORD, ) -> BOOL1219 pub fn SetupGetMultiSzFieldW( 1220 Context: PINFCONTEXT, 1221 FieldIndex: DWORD, 1222 ReturnBuffer: PWSTR, 1223 ReturnBufferSize: DWORD, 1224 RequiredSize: LPDWORD, 1225 ) -> BOOL; SetupGetBinaryField( Context: PINFCONTEXT, FieldIndex: DWORD, ReturnBuffer: PBYTE, ReturnBufferSize: DWORD, RequiredSize: LPDWORD, ) -> BOOL1226 pub fn SetupGetBinaryField( 1227 Context: PINFCONTEXT, 1228 FieldIndex: DWORD, 1229 ReturnBuffer: PBYTE, 1230 ReturnBufferSize: DWORD, 1231 RequiredSize: LPDWORD, 1232 ) -> BOOL; SetupGetFileCompressionInfoA( SourceFileName: PCSTR, ActualSourceFileName: *mut PSTR, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT, ) -> DWORD1233 pub fn SetupGetFileCompressionInfoA( 1234 SourceFileName: PCSTR, 1235 ActualSourceFileName: *mut PSTR, 1236 SourceFileSize: PDWORD, 1237 TargetFileSize: PDWORD, 1238 CompressionType: PUINT, 1239 ) -> DWORD; SetupGetFileCompressionInfoW( SourceFileName: PCWSTR, ActualSourceFileName: *mut PWSTR, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT, ) -> DWORD1240 pub fn SetupGetFileCompressionInfoW( 1241 SourceFileName: PCWSTR, 1242 ActualSourceFileName: *mut PWSTR, 1243 SourceFileSize: PDWORD, 1244 TargetFileSize: PDWORD, 1245 CompressionType: PUINT, 1246 ) -> DWORD; SetupGetFileCompressionInfoExA( SourceFileName: PCSTR, ActualSourceFileNameBuffer: PSTR, ActualSourceFileNameBufferLen: DWORD, RequiredBufferLen: PDWORD, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT, ) -> BOOL1247 pub fn SetupGetFileCompressionInfoExA( 1248 SourceFileName: PCSTR, 1249 ActualSourceFileNameBuffer: PSTR, 1250 ActualSourceFileNameBufferLen: DWORD, 1251 RequiredBufferLen: PDWORD, 1252 SourceFileSize: PDWORD, 1253 TargetFileSize: PDWORD, 1254 CompressionType: PUINT, 1255 ) -> BOOL; SetupGetFileCompressionInfoExW( SourceFileName: PCWSTR, ActualSourceFileNameBuffer: PWSTR, ActualSourceFileNameBufferLen: DWORD, RequiredBufferLen: PDWORD, SourceFileSize: PDWORD, TargetFileSize: PDWORD, CompressionType: PUINT, ) -> BOOL1256 pub fn SetupGetFileCompressionInfoExW( 1257 SourceFileName: PCWSTR, 1258 ActualSourceFileNameBuffer: PWSTR, 1259 ActualSourceFileNameBufferLen: DWORD, 1260 RequiredBufferLen: PDWORD, 1261 SourceFileSize: PDWORD, 1262 TargetFileSize: PDWORD, 1263 CompressionType: PUINT, 1264 ) -> BOOL; 1265 } 1266 pub const FILE_COMPRESSION_NONE: UINT = 0; 1267 pub const FILE_COMPRESSION_WINLZA: UINT = 1; 1268 pub const FILE_COMPRESSION_MSZIP: UINT = 2; 1269 pub const FILE_COMPRESSION_NTCAB: UINT = 3; 1270 extern "system" { SetupDecompressOrCopyFileA( SourceFileName: PCSTR, TargetFileName: PCSTR, CompressionType: PUINT, ) -> DWORD1271 pub fn SetupDecompressOrCopyFileA( 1272 SourceFileName: PCSTR, 1273 TargetFileName: PCSTR, 1274 CompressionType: PUINT, 1275 ) -> DWORD; SetupDecompressOrCopyFileW( SourceFileName: PCWSTR, TargetFileName: PCWSTR, CompressionType: PUINT, ) -> DWORD1276 pub fn SetupDecompressOrCopyFileW( 1277 SourceFileName: PCWSTR, 1278 TargetFileName: PCWSTR, 1279 CompressionType: PUINT, 1280 ) -> DWORD; SetupGetSourceFileLocationA( InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCSTR, SourceId: PUINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1281 pub fn SetupGetSourceFileLocationA( 1282 InfHandle: HINF, 1283 InfContext: PINFCONTEXT, 1284 FileName: PCSTR, 1285 SourceId: PUINT, 1286 ReturnBuffer: PSTR, 1287 ReturnBufferSize: DWORD, 1288 RequiredSize: PDWORD, 1289 ) -> BOOL; SetupGetSourceFileLocationW( InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCWSTR, SourceId: PUINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1290 pub fn SetupGetSourceFileLocationW( 1291 InfHandle: HINF, 1292 InfContext: PINFCONTEXT, 1293 FileName: PCWSTR, 1294 SourceId: PUINT, 1295 ReturnBuffer: PWSTR, 1296 ReturnBufferSize: DWORD, 1297 RequiredSize: PDWORD, 1298 ) -> BOOL; SetupGetSourceFileSizeA( InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCSTR, Section: PCSTR, FileSize: PDWORD, RoundingFactor: UINT, ) -> BOOL1299 pub fn SetupGetSourceFileSizeA( 1300 InfHandle: HINF, 1301 InfContext: PINFCONTEXT, 1302 FileName: PCSTR, 1303 Section: PCSTR, 1304 FileSize: PDWORD, 1305 RoundingFactor: UINT, 1306 ) -> BOOL; SetupGetSourceFileSizeW( InfHandle: HINF, InfContext: PINFCONTEXT, FileName: PCWSTR, Section: PCWSTR, FileSize: PDWORD, RoundingFactor: UINT, ) -> BOOL1307 pub fn SetupGetSourceFileSizeW( 1308 InfHandle: HINF, 1309 InfContext: PINFCONTEXT, 1310 FileName: PCWSTR, 1311 Section: PCWSTR, 1312 FileSize: PDWORD, 1313 RoundingFactor: UINT, 1314 ) -> BOOL; SetupGetTargetPathA( InfHandle: HINF, InfContext: PINFCONTEXT, Section: PCSTR, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1315 pub fn SetupGetTargetPathA( 1316 InfHandle: HINF, 1317 InfContext: PINFCONTEXT, 1318 Section: PCSTR, 1319 ReturnBuffer: PSTR, 1320 ReturnBufferSize: DWORD, 1321 RequiredSize: PDWORD, 1322 ) -> BOOL; SetupGetTargetPathW( InfHandle: HINF, InfContext: PINFCONTEXT, Section: PCWSTR, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1323 pub fn SetupGetTargetPathW( 1324 InfHandle: HINF, 1325 InfContext: PINFCONTEXT, 1326 Section: PCWSTR, 1327 ReturnBuffer: PWSTR, 1328 ReturnBufferSize: DWORD, 1329 RequiredSize: PDWORD, 1330 ) -> BOOL; 1331 } 1332 pub const SRCLIST_TEMPORARY: DWORD = 0x00000001; 1333 pub const SRCLIST_NOBROWSE: DWORD = 0x00000002; 1334 pub const SRCLIST_SYSTEM: DWORD = 0x00000010; 1335 pub const SRCLIST_USER: DWORD = 0x00000020; 1336 pub const SRCLIST_SYSIFADMIN: DWORD = 0x00000040; 1337 pub const SRCLIST_SUBDIRS: DWORD = 0x00000100; 1338 pub const SRCLIST_APPEND: DWORD = 0x00000200; 1339 pub const SRCLIST_NOSTRIPPLATFORM: DWORD = 0x00000400; 1340 extern "system" { SetupSetSourceListA( Flags: DWORD, SourceList: *mut PCSTR, SourceCount: UINT, ) -> BOOL1341 pub fn SetupSetSourceListA( 1342 Flags: DWORD, 1343 SourceList: *mut PCSTR, 1344 SourceCount: UINT, 1345 ) -> BOOL; SetupSetSourceListW( Flags: DWORD, SourceList: *mut PCWSTR, SourceCount: UINT, ) -> BOOL1346 pub fn SetupSetSourceListW( 1347 Flags: DWORD, 1348 SourceList: *mut PCWSTR, 1349 SourceCount: UINT, 1350 ) -> BOOL; SetupCancelTemporarySourceList() -> BOOL1351 pub fn SetupCancelTemporarySourceList() -> BOOL; SetupAddToSourceListA( Flags: DWORD, Source: PCSTR, ) -> BOOL1352 pub fn SetupAddToSourceListA( 1353 Flags: DWORD, 1354 Source: PCSTR, 1355 ) -> BOOL; SetupAddToSourceListW( Flags: DWORD, Source: PCWSTR, ) -> BOOL1356 pub fn SetupAddToSourceListW( 1357 Flags: DWORD, 1358 Source: PCWSTR, 1359 ) -> BOOL; SetupRemoveFromSourceListA( Flags: DWORD, Source: PCSTR, ) -> BOOL1360 pub fn SetupRemoveFromSourceListA( 1361 Flags: DWORD, 1362 Source: PCSTR, 1363 ) -> BOOL; SetupRemoveFromSourceListW( Flags: DWORD, Source: PCWSTR, ) -> BOOL1364 pub fn SetupRemoveFromSourceListW( 1365 Flags: DWORD, 1366 Source: PCWSTR, 1367 ) -> BOOL; SetupQuerySourceListA( Flags: DWORD, List: *mut *mut PCSTR, Count: PUINT, ) -> BOOL1368 pub fn SetupQuerySourceListA( 1369 Flags: DWORD, 1370 List: *mut *mut PCSTR, 1371 Count: PUINT, 1372 ) -> BOOL; SetupQuerySourceListW( Flags: DWORD, List: *mut *mut PCWSTR, Count: PUINT, ) -> BOOL1373 pub fn SetupQuerySourceListW( 1374 Flags: DWORD, 1375 List: *mut *mut PCWSTR, 1376 Count: PUINT, 1377 ) -> BOOL; SetupFreeSourceListA( List: *mut *mut PCSTR, Count: UINT, ) -> BOOL1378 pub fn SetupFreeSourceListA( 1379 List: *mut *mut PCSTR, 1380 Count: UINT, 1381 ) -> BOOL; SetupFreeSourceListW( List: *mut *mut PCWSTR, Count: UINT, ) -> BOOL1382 pub fn SetupFreeSourceListW( 1383 List: *mut *mut PCWSTR, 1384 Count: UINT, 1385 ) -> BOOL; SetupPromptForDiskA( hwndParent: HWND, DialogTitle: PCSTR, DiskName: PCSTR, PathToSource: PCSTR, FileSought: PCSTR, TagFile: PCSTR, DiskPromptStyle: DWORD, PathBuffer: PSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD, ) -> UINT1386 pub fn SetupPromptForDiskA( 1387 hwndParent: HWND, 1388 DialogTitle: PCSTR, 1389 DiskName: PCSTR, 1390 PathToSource: PCSTR, 1391 FileSought: PCSTR, 1392 TagFile: PCSTR, 1393 DiskPromptStyle: DWORD, 1394 PathBuffer: PSTR, 1395 PathBufferSize: DWORD, 1396 PathRequiredSize: PDWORD, 1397 ) -> UINT; SetupPromptForDiskW( hwndParent: HWND, DialogTitle: PCWSTR, DiskName: PCWSTR, PathToSource: PCWSTR, FileSought: PCWSTR, TagFile: PCWSTR, DiskPromptStyle: DWORD, PathBuffer: PWSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD, ) -> UINT1398 pub fn SetupPromptForDiskW( 1399 hwndParent: HWND, 1400 DialogTitle: PCWSTR, 1401 DiskName: PCWSTR, 1402 PathToSource: PCWSTR, 1403 FileSought: PCWSTR, 1404 TagFile: PCWSTR, 1405 DiskPromptStyle: DWORD, 1406 PathBuffer: PWSTR, 1407 PathBufferSize: DWORD, 1408 PathRequiredSize: PDWORD, 1409 ) -> UINT; SetupCopyErrorA( hwndParent: HWND, DialogTitle: PCSTR, DiskName: PCSTR, PathToSource: PCSTR, SourceFile: PCSTR, TargetPathFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD, PathBuffer: PSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD, ) -> UINT1410 pub fn SetupCopyErrorA( 1411 hwndParent: HWND, 1412 DialogTitle: PCSTR, 1413 DiskName: PCSTR, 1414 PathToSource: PCSTR, 1415 SourceFile: PCSTR, 1416 TargetPathFile: PCSTR, 1417 Win32ErrorCode: UINT, 1418 Style: DWORD, 1419 PathBuffer: PSTR, 1420 PathBufferSize: DWORD, 1421 PathRequiredSize: PDWORD, 1422 ) -> UINT; SetupCopyErrorW( hwndParent: HWND, DialogTitle: PCWSTR, DiskName: PCWSTR, PathToSource: PCWSTR, SourceFile: PCWSTR, TargetPathFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD, PathBuffer: PWSTR, PathBufferSize: DWORD, PathRequiredSize: PDWORD, ) -> UINT1423 pub fn SetupCopyErrorW( 1424 hwndParent: HWND, 1425 DialogTitle: PCWSTR, 1426 DiskName: PCWSTR, 1427 PathToSource: PCWSTR, 1428 SourceFile: PCWSTR, 1429 TargetPathFile: PCWSTR, 1430 Win32ErrorCode: UINT, 1431 Style: DWORD, 1432 PathBuffer: PWSTR, 1433 PathBufferSize: DWORD, 1434 PathRequiredSize: PDWORD, 1435 ) -> UINT; SetupRenameErrorA( hwndParent: HWND, DialogTitle: PCSTR, SourceFile: PCSTR, TargetFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD, ) -> UINT1436 pub fn SetupRenameErrorA( 1437 hwndParent: HWND, 1438 DialogTitle: PCSTR, 1439 SourceFile: PCSTR, 1440 TargetFile: PCSTR, 1441 Win32ErrorCode: UINT, 1442 Style: DWORD, 1443 ) -> UINT; SetupRenameErrorW( hwndParent: HWND, DialogTitle: PCWSTR, SourceFile: PCWSTR, TargetFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD, ) -> UINT1444 pub fn SetupRenameErrorW( 1445 hwndParent: HWND, 1446 DialogTitle: PCWSTR, 1447 SourceFile: PCWSTR, 1448 TargetFile: PCWSTR, 1449 Win32ErrorCode: UINT, 1450 Style: DWORD, 1451 ) -> UINT; SetupDeleteErrorA( hwndParent: HWND, DialogTitle: PCSTR, File: PCSTR, Win32ErrorCode: UINT, Style: DWORD, ) -> UINT1452 pub fn SetupDeleteErrorA( 1453 hwndParent: HWND, 1454 DialogTitle: PCSTR, 1455 File: PCSTR, 1456 Win32ErrorCode: UINT, 1457 Style: DWORD, 1458 ) -> UINT; SetupDeleteErrorW( hwndParent: HWND, DialogTitle: PCWSTR, File: PCWSTR, Win32ErrorCode: UINT, Style: DWORD, ) -> UINT1459 pub fn SetupDeleteErrorW( 1460 hwndParent: HWND, 1461 DialogTitle: PCWSTR, 1462 File: PCWSTR, 1463 Win32ErrorCode: UINT, 1464 Style: DWORD, 1465 ) -> UINT; SetupBackupErrorA( hwndParent: HWND, DialogTitle: PCSTR, SourceFile: PCSTR, TargetFile: PCSTR, Win32ErrorCode: UINT, Style: DWORD, ) -> UINT1466 pub fn SetupBackupErrorA( 1467 hwndParent: HWND, 1468 DialogTitle: PCSTR, 1469 SourceFile: PCSTR, 1470 TargetFile: PCSTR, 1471 Win32ErrorCode: UINT, 1472 Style: DWORD, 1473 ) -> UINT; SetupBackupErrorW( hwndParent: HWND, DialogTitle: PCWSTR, SourceFile: PCWSTR, TargetFile: PCWSTR, Win32ErrorCode: UINT, Style: DWORD, ) -> UINT1474 pub fn SetupBackupErrorW( 1475 hwndParent: HWND, 1476 DialogTitle: PCWSTR, 1477 SourceFile: PCWSTR, 1478 TargetFile: PCWSTR, 1479 Win32ErrorCode: UINT, 1480 Style: DWORD, 1481 ) -> UINT; 1482 } 1483 pub const IDF_NOBROWSE: DWORD = 0x00000001; 1484 pub const IDF_NOSKIP: DWORD = 0x00000002; 1485 pub const IDF_NODETAILS: DWORD = 0x00000004; 1486 pub const IDF_NOCOMPRESSED: DWORD = 0x00000008; 1487 pub const IDF_CHECKFIRST: DWORD = 0x00000100; 1488 pub const IDF_NOBEEP: DWORD = 0x00000200; 1489 pub const IDF_NOFOREGROUND: DWORD = 0x00000400; 1490 pub const IDF_WARNIFSKIP: DWORD = 0x00000800; 1491 pub const IDF_NOREMOVABLEMEDIAPROMPT: DWORD = 0x00001000; 1492 pub const IDF_USEDISKNAMEASPROMPT: DWORD = 0x00002000; 1493 pub const IDF_OEMDISK: DWORD = 0x80000000; 1494 pub const DPROMPT_SUCCESS: UINT = 0; 1495 pub const DPROMPT_CANCEL: UINT = 1; 1496 pub const DPROMPT_SKIPFILE: UINT = 2; 1497 pub const DPROMPT_BUFFERTOOSMALL: UINT = 3; 1498 pub const DPROMPT_OUTOFMEMORY: UINT = 4; 1499 extern "system" { SetupSetDirectoryIdA( InfHandle: HINF, Id: DWORD, Directory: PCSTR, ) -> BOOL1500 pub fn SetupSetDirectoryIdA( 1501 InfHandle: HINF, 1502 Id: DWORD, 1503 Directory: PCSTR, 1504 ) -> BOOL; SetupSetDirectoryIdW( InfHandle: HINF, Id: DWORD, Directory: PCWSTR, ) -> BOOL1505 pub fn SetupSetDirectoryIdW( 1506 InfHandle: HINF, 1507 Id: DWORD, 1508 Directory: PCWSTR, 1509 ) -> BOOL; SetupSetDirectoryIdExA( InfHandle: HINF, Id: DWORD, Directory: PCSTR, Flags: DWORD, Reserved1: DWORD, Reserved2: PVOID, ) -> BOOL1510 pub fn SetupSetDirectoryIdExA( 1511 InfHandle: HINF, 1512 Id: DWORD, 1513 Directory: PCSTR, 1514 Flags: DWORD, 1515 Reserved1: DWORD, 1516 Reserved2: PVOID, 1517 ) -> BOOL; SetupSetDirectoryIdExW( InfHandle: HINF, Id: DWORD, Directory: PCWSTR, Flags: DWORD, Reserved1: DWORD, Reserved2: PVOID, ) -> BOOL1518 pub fn SetupSetDirectoryIdExW( 1519 InfHandle: HINF, 1520 Id: DWORD, 1521 Directory: PCWSTR, 1522 Flags: DWORD, 1523 Reserved1: DWORD, 1524 Reserved2: PVOID, 1525 ) -> BOOL; 1526 } 1527 pub const SETDIRID_NOT_FULL_PATH: DWORD = 0x00000001; 1528 extern "system" { SetupGetSourceInfoA( InfHandle: HINF, SourceId: UINT, InfoDesired: UINT, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1529 pub fn SetupGetSourceInfoA( 1530 InfHandle: HINF, 1531 SourceId: UINT, 1532 InfoDesired: UINT, 1533 ReturnBuffer: PSTR, 1534 ReturnBufferSize: DWORD, 1535 RequiredSize: PDWORD, 1536 ) -> BOOL; SetupGetSourceInfoW( InfHandle: HINF, SourceId: UINT, InfoDesired: UINT, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1537 pub fn SetupGetSourceInfoW( 1538 InfHandle: HINF, 1539 SourceId: UINT, 1540 InfoDesired: UINT, 1541 ReturnBuffer: PWSTR, 1542 ReturnBufferSize: DWORD, 1543 RequiredSize: PDWORD, 1544 ) -> BOOL; 1545 } 1546 pub const SRCINFO_PATH: UINT = 1; 1547 pub const SRCINFO_TAGFILE: UINT = 2; 1548 pub const SRCINFO_DESCRIPTION: UINT = 3; 1549 pub const SRCINFO_FLAGS: UINT = 4; 1550 pub const SRCINFO_TAGFILE2: UINT = 4; 1551 pub const SRC_FLAGS_CABFILE: UINT = 0x0010; 1552 extern "system" { SetupInstallFileA( InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCSTR, SourcePathRoot: PCSTR, DestinationName: PCSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, ) -> BOOL1553 pub fn SetupInstallFileA( 1554 InfHandle: HINF, 1555 InfContext: PINFCONTEXT, 1556 SourceFile: PCSTR, 1557 SourcePathRoot: PCSTR, 1558 DestinationName: PCSTR, 1559 CopyStyle: DWORD, 1560 CopyMsgHandler: PSP_FILE_CALLBACK_A, 1561 Context: PVOID, 1562 ) -> BOOL; SetupInstallFileW( InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCWSTR, SourcePathRoot: PCWSTR, DestinationName: PCWSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, ) -> BOOL1563 pub fn SetupInstallFileW( 1564 InfHandle: HINF, 1565 InfContext: PINFCONTEXT, 1566 SourceFile: PCWSTR, 1567 SourcePathRoot: PCWSTR, 1568 DestinationName: PCWSTR, 1569 CopyStyle: DWORD, 1570 CopyMsgHandler: PSP_FILE_CALLBACK_W, 1571 Context: PVOID, 1572 ) -> BOOL; SetupInstallFileExA( InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCSTR, SourcePathRoot: PCSTR, DestinationName: PCSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, FileWasInUse: PBOOL, ) -> BOOL1573 pub fn SetupInstallFileExA( 1574 InfHandle: HINF, 1575 InfContext: PINFCONTEXT, 1576 SourceFile: PCSTR, 1577 SourcePathRoot: PCSTR, 1578 DestinationName: PCSTR, 1579 CopyStyle: DWORD, 1580 CopyMsgHandler: PSP_FILE_CALLBACK_A, 1581 Context: PVOID, 1582 FileWasInUse: PBOOL, 1583 ) -> BOOL; SetupInstallFileExW( InfHandle: HINF, InfContext: PINFCONTEXT, SourceFile: PCWSTR, SourcePathRoot: PCWSTR, DestinationName: PCWSTR, CopyStyle: DWORD, CopyMsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, FileWasInUse: PBOOL, ) -> BOOL1584 pub fn SetupInstallFileExW( 1585 InfHandle: HINF, 1586 InfContext: PINFCONTEXT, 1587 SourceFile: PCWSTR, 1588 SourcePathRoot: PCWSTR, 1589 DestinationName: PCWSTR, 1590 CopyStyle: DWORD, 1591 CopyMsgHandler: PSP_FILE_CALLBACK_W, 1592 Context: PVOID, 1593 FileWasInUse: PBOOL, 1594 ) -> BOOL; 1595 } 1596 pub const SP_COPY_DELETESOURCE: DWORD = 0x0000001; 1597 pub const SP_COPY_REPLACEONLY: DWORD = 0x0000002; 1598 pub const SP_COPY_NEWER: DWORD = 0x0000004; 1599 pub const SP_COPY_NEWER_OR_SAME: DWORD = SP_COPY_NEWER; 1600 pub const SP_COPY_NOOVERWRITE: DWORD = 0x0000008; 1601 pub const SP_COPY_NODECOMP: DWORD = 0x0000010; 1602 pub const SP_COPY_LANGUAGEAWARE: DWORD = 0x0000020; 1603 pub const SP_COPY_SOURCE_ABSOLUTE: DWORD = 0x0000040; 1604 pub const SP_COPY_SOURCEPATH_ABSOLUTE: DWORD = 0x0000080; 1605 pub const SP_COPY_IN_USE_NEEDS_REBOOT: DWORD = 0x0000100; 1606 pub const SP_COPY_FORCE_IN_USE: DWORD = 0x0000200; 1607 pub const SP_COPY_NOSKIP: DWORD = 0x0000400; 1608 pub const SP_FLAG_CABINETCONTINUATION: DWORD = 0x0000800; 1609 pub const SP_COPY_FORCE_NOOVERWRITE: DWORD = 0x0001000; 1610 pub const SP_COPY_FORCE_NEWER: DWORD = 0x0002000; 1611 pub const SP_COPY_WARNIFSKIP: DWORD = 0x0004000; 1612 pub const SP_COPY_NOBROWSE: DWORD = 0x0008000; 1613 pub const SP_COPY_NEWER_ONLY: DWORD = 0x0010000; 1614 pub const SP_COPY_RESERVED: DWORD = 0x0020000; 1615 pub const SP_COPY_OEMINF_CATALOG_ONLY: DWORD = 0x0040000; 1616 pub const SP_COPY_REPLACE_BOOT_FILE: DWORD = 0x0080000; 1617 pub const SP_COPY_NOPRUNE: DWORD = 0x0100000; 1618 pub const SP_COPY_OEM_F6_INF: DWORD = 0x0200000; 1619 pub const SP_COPY_ALREADYDECOMP: DWORD = 0x0400000; 1620 pub const SP_COPY_WINDOWS_SIGNED: DWORD = 0x1000000; 1621 pub const SP_COPY_PNPLOCKED: DWORD = 0x2000000; 1622 pub const SP_COPY_IN_USE_TRY_RENAME: DWORD = 0x4000000; 1623 pub const SP_COPY_INBOX_INF: DWORD = 0x8000000; 1624 pub const SP_COPY_HARDLINK: DWORD = 0x10000000; 1625 pub const SP_BACKUP_BACKUPPASS: DWORD = 0x00000001; 1626 pub const SP_BACKUP_DEMANDPASS: DWORD = 0x00000002; 1627 pub const SP_BACKUP_SPECIAL: DWORD = 0x00000004; 1628 pub const SP_BACKUP_BOOTFILE: DWORD = 0x00000008; 1629 extern "system" { SetupOpenFileQueue( ) -> HSPFILEQ1630 pub fn SetupOpenFileQueue( 1631 ) -> HSPFILEQ; SetupCloseFileQueue( QueueHandle: HSPFILEQ, ) -> BOOL1632 pub fn SetupCloseFileQueue( 1633 QueueHandle: HSPFILEQ, 1634 ) -> BOOL; SetupSetFileQueueAlternatePlatformA( QueueHandle: HSPFILEQ, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, AlternateDefaultCatalogFile: PCSTR, ) -> BOOL1635 pub fn SetupSetFileQueueAlternatePlatformA( 1636 QueueHandle: HSPFILEQ, 1637 AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, 1638 AlternateDefaultCatalogFile: PCSTR, 1639 ) -> BOOL; SetupSetFileQueueAlternatePlatformW( QueueHandle: HSPFILEQ, AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, AlternateDefaultCatalogFile: PCWSTR, ) -> BOOL1640 pub fn SetupSetFileQueueAlternatePlatformW( 1641 QueueHandle: HSPFILEQ, 1642 AlternatePlatformInfo: PSP_ALTPLATFORM_INFO, 1643 AlternateDefaultCatalogFile: PCWSTR, 1644 ) -> BOOL; SetupSetPlatformPathOverrideA( Override: PCSTR, ) -> BOOL1645 pub fn SetupSetPlatformPathOverrideA( 1646 Override: PCSTR, 1647 ) -> BOOL; SetupSetPlatformPathOverrideW( Override: PCWSTR, ) -> BOOL1648 pub fn SetupSetPlatformPathOverrideW( 1649 Override: PCWSTR, 1650 ) -> BOOL; SetupQueueCopyA( QueueHandle: HSPFILEQ, SourceRootPath: PCSTR, SourcePath: PCSTR, SourceFilename: PCSTR, SourceDescription: PCSTR, SourceTagfile: PCSTR, TargetDirectory: PCSTR, TargetFilename: PCSTR, CopyStyle: DWORD, ) -> BOOL1651 pub fn SetupQueueCopyA( 1652 QueueHandle: HSPFILEQ, 1653 SourceRootPath: PCSTR, 1654 SourcePath: PCSTR, 1655 SourceFilename: PCSTR, 1656 SourceDescription: PCSTR, 1657 SourceTagfile: PCSTR, 1658 TargetDirectory: PCSTR, 1659 TargetFilename: PCSTR, 1660 CopyStyle: DWORD, 1661 ) -> BOOL; SetupQueueCopyW( QueueHandle: HSPFILEQ, SourceRootPath: PCWSTR, SourcePath: PCWSTR, SourceFilename: PCWSTR, SourceDescription: PCWSTR, SourceTagfile: PCWSTR, TargetDirectory: PCWSTR, TargetFilename: PCWSTR, CopyStyle: DWORD, ) -> BOOL1662 pub fn SetupQueueCopyW( 1663 QueueHandle: HSPFILEQ, 1664 SourceRootPath: PCWSTR, 1665 SourcePath: PCWSTR, 1666 SourceFilename: PCWSTR, 1667 SourceDescription: PCWSTR, 1668 SourceTagfile: PCWSTR, 1669 TargetDirectory: PCWSTR, 1670 TargetFilename: PCWSTR, 1671 CopyStyle: DWORD, 1672 ) -> BOOL; SetupQueueCopyIndirectA( CopyParams: PSP_FILE_COPY_PARAMS_A, ) -> BOOL1673 pub fn SetupQueueCopyIndirectA( 1674 CopyParams: PSP_FILE_COPY_PARAMS_A, 1675 ) -> BOOL; SetupQueueCopyIndirectW( CopyParams: PSP_FILE_COPY_PARAMS_W, ) -> BOOL1676 pub fn SetupQueueCopyIndirectW( 1677 CopyParams: PSP_FILE_COPY_PARAMS_W, 1678 ) -> BOOL; SetupQueueDefaultCopyA( QueueHandle: HSPFILEQ, InfHandle: HINF, SourceRootPath: PCSTR, SourceFilename: PCSTR, TargetFilename: PCSTR, CopyStyle: DWORD, ) -> BOOL1679 pub fn SetupQueueDefaultCopyA( 1680 QueueHandle: HSPFILEQ, 1681 InfHandle: HINF, 1682 SourceRootPath: PCSTR, 1683 SourceFilename: PCSTR, 1684 TargetFilename: PCSTR, 1685 CopyStyle: DWORD, 1686 ) -> BOOL; SetupQueueDefaultCopyW( QueueHandle: HSPFILEQ, InfHandle: HINF, SourceRootPath: PCWSTR, SourceFilename: PCWSTR, TargetFilename: PCWSTR, CopyStyle: DWORD, ) -> BOOL1687 pub fn SetupQueueDefaultCopyW( 1688 QueueHandle: HSPFILEQ, 1689 InfHandle: HINF, 1690 SourceRootPath: PCWSTR, 1691 SourceFilename: PCWSTR, 1692 TargetFilename: PCWSTR, 1693 CopyStyle: DWORD, 1694 ) -> BOOL; SetupQueueCopySectionA( QueueHandle: HSPFILEQ, SourceRootPath: PCSTR, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR, CopyStyle: DWORD, ) -> BOOL1695 pub fn SetupQueueCopySectionA( 1696 QueueHandle: HSPFILEQ, 1697 SourceRootPath: PCSTR, 1698 InfHandle: HINF, 1699 ListInfHandle: HINF, 1700 Section: PCSTR, 1701 CopyStyle: DWORD, 1702 ) -> BOOL; SetupQueueCopySectionW( QueueHandle: HSPFILEQ, SourceRootPath: PCWSTR, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR, CopyStyle: DWORD, ) -> BOOL1703 pub fn SetupQueueCopySectionW( 1704 QueueHandle: HSPFILEQ, 1705 SourceRootPath: PCWSTR, 1706 InfHandle: HINF, 1707 ListInfHandle: HINF, 1708 Section: PCWSTR, 1709 CopyStyle: DWORD, 1710 ) -> BOOL; SetupQueueDeleteA( QueueHandle: HSPFILEQ, PathPart1: PCSTR, PathPart2: PCSTR, ) -> BOOL1711 pub fn SetupQueueDeleteA( 1712 QueueHandle: HSPFILEQ, 1713 PathPart1: PCSTR, 1714 PathPart2: PCSTR, 1715 ) -> BOOL; SetupQueueDeleteW( QueueHandle: HSPFILEQ, PathPart1: PCWSTR, PathPart2: PCWSTR, ) -> BOOL1716 pub fn SetupQueueDeleteW( 1717 QueueHandle: HSPFILEQ, 1718 PathPart1: PCWSTR, 1719 PathPart2: PCWSTR, 1720 ) -> BOOL; SetupQueueDeleteSectionA( QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR, ) -> BOOL1721 pub fn SetupQueueDeleteSectionA( 1722 QueueHandle: HSPFILEQ, 1723 InfHandle: HINF, 1724 ListInfHandle: HINF, 1725 Section: PCSTR, 1726 ) -> BOOL; SetupQueueDeleteSectionW( QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR, ) -> BOOL1727 pub fn SetupQueueDeleteSectionW( 1728 QueueHandle: HSPFILEQ, 1729 InfHandle: HINF, 1730 ListInfHandle: HINF, 1731 Section: PCWSTR, 1732 ) -> BOOL; SetupQueueRenameA( QueueHandle: HSPFILEQ, SourcePath: PCSTR, SourceFilename: PCSTR, TargetPath: PCSTR, TargetFilename: PCSTR, ) -> BOOL1733 pub fn SetupQueueRenameA( 1734 QueueHandle: HSPFILEQ, 1735 SourcePath: PCSTR, 1736 SourceFilename: PCSTR, 1737 TargetPath: PCSTR, 1738 TargetFilename: PCSTR, 1739 ) -> BOOL; SetupQueueRenameW( QueueHandle: HSPFILEQ, SourcePath: PCWSTR, SourceFilename: PCWSTR, TargetPath: PCWSTR, TargetFilename: PCWSTR, ) -> BOOL1740 pub fn SetupQueueRenameW( 1741 QueueHandle: HSPFILEQ, 1742 SourcePath: PCWSTR, 1743 SourceFilename: PCWSTR, 1744 TargetPath: PCWSTR, 1745 TargetFilename: PCWSTR, 1746 ) -> BOOL; SetupQueueRenameSectionA( QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCSTR, ) -> BOOL1747 pub fn SetupQueueRenameSectionA( 1748 QueueHandle: HSPFILEQ, 1749 InfHandle: HINF, 1750 ListInfHandle: HINF, 1751 Section: PCSTR, 1752 ) -> BOOL; SetupQueueRenameSectionW( QueueHandle: HSPFILEQ, InfHandle: HINF, ListInfHandle: HINF, Section: PCWSTR, ) -> BOOL1753 pub fn SetupQueueRenameSectionW( 1754 QueueHandle: HSPFILEQ, 1755 InfHandle: HINF, 1756 ListInfHandle: HINF, 1757 Section: PCWSTR, 1758 ) -> BOOL; SetupCommitFileQueueA( Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, ) -> BOOL1759 pub fn SetupCommitFileQueueA( 1760 Owner: HWND, 1761 QueueHandle: HSPFILEQ, 1762 MsgHandler: PSP_FILE_CALLBACK_A, 1763 Context: PVOID, 1764 ) -> BOOL; SetupCommitFileQueueW( Owner: HWND, QueueHandle: HSPFILEQ, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, ) -> BOOL1765 pub fn SetupCommitFileQueueW( 1766 Owner: HWND, 1767 QueueHandle: HSPFILEQ, 1768 MsgHandler: PSP_FILE_CALLBACK_W, 1769 Context: PVOID, 1770 ) -> BOOL; SetupScanFileQueueA( FileQueue: HSPFILEQ, Flags: DWORD, Window: HWND, CallbackRoutine: PSP_FILE_CALLBACK_A, CallbackContext: PVOID, Result: PDWORD, ) -> BOOL1771 pub fn SetupScanFileQueueA( 1772 FileQueue: HSPFILEQ, 1773 Flags: DWORD, 1774 Window: HWND, 1775 CallbackRoutine: PSP_FILE_CALLBACK_A, 1776 CallbackContext: PVOID, 1777 Result: PDWORD, 1778 ) -> BOOL; SetupScanFileQueueW( FileQueue: HSPFILEQ, Flags: DWORD, Window: HWND, CallbackRoutine: PSP_FILE_CALLBACK_W, CallbackContext: PVOID, Result: PDWORD, ) -> BOOL1779 pub fn SetupScanFileQueueW( 1780 FileQueue: HSPFILEQ, 1781 Flags: DWORD, 1782 Window: HWND, 1783 CallbackRoutine: PSP_FILE_CALLBACK_W, 1784 CallbackContext: PVOID, 1785 Result: PDWORD, 1786 ) -> BOOL; 1787 } 1788 pub const SPQ_SCAN_FILE_PRESENCE: DWORD = 0x00000001; 1789 pub const SPQ_SCAN_FILE_VALIDITY: DWORD = 0x00000002; 1790 pub const SPQ_SCAN_USE_CALLBACK: DWORD = 0x00000004; 1791 pub const SPQ_SCAN_USE_CALLBACKEX: DWORD = 0x00000008; 1792 pub const SPQ_SCAN_INFORM_USER: DWORD = 0x00000010; 1793 pub const SPQ_SCAN_PRUNE_COPY_QUEUE: DWORD = 0x00000020; 1794 pub const SPQ_SCAN_USE_CALLBACK_SIGNERINFO: DWORD = 0x00000040; 1795 pub const SPQ_SCAN_PRUNE_DELREN: DWORD = 0x00000080; 1796 pub const SPQ_SCAN_FILE_PRESENCE_WITHOUT_SOURCE: DWORD = 0x00000100; 1797 pub const SPQ_SCAN_FILE_COMPARISON: DWORD = 0x00000200; 1798 pub const SPQ_SCAN_ACTIVATE_DRP: DWORD = 0x00000400; 1799 pub const SPQ_DELAYED_COPY: DWORD = 0x00000001; 1800 extern "system" { SetupGetFileQueueCount( FileQueue: HSPFILEQ, SubQueueFileOp: UINT, NumOperations: PUINT, ) -> BOOL1801 pub fn SetupGetFileQueueCount( 1802 FileQueue: HSPFILEQ, 1803 SubQueueFileOp: UINT, 1804 NumOperations: PUINT, 1805 ) -> BOOL; SetupGetFileQueueFlags( FileQueue: HSPFILEQ, Flags: PDWORD, ) -> BOOL1806 pub fn SetupGetFileQueueFlags( 1807 FileQueue: HSPFILEQ, 1808 Flags: PDWORD, 1809 ) -> BOOL; SetupSetFileQueueFlags( FileQueue: HSPFILEQ, FlagMask: DWORD, Flags: DWORD, ) -> BOOL1810 pub fn SetupSetFileQueueFlags( 1811 FileQueue: HSPFILEQ, 1812 FlagMask: DWORD, 1813 Flags: DWORD, 1814 ) -> BOOL; 1815 } 1816 pub const SPQ_FLAG_BACKUP_AWARE: DWORD = 0x00000001; 1817 pub const SPQ_FLAG_ABORT_IF_UNSIGNED: DWORD = 0x00000002; 1818 pub const SPQ_FLAG_FILES_MODIFIED: DWORD = 0x00000004; 1819 pub const SPQ_FLAG_DO_SHUFFLEMOVE: DWORD = 0x00000008; 1820 pub const SPQ_FLAG_VALID: DWORD = 0x0000000F; 1821 pub const SPOST_NONE: DWORD = 0; 1822 pub const SPOST_PATH: DWORD = 1; 1823 pub const SPOST_URL: DWORD = 2; 1824 pub const SPOST_MAX: DWORD = 3; 1825 extern "system" { SetupCopyOEMInfA( SourceInfFileName: PCSTR, OEMSourceMediaLocation: PCSTR, OEMSourceMediaType: DWORD, CopyStyle: DWORD, DestinationInfFileName: PSTR, DestinationInfFileNameSize: DWORD, RequiredSize: PDWORD, DestinationInfFileNameComponent: *mut PSTR, ) -> BOOL1826 pub fn SetupCopyOEMInfA( 1827 SourceInfFileName: PCSTR, 1828 OEMSourceMediaLocation: PCSTR, 1829 OEMSourceMediaType: DWORD, 1830 CopyStyle: DWORD, 1831 DestinationInfFileName: PSTR, 1832 DestinationInfFileNameSize: DWORD, 1833 RequiredSize: PDWORD, 1834 DestinationInfFileNameComponent: *mut PSTR, 1835 ) -> BOOL; SetupCopyOEMInfW( SourceInfFileName: PCWSTR, OEMSourceMediaLocation: PCWSTR, OEMSourceMediaType: DWORD, CopyStyle: DWORD, DestinationInfFileName: PWSTR, DestinationInfFileNameSize: DWORD, RequiredSize: PDWORD, DestinationInfFileNameComponent: *mut PWSTR, ) -> BOOL1836 pub fn SetupCopyOEMInfW( 1837 SourceInfFileName: PCWSTR, 1838 OEMSourceMediaLocation: PCWSTR, 1839 OEMSourceMediaType: DWORD, 1840 CopyStyle: DWORD, 1841 DestinationInfFileName: PWSTR, 1842 DestinationInfFileNameSize: DWORD, 1843 RequiredSize: PDWORD, 1844 DestinationInfFileNameComponent: *mut PWSTR, 1845 ) -> BOOL; 1846 } 1847 pub const SUOI_FORCEDELETE: DWORD = 0x00000001; 1848 pub const SUOI_INTERNAL1: DWORD = 0x00000002; 1849 extern "system" { SetupUninstallOEMInfA( InfFileName: PCSTR, Flags: DWORD, Reserved: PVOID, ) -> BOOL1850 pub fn SetupUninstallOEMInfA( 1851 InfFileName: PCSTR, 1852 Flags: DWORD, 1853 Reserved: PVOID, 1854 ) -> BOOL; SetupUninstallOEMInfW( InfFileName: PCWSTR, Flags: DWORD, Reserved: PVOID, ) -> BOOL1855 pub fn SetupUninstallOEMInfW( 1856 InfFileName: PCWSTR, 1857 Flags: DWORD, 1858 Reserved: PVOID, 1859 ) -> BOOL; SetupUninstallNewlyCopiedInfs( FileQueue: HSPFILEQ, Flags: DWORD, Reserved: PVOID, ) -> BOOL1860 pub fn SetupUninstallNewlyCopiedInfs( 1861 FileQueue: HSPFILEQ, 1862 Flags: DWORD, 1863 Reserved: PVOID, 1864 ) -> BOOL; SetupCreateDiskSpaceListA( Reserved1: PVOID, Reserved2: DWORD, Flags: UINT, ) -> HDSKSPC1865 pub fn SetupCreateDiskSpaceListA( 1866 Reserved1: PVOID, 1867 Reserved2: DWORD, 1868 Flags: UINT, 1869 ) -> HDSKSPC; SetupCreateDiskSpaceListW( Reserved1: PVOID, Reserved2: DWORD, Flags: UINT, ) -> HDSKSPC1870 pub fn SetupCreateDiskSpaceListW( 1871 Reserved1: PVOID, 1872 Reserved2: DWORD, 1873 Flags: UINT, 1874 ) -> HDSKSPC; 1875 } 1876 pub const SPDSL_IGNORE_DISK: UINT = 0x00000001; 1877 pub const SPDSL_DISALLOW_NEGATIVE_ADJUST: UINT = 0x00000002; 1878 extern "system" { SetupDuplicateDiskSpaceListA( DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT, ) -> HDSKSPC1879 pub fn SetupDuplicateDiskSpaceListA( 1880 DiskSpace: HDSKSPC, 1881 Reserved1: PVOID, 1882 Reserved2: DWORD, 1883 Flags: UINT, 1884 ) -> HDSKSPC; SetupDuplicateDiskSpaceListW( DiskSpace: HDSKSPC, Reserved1: PVOID, Reserved2: DWORD, Flags: UINT, ) -> HDSKSPC1885 pub fn SetupDuplicateDiskSpaceListW( 1886 DiskSpace: HDSKSPC, 1887 Reserved1: PVOID, 1888 Reserved2: DWORD, 1889 Flags: UINT, 1890 ) -> HDSKSPC; SetupDestroyDiskSpaceList( DiskSpace: HDSKSPC, ) -> BOOL1891 pub fn SetupDestroyDiskSpaceList( 1892 DiskSpace: HDSKSPC, 1893 ) -> BOOL; SetupQueryDrivesInDiskSpaceListA( DiskSpace: HDSKSPC, ReturnBuffer: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1894 pub fn SetupQueryDrivesInDiskSpaceListA( 1895 DiskSpace: HDSKSPC, 1896 ReturnBuffer: PSTR, 1897 ReturnBufferSize: DWORD, 1898 RequiredSize: PDWORD, 1899 ) -> BOOL; SetupQueryDrivesInDiskSpaceListW( DiskSpace: HDSKSPC, ReturnBuffer: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL1900 pub fn SetupQueryDrivesInDiskSpaceListW( 1901 DiskSpace: HDSKSPC, 1902 ReturnBuffer: PWSTR, 1903 ReturnBufferSize: DWORD, 1904 RequiredSize: PDWORD, 1905 ) -> BOOL; SetupQuerySpaceRequiredOnDriveA( DiskSpace: HDSKSPC, DriveSpec: PCSTR, SpaceRequired: *mut LONGLONG, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1906 pub fn SetupQuerySpaceRequiredOnDriveA( 1907 DiskSpace: HDSKSPC, 1908 DriveSpec: PCSTR, 1909 SpaceRequired: *mut LONGLONG, 1910 Reserved1: PVOID, 1911 Reserved2: UINT, 1912 ) -> BOOL; SetupQuerySpaceRequiredOnDriveW( DiskSpace: HDSKSPC, DriveSpec: PCWSTR, SpaceRequired: *mut LONGLONG, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1913 pub fn SetupQuerySpaceRequiredOnDriveW( 1914 DiskSpace: HDSKSPC, 1915 DriveSpec: PCWSTR, 1916 SpaceRequired: *mut LONGLONG, 1917 Reserved1: PVOID, 1918 Reserved2: UINT, 1919 ) -> BOOL; SetupAdjustDiskSpaceListA( DiskSpace: HDSKSPC, DriveRoot: LPCSTR, Amount: LONGLONG, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1920 pub fn SetupAdjustDiskSpaceListA( 1921 DiskSpace: HDSKSPC, 1922 DriveRoot: LPCSTR, 1923 Amount: LONGLONG, 1924 Reserved1: PVOID, 1925 Reserved2: UINT, 1926 ) -> BOOL; SetupAdjustDiskSpaceListW( DiskSpace: HDSKSPC, DriveRoot: LPCWSTR, Amount: LONGLONG, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1927 pub fn SetupAdjustDiskSpaceListW( 1928 DiskSpace: HDSKSPC, 1929 DriveRoot: LPCWSTR, 1930 Amount: LONGLONG, 1931 Reserved1: PVOID, 1932 Reserved2: UINT, 1933 ) -> BOOL; SetupAddToDiskSpaceListA( DiskSpace: HDSKSPC, TargetFilespec: PCSTR, FileSize: LONGLONG, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1934 pub fn SetupAddToDiskSpaceListA( 1935 DiskSpace: HDSKSPC, 1936 TargetFilespec: PCSTR, 1937 FileSize: LONGLONG, 1938 Operation: UINT, 1939 Reserved1: PVOID, 1940 Reserved2: UINT, 1941 ) -> BOOL; SetupAddToDiskSpaceListW( DiskSpace: HDSKSPC, TargetFilespec: PCWSTR, FileSize: LONGLONG, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1942 pub fn SetupAddToDiskSpaceListW( 1943 DiskSpace: HDSKSPC, 1944 TargetFilespec: PCWSTR, 1945 FileSize: LONGLONG, 1946 Operation: UINT, 1947 Reserved1: PVOID, 1948 Reserved2: UINT, 1949 ) -> BOOL; SetupAddSectionToDiskSpaceListA( DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1950 pub fn SetupAddSectionToDiskSpaceListA( 1951 DiskSpace: HDSKSPC, 1952 InfHandle: HINF, 1953 ListInfHandle: HINF, 1954 SectionName: PCSTR, 1955 Operation: UINT, 1956 Reserved1: PVOID, 1957 Reserved2: UINT, 1958 ) -> BOOL; SetupAddSectionToDiskSpaceListW( DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1959 pub fn SetupAddSectionToDiskSpaceListW( 1960 DiskSpace: HDSKSPC, 1961 InfHandle: HINF, 1962 ListInfHandle: HINF, 1963 SectionName: PCWSTR, 1964 Operation: UINT, 1965 Reserved1: PVOID, 1966 Reserved2: UINT, 1967 ) -> BOOL; SetupAddInstallSectionToDiskSpaceListA( DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCSTR, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1968 pub fn SetupAddInstallSectionToDiskSpaceListA( 1969 DiskSpace: HDSKSPC, 1970 InfHandle: HINF, 1971 LayoutInfHandle: HINF, 1972 SectionName: PCSTR, 1973 Reserved1: PVOID, 1974 Reserved2: UINT, 1975 ) -> BOOL; SetupAddInstallSectionToDiskSpaceListW( DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCWSTR, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1976 pub fn SetupAddInstallSectionToDiskSpaceListW( 1977 DiskSpace: HDSKSPC, 1978 InfHandle: HINF, 1979 LayoutInfHandle: HINF, 1980 SectionName: PCWSTR, 1981 Reserved1: PVOID, 1982 Reserved2: UINT, 1983 ) -> BOOL; SetupRemoveFromDiskSpaceListA( DiskSpace: HDSKSPC, TargetFilespec: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1984 pub fn SetupRemoveFromDiskSpaceListA( 1985 DiskSpace: HDSKSPC, 1986 TargetFilespec: PCSTR, 1987 Operation: UINT, 1988 Reserved1: PVOID, 1989 Reserved2: UINT, 1990 ) -> BOOL; SetupRemoveFromDiskSpaceListW( DiskSpace: HDSKSPC, TargetFilespec: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1991 pub fn SetupRemoveFromDiskSpaceListW( 1992 DiskSpace: HDSKSPC, 1993 TargetFilespec: PCWSTR, 1994 Operation: UINT, 1995 Reserved1: PVOID, 1996 Reserved2: UINT, 1997 ) -> BOOL; SetupRemoveSectionFromDiskSpaceListA( DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL1998 pub fn SetupRemoveSectionFromDiskSpaceListA( 1999 DiskSpace: HDSKSPC, 2000 InfHandle: HINF, 2001 ListInfHandle: HINF, 2002 SectionName: PCSTR, 2003 Operation: UINT, 2004 Reserved1: PVOID, 2005 Reserved2: UINT, 2006 ) -> BOOL; SetupRemoveSectionFromDiskSpaceListW( DiskSpace: HDSKSPC, InfHandle: HINF, ListInfHandle: HINF, SectionName: PCWSTR, Operation: UINT, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL2007 pub fn SetupRemoveSectionFromDiskSpaceListW( 2008 DiskSpace: HDSKSPC, 2009 InfHandle: HINF, 2010 ListInfHandle: HINF, 2011 SectionName: PCWSTR, 2012 Operation: UINT, 2013 Reserved1: PVOID, 2014 Reserved2: UINT, 2015 ) -> BOOL; SetupRemoveInstallSectionFromDiskSpaceListA( DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCSTR, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL2016 pub fn SetupRemoveInstallSectionFromDiskSpaceListA( 2017 DiskSpace: HDSKSPC, 2018 InfHandle: HINF, 2019 LayoutInfHandle: HINF, 2020 SectionName: PCSTR, 2021 Reserved1: PVOID, 2022 Reserved2: UINT, 2023 ) -> BOOL; SetupRemoveInstallSectionFromDiskSpaceListW( DiskSpace: HDSKSPC, InfHandle: HINF, LayoutInfHandle: HINF, SectionName: PCWSTR, Reserved1: PVOID, Reserved2: UINT, ) -> BOOL2024 pub fn SetupRemoveInstallSectionFromDiskSpaceListW( 2025 DiskSpace: HDSKSPC, 2026 InfHandle: HINF, 2027 LayoutInfHandle: HINF, 2028 SectionName: PCWSTR, 2029 Reserved1: PVOID, 2030 Reserved2: UINT, 2031 ) -> BOOL; SetupIterateCabinetA( CabinetFile: PCSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_A, Context: PVOID, ) -> BOOL2032 pub fn SetupIterateCabinetA( 2033 CabinetFile: PCSTR, 2034 Reserved: DWORD, 2035 MsgHandler: PSP_FILE_CALLBACK_A, 2036 Context: PVOID, 2037 ) -> BOOL; SetupIterateCabinetW( CabinetFile: PCWSTR, Reserved: DWORD, MsgHandler: PSP_FILE_CALLBACK_W, Context: PVOID, ) -> BOOL2038 pub fn SetupIterateCabinetW( 2039 CabinetFile: PCWSTR, 2040 Reserved: DWORD, 2041 MsgHandler: PSP_FILE_CALLBACK_W, 2042 Context: PVOID, 2043 ) -> BOOL; SetupPromptReboot( FileQueue: HSPFILEQ, Owner: HWND, ScanOnly: BOOL, ) -> INT2044 pub fn SetupPromptReboot( 2045 FileQueue: HSPFILEQ, 2046 Owner: HWND, 2047 ScanOnly: BOOL, 2048 ) -> INT; 2049 } 2050 pub const SPFILEQ_FILE_IN_USE: INT = 0x00000001; 2051 pub const SPFILEQ_REBOOT_RECOMMENDED: INT = 0x00000002; 2052 pub const SPFILEQ_REBOOT_IN_PROGRESS: INT = 0x00000004; 2053 extern "system" { SetupInitDefaultQueueCallback( OwnerWindow: HWND, ) -> PVOID2054 pub fn SetupInitDefaultQueueCallback( 2055 OwnerWindow: HWND, 2056 ) -> PVOID; SetupInitDefaultQueueCallbackEx( OwnerWindow: HWND, AlternateProgressWindow: HWND, ProgressMessage: UINT, Reserved1: DWORD, Reserved2: PVOID, ) -> PVOID2057 pub fn SetupInitDefaultQueueCallbackEx( 2058 OwnerWindow: HWND, 2059 AlternateProgressWindow: HWND, 2060 ProgressMessage: UINT, 2061 Reserved1: DWORD, 2062 Reserved2: PVOID, 2063 ) -> PVOID; SetupTermDefaultQueueCallback( Context: PVOID, ) -> ()2064 pub fn SetupTermDefaultQueueCallback( 2065 Context: PVOID, 2066 ) -> (); SetupDefaultQueueCallbackA( Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR, ) -> UINT2067 pub fn SetupDefaultQueueCallbackA( 2068 Context: PVOID, 2069 Notification: UINT, 2070 Param1: UINT_PTR, 2071 Param2: UINT_PTR, 2072 ) -> UINT; SetupDefaultQueueCallbackW( Context: PVOID, Notification: UINT, Param1: UINT_PTR, Param2: UINT_PTR, ) -> UINT2073 pub fn SetupDefaultQueueCallbackW( 2074 Context: PVOID, 2075 Notification: UINT, 2076 Param1: UINT_PTR, 2077 Param2: UINT_PTR, 2078 ) -> UINT; 2079 } 2080 pub const FLG_ADDREG_DELREG_BIT: DWORD = 0x00008000; 2081 pub const FLG_ADDREG_BINVALUETYPE: DWORD = 0x00000001; 2082 pub const FLG_ADDREG_NOCLOBBER: DWORD = 0x00000002; 2083 pub const FLG_ADDREG_DELVAL: DWORD = 0x00000004; 2084 pub const FLG_ADDREG_APPEND: DWORD = 0x00000008; 2085 pub const FLG_ADDREG_KEYONLY: DWORD = 0x00000010; 2086 pub const FLG_ADDREG_OVERWRITEONLY: DWORD = 0x00000020; 2087 pub const FLG_ADDREG_64BITKEY: DWORD = 0x00001000; 2088 pub const FLG_ADDREG_KEYONLY_COMMON: DWORD = 0x00002000; 2089 pub const FLG_ADDREG_32BITKEY: DWORD = 0x00004000; 2090 pub const FLG_ADDREG_TYPE_MASK: DWORD = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE; 2091 pub const FLG_ADDREG_TYPE_SZ: DWORD = 0x00000000; 2092 pub const FLG_ADDREG_TYPE_MULTI_SZ: DWORD = 0x00010000; 2093 pub const FLG_ADDREG_TYPE_EXPAND_SZ: DWORD = 0x00020000; 2094 pub const FLG_ADDREG_TYPE_BINARY: DWORD = 0x00000000 | FLG_ADDREG_BINVALUETYPE; 2095 pub const FLG_ADDREG_TYPE_DWORD: DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE; 2096 pub const FLG_ADDREG_TYPE_NONE: DWORD = 0x00020000 | FLG_ADDREG_BINVALUETYPE; 2097 pub const FLG_DELREG_VALUE: DWORD = 0x00000000; 2098 pub const FLG_DELREG_TYPE_MASK: DWORD = FLG_ADDREG_TYPE_MASK; 2099 pub const FLG_DELREG_TYPE_SZ: DWORD = FLG_ADDREG_TYPE_SZ; 2100 pub const FLG_DELREG_TYPE_MULTI_SZ: DWORD = FLG_ADDREG_TYPE_MULTI_SZ; 2101 pub const FLG_DELREG_TYPE_EXPAND_SZ: DWORD = FLG_ADDREG_TYPE_EXPAND_SZ; 2102 pub const FLG_DELREG_TYPE_BINARY: DWORD = FLG_ADDREG_TYPE_BINARY; 2103 pub const FLG_DELREG_TYPE_DWORD: DWORD = FLG_ADDREG_TYPE_DWORD; 2104 pub const FLG_DELREG_TYPE_NONE: DWORD = FLG_ADDREG_TYPE_NONE; 2105 pub const FLG_DELREG_64BITKEY: DWORD = FLG_ADDREG_64BITKEY; 2106 pub const FLG_DELREG_KEYONLY_COMMON: DWORD = FLG_ADDREG_KEYONLY_COMMON; 2107 pub const FLG_DELREG_32BITKEY: DWORD = FLG_ADDREG_32BITKEY; 2108 pub const FLG_DELREG_OPERATION_MASK: DWORD = 0x000000FE; 2109 pub const FLG_DELREG_MULTI_SZ_DELSTRING: DWORD = FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT 2110 | 0x00000002; 2111 pub const FLG_BITREG_CLEARBITS: DWORD = 0x00000000; 2112 pub const FLG_BITREG_SETBITS: DWORD = 0x00000001; 2113 pub const FLG_BITREG_64BITKEY: DWORD = 0x00001000; 2114 pub const FLG_BITREG_32BITKEY: DWORD = 0x00004000; 2115 pub const FLG_INI2REG_64BITKEY: DWORD = 0x00001000; 2116 pub const FLG_INI2REG_32BITKEY: DWORD = 0x00004000; 2117 pub const FLG_REGSVR_DLLREGISTER: DWORD = 0x00000001; 2118 pub const FLG_REGSVR_DLLINSTALL: DWORD = 0x00000002; 2119 pub const FLG_PROFITEM_CURRENTUSER: DWORD = 0x00000001; 2120 pub const FLG_PROFITEM_DELETE: DWORD = 0x00000002; 2121 pub const FLG_PROFITEM_GROUP: DWORD = 0x00000004; 2122 pub const FLG_PROFITEM_CSIDL: DWORD = 0x00000008; 2123 pub const FLG_ADDPROPERTY_NOCLOBBER: DWORD = 0x00000001; 2124 pub const FLG_ADDPROPERTY_OVERWRITEONLY: DWORD = 0x00000002; 2125 pub const FLG_ADDPROPERTY_APPEND: DWORD = 0x00000004; 2126 pub const FLG_ADDPROPERTY_OR: DWORD = 0x00000008; 2127 pub const FLG_ADDPROPERTY_AND: DWORD = 0x00000010; 2128 pub const FLG_DELPROPERTY_MULTI_SZ_DELSTRING: DWORD = 0x00000001; 2129 extern "system" { 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, ) -> BOOL2130 pub fn SetupInstallFromInfSectionA( 2131 Owner: HWND, 2132 InfHandle: HINF, 2133 SectionName: PCSTR, 2134 Flags: UINT, 2135 RelativeKeyRoot: HKEY, 2136 SourceRootPath: PCSTR, 2137 CopyFlags: UINT, 2138 MsgHandler: PSP_FILE_CALLBACK_A, 2139 Context: PVOID, 2140 DeviceInfoSet: HDEVINFO, 2141 DeviceInfoData: PSP_DEVINFO_DATA, 2142 ) -> BOOL; 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, ) -> BOOL2143 pub fn SetupInstallFromInfSectionW( 2144 Owner: HWND, 2145 InfHandle: HINF, 2146 SectionName: PCWSTR, 2147 Flags: UINT, 2148 RelativeKeyRoot: HKEY, 2149 SourceRootPath: PCWSTR, 2150 CopyFlags: UINT, 2151 MsgHandler: PSP_FILE_CALLBACK_W, 2152 Context: PVOID, 2153 DeviceInfoSet: HDEVINFO, 2154 DeviceInfoData: PSP_DEVINFO_DATA, 2155 ) -> BOOL; 2156 } 2157 pub const SPINST_LOGCONFIG: UINT = 0x00000001; 2158 pub const SPINST_INIFILES: UINT = 0x00000002; 2159 pub const SPINST_REGISTRY: UINT = 0x00000004; 2160 pub const SPINST_INI2REG: UINT = 0x00000008; 2161 pub const SPINST_FILES: UINT = 0x00000010; 2162 pub const SPINST_BITREG: UINT = 0x00000020; 2163 pub const SPINST_REGSVR: UINT = 0x00000040; 2164 pub const SPINST_UNREGSVR: UINT = 0x00000080; 2165 pub const SPINST_PROFILEITEMS: UINT = 0x00000100; 2166 pub const SPINST_COPYINF: UINT = 0x00000200; 2167 pub const SPINST_PROPERTIES: UINT = 0x00000400; 2168 pub const SPINST_ALL: UINT = 0x000007ff; 2169 pub const SPINST_SINGLESECTION: UINT = 0x00010000; 2170 pub const SPINST_LOGCONFIG_IS_FORCED: UINT = 0x00020000; 2171 pub const SPINST_LOGCONFIGS_ARE_OVERRIDES: UINT = 0x00040000; 2172 pub const SPINST_REGISTERCALLBACKAWARE: UINT = 0x00080000; 2173 pub const SPINST_DEVICEINSTALL: UINT = 0x00100000; 2174 extern "system" { SetupInstallFilesFromInfSectionA( InfHandle: HINF, LayoutInfHandle: HINF, FileQueue: HSPFILEQ, SectionName: PCSTR, SourceRootPath: PCSTR, CopyFlags: UINT, ) -> BOOL2175 pub fn SetupInstallFilesFromInfSectionA( 2176 InfHandle: HINF, 2177 LayoutInfHandle: HINF, 2178 FileQueue: HSPFILEQ, 2179 SectionName: PCSTR, 2180 SourceRootPath: PCSTR, 2181 CopyFlags: UINT, 2182 ) -> BOOL; SetupInstallFilesFromInfSectionW( InfHandle: HINF, LayoutInfHandle: HINF, FileQueue: HSPFILEQ, SectionName: PCWSTR, SourceRootPath: PCWSTR, CopyFlags: UINT, ) -> BOOL2183 pub fn SetupInstallFilesFromInfSectionW( 2184 InfHandle: HINF, 2185 LayoutInfHandle: HINF, 2186 FileQueue: HSPFILEQ, 2187 SectionName: PCWSTR, 2188 SourceRootPath: PCWSTR, 2189 CopyFlags: UINT, 2190 ) -> BOOL; 2191 } 2192 pub const SPSVCINST_TAGTOFRONT: DWORD = 0x00000001; 2193 pub const SPSVCINST_ASSOCSERVICE: DWORD = 0x00000002; 2194 pub const SPSVCINST_DELETEEVENTLOGENTRY: DWORD = 0x00000004; 2195 pub const SPSVCINST_NOCLOBBER_DISPLAYNAME: DWORD = 0x00000008; 2196 pub const SPSVCINST_NOCLOBBER_STARTTYPE: DWORD = 0x00000010; 2197 pub const SPSVCINST_NOCLOBBER_ERRORCONTROL: DWORD = 0x00000020; 2198 pub const SPSVCINST_NOCLOBBER_LOADORDERGROUP: DWORD = 0x00000040; 2199 pub const SPSVCINST_NOCLOBBER_DEPENDENCIES: DWORD = 0x00000080; 2200 pub const SPSVCINST_NOCLOBBER_DESCRIPTION: DWORD = 0x00000100; 2201 pub const SPSVCINST_STOPSERVICE: DWORD = 0x00000200; 2202 pub const SPSVCINST_CLOBBER_SECURITY: DWORD = 0x00000400; 2203 pub const SPSVCINST_STARTSERVICE: DWORD = 0x00000800; 2204 pub const SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES: DWORD = 0x00001000; 2205 extern "system" { SetupInstallServicesFromInfSectionA( InfHandle: HINF, SectionName: PCSTR, Flags: DWORD, ) -> BOOL2206 pub fn SetupInstallServicesFromInfSectionA( 2207 InfHandle: HINF, 2208 SectionName: PCSTR, 2209 Flags: DWORD, 2210 ) -> BOOL; SetupInstallServicesFromInfSectionW( InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD, ) -> BOOL2211 pub fn SetupInstallServicesFromInfSectionW( 2212 InfHandle: HINF, 2213 SectionName: PCWSTR, 2214 Flags: DWORD, 2215 ) -> BOOL; SetupInstallServicesFromInfSectionExA( InfHandle: HINF, SectionName: PCSTR, Flags: DWORD, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Reserved1: PVOID, Reserved2: PVOID, ) -> BOOL2216 pub fn SetupInstallServicesFromInfSectionExA( 2217 InfHandle: HINF, 2218 SectionName: PCSTR, 2219 Flags: DWORD, 2220 DeviceInfoSet: HDEVINFO, 2221 DeviceInfoData: PSP_DEVINFO_DATA, 2222 Reserved1: PVOID, 2223 Reserved2: PVOID, 2224 ) -> BOOL; SetupInstallServicesFromInfSectionExW( InfHandle: HINF, SectionName: PCWSTR, Flags: DWORD, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Reserved1: PVOID, Reserved2: PVOID, ) -> BOOL2225 pub fn SetupInstallServicesFromInfSectionExW( 2226 InfHandle: HINF, 2227 SectionName: PCWSTR, 2228 Flags: DWORD, 2229 DeviceInfoSet: HDEVINFO, 2230 DeviceInfoData: PSP_DEVINFO_DATA, 2231 Reserved1: PVOID, 2232 Reserved2: PVOID, 2233 ) -> BOOL; InstallHinfSectionA( Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCSTR, ShowCommand: INT, ) -> ()2234 pub fn InstallHinfSectionA( 2235 Window: HWND, 2236 ModuleHandle: HINSTANCE, 2237 CommandLine: PCSTR, 2238 ShowCommand: INT, 2239 ) -> (); InstallHinfSectionW( Window: HWND, ModuleHandle: HINSTANCE, CommandLine: PCWSTR, ShowCommand: INT, ) -> ()2240 pub fn InstallHinfSectionW( 2241 Window: HWND, 2242 ModuleHandle: HINSTANCE, 2243 CommandLine: PCWSTR, 2244 ShowCommand: INT, 2245 ) -> (); 2246 } 2247 pub type HSPFILELOG = PVOID; 2248 extern "system" { SetupInitializeFileLogA( LogFileName: PCSTR, Flags: DWORD, ) -> HSPFILELOG2249 pub fn SetupInitializeFileLogA( 2250 LogFileName: PCSTR, 2251 Flags: DWORD, 2252 ) -> HSPFILELOG; SetupInitializeFileLogW( LogFileName: PCWSTR, Flags: DWORD, ) -> HSPFILELOG2253 pub fn SetupInitializeFileLogW( 2254 LogFileName: PCWSTR, 2255 Flags: DWORD, 2256 ) -> HSPFILELOG; 2257 } 2258 pub const SPFILELOG_SYSTEMLOG: DWORD = 0x00000001; 2259 pub const SPFILELOG_FORCENEW: DWORD = 0x00000002; 2260 pub const SPFILELOG_QUERYONLY: DWORD = 0x00000004; 2261 extern "system" { SetupTerminateFileLog( FileLogHandle: HSPFILELOG, ) -> BOOL2262 pub fn SetupTerminateFileLog( 2263 FileLogHandle: HSPFILELOG, 2264 ) -> BOOL; SetupLogFileA( FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, SourceFilename: PCSTR, TargetFilename: PCSTR, Checksum: DWORD, DiskTagfile: PCSTR, DiskDescription: PCSTR, OtherInfo: PCSTR, Flags: DWORD, ) -> BOOL2265 pub fn SetupLogFileA( 2266 FileLogHandle: HSPFILELOG, 2267 LogSectionName: PCSTR, 2268 SourceFilename: PCSTR, 2269 TargetFilename: PCSTR, 2270 Checksum: DWORD, 2271 DiskTagfile: PCSTR, 2272 DiskDescription: PCSTR, 2273 OtherInfo: PCSTR, 2274 Flags: DWORD, 2275 ) -> BOOL; SetupLogFileW( FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, SourceFilename: PCWSTR, TargetFilename: PCWSTR, Checksum: DWORD, DiskTagfile: PCWSTR, DiskDescription: PCWSTR, OtherInfo: PCWSTR, Flags: DWORD, ) -> BOOL2276 pub fn SetupLogFileW( 2277 FileLogHandle: HSPFILELOG, 2278 LogSectionName: PCWSTR, 2279 SourceFilename: PCWSTR, 2280 TargetFilename: PCWSTR, 2281 Checksum: DWORD, 2282 DiskTagfile: PCWSTR, 2283 DiskDescription: PCWSTR, 2284 OtherInfo: PCWSTR, 2285 Flags: DWORD, 2286 ) -> BOOL; 2287 } 2288 pub const SPFILELOG_OEMFILE: DWORD = 0x00000001; 2289 extern "system" { SetupRemoveFileLogEntryA( FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR, ) -> BOOL2290 pub fn SetupRemoveFileLogEntryA( 2291 FileLogHandle: HSPFILELOG, 2292 LogSectionName: PCSTR, 2293 TargetFilename: PCSTR, 2294 ) -> BOOL; SetupRemoveFileLogEntryW( FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR, ) -> BOOL2295 pub fn SetupRemoveFileLogEntryW( 2296 FileLogHandle: HSPFILELOG, 2297 LogSectionName: PCWSTR, 2298 TargetFilename: PCWSTR, 2299 ) -> BOOL; 2300 } 2301 ENUM!{enum SetupFileLogInfo { 2302 SetupFileLogSourceFilename, 2303 SetupFileLogChecksum, 2304 SetupFileLogDiskTagfile, 2305 SetupFileLogDiskDescription, 2306 SetupFileLogOtherInfo, 2307 SetupFileLogMax, 2308 }} 2309 extern "system" { SetupQueryFileLogA( FileLogHandle: HSPFILELOG, LogSectionName: PCSTR, TargetFilename: PCSTR, DesiredInfo: SetupFileLogInfo, DataOut: PSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2310 pub fn SetupQueryFileLogA( 2311 FileLogHandle: HSPFILELOG, 2312 LogSectionName: PCSTR, 2313 TargetFilename: PCSTR, 2314 DesiredInfo: SetupFileLogInfo, 2315 DataOut: PSTR, 2316 ReturnBufferSize: DWORD, 2317 RequiredSize: PDWORD, 2318 ) -> BOOL; SetupQueryFileLogW( FileLogHandle: HSPFILELOG, LogSectionName: PCWSTR, TargetFilename: PCWSTR, DesiredInfo: SetupFileLogInfo, DataOut: PWSTR, ReturnBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2319 pub fn SetupQueryFileLogW( 2320 FileLogHandle: HSPFILELOG, 2321 LogSectionName: PCWSTR, 2322 TargetFilename: PCWSTR, 2323 DesiredInfo: SetupFileLogInfo, 2324 DataOut: PWSTR, 2325 ReturnBufferSize: DWORD, 2326 RequiredSize: PDWORD, 2327 ) -> BOOL; 2328 } 2329 pub type LogSeverity = DWORD; 2330 pub const LogSevInformation: LogSeverity = 0x00000000; 2331 pub const LogSevWarning: LogSeverity = 0x00000001; 2332 pub const LogSevError: LogSeverity = 0x00000002; 2333 pub const LogSevFatalError: LogSeverity = 0x00000003; 2334 pub const LogSevMaximum: LogSeverity = 0x00000004; 2335 extern "system" { SetupOpenLog( Erase: BOOL, ) -> BOOL2336 pub fn SetupOpenLog( 2337 Erase: BOOL, 2338 ) -> BOOL; SetupLogErrorA( MessageString: LPCSTR, Severity: LogSeverity, ) -> BOOL2339 pub fn SetupLogErrorA( 2340 MessageString: LPCSTR, 2341 Severity: LogSeverity, 2342 ) -> BOOL; SetupLogErrorW( MessageString: LPCWSTR, Severity: LogSeverity, ) -> BOOL2343 pub fn SetupLogErrorW( 2344 MessageString: LPCWSTR, 2345 Severity: LogSeverity, 2346 ) -> BOOL; SetupCloseLog() -> ()2347 pub fn SetupCloseLog() -> (); SetupGetThreadLogToken() -> SP_LOG_TOKEN2348 pub fn SetupGetThreadLogToken() -> SP_LOG_TOKEN; SetupSetThreadLogToken( LogToken: SP_LOG_TOKEN, ) -> ()2349 pub fn SetupSetThreadLogToken( 2350 LogToken: SP_LOG_TOKEN, 2351 ) -> (); 2352 } 2353 //pub fn SetupWriteTextLog() -> (); 2354 //pub fn SetupWriteTextLogError() -> (); 2355 extern "system" { SetupWriteTextLogInfLine( LogToken: SP_LOG_TOKEN, Flags: DWORD, InfHandle: HINF, Context: PINFCONTEXT, ) -> ()2356 pub fn SetupWriteTextLogInfLine( 2357 LogToken: SP_LOG_TOKEN, 2358 Flags: DWORD, 2359 InfHandle: HINF, 2360 Context: PINFCONTEXT, 2361 ) -> (); SetupGetBackupInformationA( QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_A, ) -> BOOL2362 pub fn SetupGetBackupInformationA( 2363 QueueHandle: HSPFILEQ, 2364 BackupParams: PSP_BACKUP_QUEUE_PARAMS_A, 2365 ) -> BOOL; SetupGetBackupInformationW( QueueHandle: HSPFILEQ, BackupParams: PSP_BACKUP_QUEUE_PARAMS_W, ) -> BOOL2366 pub fn SetupGetBackupInformationW( 2367 QueueHandle: HSPFILEQ, 2368 BackupParams: PSP_BACKUP_QUEUE_PARAMS_W, 2369 ) -> BOOL; SetupPrepareQueueForRestoreA( QueueHandle: HSPFILEQ, BackupPath: PCSTR, RestoreFlags: DWORD, ) -> BOOL2370 pub fn SetupPrepareQueueForRestoreA( 2371 QueueHandle: HSPFILEQ, 2372 BackupPath: PCSTR, 2373 RestoreFlags: DWORD, 2374 ) -> BOOL; SetupPrepareQueueForRestoreW( QueueHandle: HSPFILEQ, BackupPath: PCWSTR, RestoreFlags: DWORD, ) -> BOOL2375 pub fn SetupPrepareQueueForRestoreW( 2376 QueueHandle: HSPFILEQ, 2377 BackupPath: PCWSTR, 2378 RestoreFlags: DWORD, 2379 ) -> BOOL; SetupSetNonInteractiveMode( NonInteractiveFlag: BOOL, ) -> BOOL2380 pub fn SetupSetNonInteractiveMode( 2381 NonInteractiveFlag: BOOL, 2382 ) -> BOOL; SetupGetNonInteractiveMode() -> BOOL2383 pub fn SetupGetNonInteractiveMode() -> BOOL; SetupDiCreateDeviceInfoList( ClassGuid: *const GUID, hwndParent: HWND, ) -> HDEVINFO2384 pub fn SetupDiCreateDeviceInfoList( 2385 ClassGuid: *const GUID, 2386 hwndParent: HWND, 2387 ) -> HDEVINFO; SetupDiCreateDeviceInfoListExA( ClassGuid: *const GUID, hwndParent: HWND, MachineName: PCSTR, Reserved: PVOID, ) -> HDEVINFO2388 pub fn SetupDiCreateDeviceInfoListExA( 2389 ClassGuid: *const GUID, 2390 hwndParent: HWND, 2391 MachineName: PCSTR, 2392 Reserved: PVOID, 2393 ) -> HDEVINFO; SetupDiCreateDeviceInfoListExW( ClassGuid: *const GUID, hwndParent: HWND, MachineName: PCWSTR, Reserved: PVOID, ) -> HDEVINFO2394 pub fn SetupDiCreateDeviceInfoListExW( 2395 ClassGuid: *const GUID, 2396 hwndParent: HWND, 2397 MachineName: PCWSTR, 2398 Reserved: PVOID, 2399 ) -> HDEVINFO; SetupDiGetDeviceInfoListClass( DeviceInfoSet: HDEVINFO, ClassGuid: LPGUID, ) -> BOOL2400 pub fn SetupDiGetDeviceInfoListClass( 2401 DeviceInfoSet: HDEVINFO, 2402 ClassGuid: LPGUID, 2403 ) -> BOOL; SetupDiGetDeviceInfoListDetailA( DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_A, ) -> BOOL2404 pub fn SetupDiGetDeviceInfoListDetailA( 2405 DeviceInfoSet: HDEVINFO, 2406 DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_A, 2407 ) -> BOOL; SetupDiGetDeviceInfoListDetailW( DeviceInfoSet: HDEVINFO, DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_W, ) -> BOOL2408 pub fn SetupDiGetDeviceInfoListDetailW( 2409 DeviceInfoSet: HDEVINFO, 2410 DeviceInfoSetDetailData: PSP_DEVINFO_LIST_DETAIL_DATA_W, 2411 ) -> BOOL; 2412 } 2413 pub const DICD_GENERATE_ID: DWORD = 0x00000001; 2414 pub const DICD_INHERIT_CLASSDRVS: DWORD = 0x00000002; 2415 extern "system" { SetupDiCreateDeviceInfoA( DeviceInfoSet: HDEVINFO, DeviceName: PCSTR, ClassGuid: *const GUID, DeviceDescription: PCSTR, hwndParent: HWND, CreationFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2416 pub fn SetupDiCreateDeviceInfoA( 2417 DeviceInfoSet: HDEVINFO, 2418 DeviceName: PCSTR, 2419 ClassGuid: *const GUID, 2420 DeviceDescription: PCSTR, 2421 hwndParent: HWND, 2422 CreationFlags: DWORD, 2423 DeviceInfoData: PSP_DEVINFO_DATA, 2424 ) -> BOOL; SetupDiCreateDeviceInfoW( DeviceInfoSet: HDEVINFO, DeviceName: PCWSTR, ClassGuid: *const GUID, DeviceDescription: PCWSTR, hwndParent: HWND, CreationFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2425 pub fn SetupDiCreateDeviceInfoW( 2426 DeviceInfoSet: HDEVINFO, 2427 DeviceName: PCWSTR, 2428 ClassGuid: *const GUID, 2429 DeviceDescription: PCWSTR, 2430 hwndParent: HWND, 2431 CreationFlags: DWORD, 2432 DeviceInfoData: PSP_DEVINFO_DATA, 2433 ) -> BOOL; 2434 } 2435 pub const DIOD_INHERIT_CLASSDRVS: DWORD = 0x00000002; 2436 pub const DIOD_CANCEL_REMOVE: DWORD = 0x00000004; 2437 extern "system" { SetupDiOpenDeviceInfoA( DeviceInfoSet: HDEVINFO, DeviceInstanceId: PCSTR, hwndParent: HWND, OpenFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2438 pub fn SetupDiOpenDeviceInfoA( 2439 DeviceInfoSet: HDEVINFO, 2440 DeviceInstanceId: PCSTR, 2441 hwndParent: HWND, 2442 OpenFlags: DWORD, 2443 DeviceInfoData: PSP_DEVINFO_DATA, 2444 ) -> BOOL; SetupDiOpenDeviceInfoW( DeviceInfoSet: HDEVINFO, DeviceInstanceId: PCWSTR, hwndParent: HWND, OpenFlags: DWORD, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2445 pub fn SetupDiOpenDeviceInfoW( 2446 DeviceInfoSet: HDEVINFO, 2447 DeviceInstanceId: PCWSTR, 2448 hwndParent: HWND, 2449 OpenFlags: DWORD, 2450 DeviceInfoData: PSP_DEVINFO_DATA, 2451 ) -> BOOL; SetupDiGetDeviceInstanceIdA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstanceId: PSTR, DeviceInstanceIdSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2452 pub fn SetupDiGetDeviceInstanceIdA( 2453 DeviceInfoSet: HDEVINFO, 2454 DeviceInfoData: PSP_DEVINFO_DATA, 2455 DeviceInstanceId: PSTR, 2456 DeviceInstanceIdSize: DWORD, 2457 RequiredSize: PDWORD, 2458 ) -> BOOL; SetupDiGetDeviceInstanceIdW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstanceId: PWSTR, DeviceInstanceIdSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2459 pub fn SetupDiGetDeviceInstanceIdW( 2460 DeviceInfoSet: HDEVINFO, 2461 DeviceInfoData: PSP_DEVINFO_DATA, 2462 DeviceInstanceId: PWSTR, 2463 DeviceInstanceIdSize: DWORD, 2464 RequiredSize: PDWORD, 2465 ) -> BOOL; SetupDiDeleteDeviceInfo( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2466 pub fn SetupDiDeleteDeviceInfo( 2467 DeviceInfoSet: HDEVINFO, 2468 DeviceInfoData: PSP_DEVINFO_DATA, 2469 ) -> BOOL; SetupDiEnumDeviceInfo( DeviceInfoSet: HDEVINFO, MemberIndex: DWORD, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2470 pub fn SetupDiEnumDeviceInfo( 2471 DeviceInfoSet: HDEVINFO, 2472 MemberIndex: DWORD, 2473 DeviceInfoData: PSP_DEVINFO_DATA, 2474 ) -> BOOL; SetupDiDestroyDeviceInfoList( DeviceInfoSet: HDEVINFO, ) -> BOOL2475 pub fn SetupDiDestroyDeviceInfoList( 2476 DeviceInfoSet: HDEVINFO, 2477 ) -> BOOL; SetupDiEnumDeviceInterfaces( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: *const GUID, MemberIndex: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2478 pub fn SetupDiEnumDeviceInterfaces( 2479 DeviceInfoSet: HDEVINFO, 2480 DeviceInfoData: PSP_DEVINFO_DATA, 2481 InterfaceClassGuid: *const GUID, 2482 MemberIndex: DWORD, 2483 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2484 ) -> BOOL; SetupDiCreateDeviceInterfaceA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: *const GUID, ReferenceString: PCSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2485 pub fn SetupDiCreateDeviceInterfaceA( 2486 DeviceInfoSet: HDEVINFO, 2487 DeviceInfoData: PSP_DEVINFO_DATA, 2488 InterfaceClassGuid: *const GUID, 2489 ReferenceString: PCSTR, 2490 CreationFlags: DWORD, 2491 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2492 ) -> BOOL; SetupDiCreateDeviceInterfaceW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, InterfaceClassGuid: *const GUID, ReferenceString: PCWSTR, CreationFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2493 pub fn SetupDiCreateDeviceInterfaceW( 2494 DeviceInfoSet: HDEVINFO, 2495 DeviceInfoData: PSP_DEVINFO_DATA, 2496 InterfaceClassGuid: *const GUID, 2497 ReferenceString: PCWSTR, 2498 CreationFlags: DWORD, 2499 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2500 ) -> BOOL; 2501 } 2502 pub const DIODI_NO_ADD: DWORD = 0x00000001; 2503 extern "system" { SetupDiOpenDeviceInterfaceA( DeviceInfoSet: HDEVINFO, DevicePath: PCSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2504 pub fn SetupDiOpenDeviceInterfaceA( 2505 DeviceInfoSet: HDEVINFO, 2506 DevicePath: PCSTR, 2507 OpenFlags: DWORD, 2508 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2509 ) -> BOOL; SetupDiOpenDeviceInterfaceW( DeviceInfoSet: HDEVINFO, DevicePath: PCWSTR, OpenFlags: DWORD, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2510 pub fn SetupDiOpenDeviceInterfaceW( 2511 DeviceInfoSet: HDEVINFO, 2512 DevicePath: PCWSTR, 2513 OpenFlags: DWORD, 2514 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2515 ) -> BOOL; SetupDiGetDeviceInterfaceAlias( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, AliasInterfaceClassGuid: *const GUID, AliasDeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2516 pub fn SetupDiGetDeviceInterfaceAlias( 2517 DeviceInfoSet: HDEVINFO, 2518 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2519 AliasInterfaceClassGuid: *const GUID, 2520 AliasDeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2521 ) -> BOOL; SetupDiDeleteDeviceInterfaceData( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2522 pub fn SetupDiDeleteDeviceInterfaceData( 2523 DeviceInfoSet: HDEVINFO, 2524 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2525 ) -> BOOL; SetupDiRemoveDeviceInterface( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, ) -> BOOL2526 pub fn SetupDiRemoveDeviceInterface( 2527 DeviceInfoSet: HDEVINFO, 2528 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2529 ) -> BOOL; SetupDiGetDeviceInterfaceDetailA( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2530 pub fn SetupDiGetDeviceInterfaceDetailA( 2531 DeviceInfoSet: HDEVINFO, 2532 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2533 DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_A, 2534 DeviceInterfaceDetailDataSize: DWORD, 2535 RequiredSize: PDWORD, 2536 DeviceInfoData: PSP_DEVINFO_DATA, 2537 ) -> BOOL; SetupDiGetDeviceInterfaceDetailW( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DeviceInterfaceDetailDataSize: DWORD, RequiredSize: PDWORD, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2538 pub fn SetupDiGetDeviceInterfaceDetailW( 2539 DeviceInfoSet: HDEVINFO, 2540 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2541 DeviceInterfaceDetailData: PSP_DEVICE_INTERFACE_DETAIL_DATA_W, 2542 DeviceInterfaceDetailDataSize: DWORD, 2543 RequiredSize: PDWORD, 2544 DeviceInfoData: PSP_DEVINFO_DATA, 2545 ) -> BOOL; SetupDiInstallDeviceInterfaces( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2546 pub fn SetupDiInstallDeviceInterfaces( 2547 DeviceInfoSet: HDEVINFO, 2548 DeviceInfoData: PSP_DEVINFO_DATA, 2549 ) -> BOOL; SetupDiSetDeviceInterfaceDefault( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Flags: DWORD, Reserved: PVOID, ) -> BOOL2550 pub fn SetupDiSetDeviceInterfaceDefault( 2551 DeviceInfoSet: HDEVINFO, 2552 DeviceInfoData: PSP_DEVINFO_DATA, 2553 Flags: DWORD, 2554 Reserved: PVOID, 2555 ) -> BOOL; 2556 } 2557 pub const SPRDI_FIND_DUPS: DWORD = 0x00000001; 2558 extern "system" { SetupDiRegisterDeviceInfo( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Flags: DWORD, CompareProc: PSP_DETSIG_CMPPROC, CompareContext: PVOID, DupDeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2559 pub fn SetupDiRegisterDeviceInfo( 2560 DeviceInfoSet: HDEVINFO, 2561 DeviceInfoData: PSP_DEVINFO_DATA, 2562 Flags: DWORD, 2563 CompareProc: PSP_DETSIG_CMPPROC, 2564 CompareContext: PVOID, 2565 DupDeviceInfoData: PSP_DEVINFO_DATA, 2566 ) -> BOOL; 2567 } 2568 pub const SPDIT_NODRIVER: DWORD = 0x00000000; 2569 pub const SPDIT_CLASSDRIVER: DWORD = 0x00000001; 2570 pub const SPDIT_COMPATDRIVER: DWORD = 0x00000002; 2571 extern "system" { SetupDiBuildDriverInfoList( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, ) -> BOOL2572 pub fn SetupDiBuildDriverInfoList( 2573 DeviceInfoSet: HDEVINFO, 2574 DeviceInfoData: PSP_DEVINFO_DATA, 2575 DriverType: DWORD, 2576 ) -> BOOL; SetupDiCancelDriverInfoSearch( DeviceInfoSet: HDEVINFO, ) -> BOOL2577 pub fn SetupDiCancelDriverInfoSearch( 2578 DeviceInfoSet: HDEVINFO, 2579 ) -> BOOL; SetupDiEnumDriverInfoA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, MemberIndex: DWORD, DriverInfoData: PSP_DRVINFO_DATA_A, ) -> BOOL2580 pub fn SetupDiEnumDriverInfoA( 2581 DeviceInfoSet: HDEVINFO, 2582 DeviceInfoData: PSP_DEVINFO_DATA, 2583 DriverType: DWORD, 2584 MemberIndex: DWORD, 2585 DriverInfoData: PSP_DRVINFO_DATA_A, 2586 ) -> BOOL; SetupDiEnumDriverInfoW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, MemberIndex: DWORD, DriverInfoData: PSP_DRVINFO_DATA_W, ) -> BOOL2587 pub fn SetupDiEnumDriverInfoW( 2588 DeviceInfoSet: HDEVINFO, 2589 DeviceInfoData: PSP_DEVINFO_DATA, 2590 DriverType: DWORD, 2591 MemberIndex: DWORD, 2592 DriverInfoData: PSP_DRVINFO_DATA_W, 2593 ) -> BOOL; SetupDiGetSelectedDriverA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, ) -> BOOL2594 pub fn SetupDiGetSelectedDriverA( 2595 DeviceInfoSet: HDEVINFO, 2596 DeviceInfoData: PSP_DEVINFO_DATA, 2597 DriverInfoData: PSP_DRVINFO_DATA_A, 2598 ) -> BOOL; SetupDiGetSelectedDriverW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, ) -> BOOL2599 pub fn SetupDiGetSelectedDriverW( 2600 DeviceInfoSet: HDEVINFO, 2601 DeviceInfoData: PSP_DEVINFO_DATA, 2602 DriverInfoData: PSP_DRVINFO_DATA_W, 2603 ) -> BOOL; SetupDiSetSelectedDriverA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, ) -> BOOL2604 pub fn SetupDiSetSelectedDriverA( 2605 DeviceInfoSet: HDEVINFO, 2606 DeviceInfoData: PSP_DEVINFO_DATA, 2607 DriverInfoData: PSP_DRVINFO_DATA_A, 2608 ) -> BOOL; SetupDiSetSelectedDriverW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, ) -> BOOL2609 pub fn SetupDiSetSelectedDriverW( 2610 DeviceInfoSet: HDEVINFO, 2611 DeviceInfoData: PSP_DEVINFO_DATA, 2612 DriverInfoData: PSP_DRVINFO_DATA_W, 2613 ) -> BOOL; SetupDiGetDriverInfoDetailA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_A, DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_A, DriverInfoDetailDataSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2614 pub fn SetupDiGetDriverInfoDetailA( 2615 DeviceInfoSet: HDEVINFO, 2616 DeviceInfoData: PSP_DEVINFO_DATA, 2617 DriverInfoData: PSP_DRVINFO_DATA_A, 2618 DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_A, 2619 DriverInfoDetailDataSize: DWORD, 2620 RequiredSize: PDWORD, 2621 ) -> BOOL; SetupDiGetDriverInfoDetailW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverInfoData: PSP_DRVINFO_DATA_W, DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_W, DriverInfoDetailDataSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2622 pub fn SetupDiGetDriverInfoDetailW( 2623 DeviceInfoSet: HDEVINFO, 2624 DeviceInfoData: PSP_DEVINFO_DATA, 2625 DriverInfoData: PSP_DRVINFO_DATA_W, 2626 DriverInfoDetailData: PSP_DRVINFO_DETAIL_DATA_W, 2627 DriverInfoDetailDataSize: DWORD, 2628 RequiredSize: PDWORD, 2629 ) -> BOOL; SetupDiDestroyDriverInfoList( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DriverType: DWORD, ) -> BOOL2630 pub fn SetupDiDestroyDriverInfoList( 2631 DeviceInfoSet: HDEVINFO, 2632 DeviceInfoData: PSP_DEVINFO_DATA, 2633 DriverType: DWORD, 2634 ) -> BOOL; 2635 } 2636 pub const DIGCF_DEFAULT: DWORD = 0x00000001; 2637 pub const DIGCF_PRESENT: DWORD = 0x00000002; 2638 pub const DIGCF_ALLCLASSES: DWORD = 0x00000004; 2639 pub const DIGCF_PROFILE: DWORD = 0x00000008; 2640 pub const DIGCF_DEVICEINTERFACE: DWORD = 0x00000010; 2641 extern "system" { SetupDiGetClassDevsA( ClassGuid: *const GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD, ) -> HDEVINFO2642 pub fn SetupDiGetClassDevsA( 2643 ClassGuid: *const GUID, 2644 Enumerator: PCSTR, 2645 hwndParent: HWND, 2646 Flags: DWORD, 2647 ) -> HDEVINFO; SetupDiGetClassDevsW( ClassGuid: *const GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD, ) -> HDEVINFO2648 pub fn SetupDiGetClassDevsW( 2649 ClassGuid: *const GUID, 2650 Enumerator: PCWSTR, 2651 hwndParent: HWND, 2652 Flags: DWORD, 2653 ) -> HDEVINFO; SetupDiGetClassDevsExA( ClassGuid: *const GUID, Enumerator: PCSTR, hwndParent: HWND, Flags: DWORD, DeviceInfoSet: HDEVINFO, MachineName: PCSTR, Reserved: PVOID, ) -> HDEVINFO2654 pub fn SetupDiGetClassDevsExA( 2655 ClassGuid: *const GUID, 2656 Enumerator: PCSTR, 2657 hwndParent: HWND, 2658 Flags: DWORD, 2659 DeviceInfoSet: HDEVINFO, 2660 MachineName: PCSTR, 2661 Reserved: PVOID, 2662 ) -> HDEVINFO; SetupDiGetClassDevsExW( ClassGuid: *const GUID, Enumerator: PCWSTR, hwndParent: HWND, Flags: DWORD, DeviceInfoSet: HDEVINFO, MachineName: PCWSTR, Reserved: PVOID, ) -> HDEVINFO2663 pub fn SetupDiGetClassDevsExW( 2664 ClassGuid: *const GUID, 2665 Enumerator: PCWSTR, 2666 hwndParent: HWND, 2667 Flags: DWORD, 2668 DeviceInfoSet: HDEVINFO, 2669 MachineName: PCWSTR, 2670 Reserved: PVOID, 2671 ) -> HDEVINFO; SetupDiGetINFClassA( InfName: PCSTR, ClassGuid: LPGUID, ClassName: PSTR, ClassNameSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2672 pub fn SetupDiGetINFClassA( 2673 InfName: PCSTR, 2674 ClassGuid: LPGUID, 2675 ClassName: PSTR, 2676 ClassNameSize: DWORD, 2677 RequiredSize: PDWORD, 2678 ) -> BOOL; SetupDiGetINFClassW( InfName: PCWSTR, ClassGuid: LPGUID, ClassName: PWSTR, ClassNameSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2679 pub fn SetupDiGetINFClassW( 2680 InfName: PCWSTR, 2681 ClassGuid: LPGUID, 2682 ClassName: PWSTR, 2683 ClassNameSize: DWORD, 2684 RequiredSize: PDWORD, 2685 ) -> BOOL; 2686 } 2687 pub const DIBCI_NOINSTALLCLASS: DWORD = 0x00000001; 2688 pub const DIBCI_NODISPLAYCLASS: DWORD = 0x00000002; 2689 extern "system" { SetupDiBuildClassInfoList( Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2690 pub fn SetupDiBuildClassInfoList( 2691 Flags: DWORD, 2692 ClassGuidList: LPGUID, 2693 ClassGuidListSize: DWORD, 2694 RequiredSize: PDWORD, 2695 ) -> BOOL; SetupDiBuildClassInfoListExA( Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID, ) -> BOOL2696 pub fn SetupDiBuildClassInfoListExA( 2697 Flags: DWORD, 2698 ClassGuidList: LPGUID, 2699 ClassGuidListSize: DWORD, 2700 RequiredSize: PDWORD, 2701 MachineName: PCSTR, 2702 Reserved: PVOID, 2703 ) -> BOOL; SetupDiBuildClassInfoListExW( Flags: DWORD, ClassGuidList: LPGUID, ClassGuidListSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL2704 pub fn SetupDiBuildClassInfoListExW( 2705 Flags: DWORD, 2706 ClassGuidList: LPGUID, 2707 ClassGuidListSize: DWORD, 2708 RequiredSize: PDWORD, 2709 MachineName: PCWSTR, 2710 Reserved: PVOID, 2711 ) -> BOOL; SetupDiGetClassDescriptionA( ClassGuid: *const GUID, ClassDescription: PSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2712 pub fn SetupDiGetClassDescriptionA( 2713 ClassGuid: *const GUID, 2714 ClassDescription: PSTR, 2715 ClassDescriptionSize: DWORD, 2716 RequiredSize: PDWORD, 2717 ) -> BOOL; SetupDiGetClassDescriptionW( ClassGuid: *const GUID, ClassDescription: PWSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, ) -> BOOL2718 pub fn SetupDiGetClassDescriptionW( 2719 ClassGuid: *const GUID, 2720 ClassDescription: PWSTR, 2721 ClassDescriptionSize: DWORD, 2722 RequiredSize: PDWORD, 2723 ) -> BOOL; SetupDiGetClassDescriptionExA( ClassGuid: *const GUID, ClassDescription: PSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID, ) -> BOOL2724 pub fn SetupDiGetClassDescriptionExA( 2725 ClassGuid: *const GUID, 2726 ClassDescription: PSTR, 2727 ClassDescriptionSize: DWORD, 2728 RequiredSize: PDWORD, 2729 MachineName: PCSTR, 2730 Reserved: PVOID, 2731 ) -> BOOL; SetupDiGetClassDescriptionExW( ClassGuid: *const GUID, ClassDescription: PWSTR, ClassDescriptionSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL2732 pub fn SetupDiGetClassDescriptionExW( 2733 ClassGuid: *const GUID, 2734 ClassDescription: PWSTR, 2735 ClassDescriptionSize: DWORD, 2736 RequiredSize: PDWORD, 2737 MachineName: PCWSTR, 2738 Reserved: PVOID, 2739 ) -> BOOL; SetupDiCallClassInstaller( InstallFunction: DI_FUNCTION, DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2740 pub fn SetupDiCallClassInstaller( 2741 InstallFunction: DI_FUNCTION, 2742 DeviceInfoSet: HDEVINFO, 2743 DeviceInfoData: PSP_DEVINFO_DATA, 2744 ) -> BOOL; SetupDiSelectDevice( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2745 pub fn SetupDiSelectDevice( 2746 DeviceInfoSet: HDEVINFO, 2747 DeviceInfoData: PSP_DEVINFO_DATA, 2748 ) -> BOOL; SetupDiSelectBestCompatDrv( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2749 pub fn SetupDiSelectBestCompatDrv( 2750 DeviceInfoSet: HDEVINFO, 2751 DeviceInfoData: PSP_DEVINFO_DATA, 2752 ) -> BOOL; SetupDiInstallDevice( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2753 pub fn SetupDiInstallDevice( 2754 DeviceInfoSet: HDEVINFO, 2755 DeviceInfoData: PSP_DEVINFO_DATA, 2756 ) -> BOOL; SetupDiInstallDriverFiles( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2757 pub fn SetupDiInstallDriverFiles( 2758 DeviceInfoSet: HDEVINFO, 2759 DeviceInfoData: PSP_DEVINFO_DATA, 2760 ) -> BOOL; SetupDiRegisterCoDeviceInstallers( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2761 pub fn SetupDiRegisterCoDeviceInstallers( 2762 DeviceInfoSet: HDEVINFO, 2763 DeviceInfoData: PSP_DEVINFO_DATA, 2764 ) -> BOOL; SetupDiRemoveDevice( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2765 pub fn SetupDiRemoveDevice( 2766 DeviceInfoSet: HDEVINFO, 2767 DeviceInfoData: PSP_DEVINFO_DATA, 2768 ) -> BOOL; SetupDiUnremoveDevice( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2769 pub fn SetupDiUnremoveDevice( 2770 DeviceInfoSet: HDEVINFO, 2771 DeviceInfoData: PSP_DEVINFO_DATA, 2772 ) -> BOOL; SetupDiRestartDevices( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2773 pub fn SetupDiRestartDevices( 2774 DeviceInfoSet: HDEVINFO, 2775 DeviceInfoData: PSP_DEVINFO_DATA, 2776 ) -> BOOL; SetupDiChangeState( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ) -> BOOL2777 pub fn SetupDiChangeState( 2778 DeviceInfoSet: HDEVINFO, 2779 DeviceInfoData: PSP_DEVINFO_DATA, 2780 ) -> BOOL; SetupDiInstallClassA( hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ, ) -> BOOL2781 pub fn SetupDiInstallClassA( 2782 hwndParent: HWND, 2783 InfFileName: PCSTR, 2784 Flags: DWORD, 2785 FileQueue: HSPFILEQ, 2786 ) -> BOOL; SetupDiInstallClassW( hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ, ) -> BOOL2787 pub fn SetupDiInstallClassW( 2788 hwndParent: HWND, 2789 InfFileName: PCWSTR, 2790 Flags: DWORD, 2791 FileQueue: HSPFILEQ, 2792 ) -> BOOL; SetupDiInstallClassExA( hwndParent: HWND, InfFileName: PCSTR, Flags: DWORD, FileQueue: HSPFILEQ, InterfaceClassGuid: *const GUID, Reserved1: PVOID, Reserved2: PVOID, ) -> BOOL2793 pub fn SetupDiInstallClassExA( 2794 hwndParent: HWND, 2795 InfFileName: PCSTR, 2796 Flags: DWORD, 2797 FileQueue: HSPFILEQ, 2798 InterfaceClassGuid: *const GUID, 2799 Reserved1: PVOID, 2800 Reserved2: PVOID, 2801 ) -> BOOL; SetupDiInstallClassExW( hwndParent: HWND, InfFileName: PCWSTR, Flags: DWORD, FileQueue: HSPFILEQ, InterfaceClassGuid: *const GUID, Reserved1: PVOID, Reserved2: PVOID, ) -> BOOL2802 pub fn SetupDiInstallClassExW( 2803 hwndParent: HWND, 2804 InfFileName: PCWSTR, 2805 Flags: DWORD, 2806 FileQueue: HSPFILEQ, 2807 InterfaceClassGuid: *const GUID, 2808 Reserved1: PVOID, 2809 Reserved2: PVOID, 2810 ) -> BOOL; SetupDiOpenClassRegKey( ClassGuid: *const GUID, samDesired: REGSAM, ) -> HKEY2811 pub fn SetupDiOpenClassRegKey( 2812 ClassGuid: *const GUID, 2813 samDesired: REGSAM, 2814 ) -> HKEY; 2815 } 2816 pub const DIOCR_INSTALLER: DWORD = 0x00000001; 2817 pub const DIOCR_INTERFACE: DWORD = 0x00000002; 2818 extern "system" { SetupDiOpenClassRegKeyExA( ClassGuid: *const GUID, samDesired: REGSAM, Flags: DWORD, MachineName: PCSTR, Reserved: PVOID, ) -> HKEY2819 pub fn SetupDiOpenClassRegKeyExA( 2820 ClassGuid: *const GUID, 2821 samDesired: REGSAM, 2822 Flags: DWORD, 2823 MachineName: PCSTR, 2824 Reserved: PVOID, 2825 ) -> HKEY; SetupDiOpenClassRegKeyExW( ClassGuid: *const GUID, samDesired: REGSAM, Flags: DWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> HKEY2826 pub fn SetupDiOpenClassRegKeyExW( 2827 ClassGuid: *const GUID, 2828 samDesired: REGSAM, 2829 Flags: DWORD, 2830 MachineName: PCWSTR, 2831 Reserved: PVOID, 2832 ) -> HKEY; SetupDiCreateDeviceInterfaceRegKeyA( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCSTR, ) -> HKEY2833 pub fn SetupDiCreateDeviceInterfaceRegKeyA( 2834 DeviceInfoSet: HDEVINFO, 2835 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2836 Reserved: DWORD, 2837 samDesired: REGSAM, 2838 InfHandle: HINF, 2839 InfSectionName: PCSTR, 2840 ) -> HKEY; SetupDiCreateDeviceInterfaceRegKeyW( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, InfHandle: HINF, InfSectionName: PCWSTR, ) -> HKEY2841 pub fn SetupDiCreateDeviceInterfaceRegKeyW( 2842 DeviceInfoSet: HDEVINFO, 2843 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2844 Reserved: DWORD, 2845 samDesired: REGSAM, 2846 InfHandle: HINF, 2847 InfSectionName: PCWSTR, 2848 ) -> HKEY; SetupDiOpenDeviceInterfaceRegKey( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, samDesired: REGSAM, ) -> HKEY2849 pub fn SetupDiOpenDeviceInterfaceRegKey( 2850 DeviceInfoSet: HDEVINFO, 2851 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2852 Reserved: DWORD, 2853 samDesired: REGSAM, 2854 ) -> HKEY; SetupDiDeleteDeviceInterfaceRegKey( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, Reserved: DWORD, ) -> BOOL2855 pub fn SetupDiDeleteDeviceInterfaceRegKey( 2856 DeviceInfoSet: HDEVINFO, 2857 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2858 Reserved: DWORD, 2859 ) -> BOOL; 2860 } 2861 pub const DIREG_DEV: DWORD = 0x00000001; 2862 pub const DIREG_DRV: DWORD = 0x00000002; 2863 pub const DIREG_BOTH: DWORD = 0x00000004; 2864 extern "system" { SetupDiCreateDevRegKeyA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, InfHandle: HINF, InfSectionName: PCSTR, ) -> HKEY2865 pub fn SetupDiCreateDevRegKeyA( 2866 DeviceInfoSet: HDEVINFO, 2867 DeviceInfoData: PSP_DEVINFO_DATA, 2868 Scope: DWORD, 2869 HwProfile: DWORD, 2870 KeyType: DWORD, 2871 InfHandle: HINF, 2872 InfSectionName: PCSTR, 2873 ) -> HKEY; SetupDiCreateDevRegKeyW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, InfHandle: HINF, InfSectionName: PCWSTR, ) -> HKEY2874 pub fn SetupDiCreateDevRegKeyW( 2875 DeviceInfoSet: HDEVINFO, 2876 DeviceInfoData: PSP_DEVINFO_DATA, 2877 Scope: DWORD, 2878 HwProfile: DWORD, 2879 KeyType: DWORD, 2880 InfHandle: HINF, 2881 InfSectionName: PCWSTR, 2882 ) -> HKEY; SetupDiOpenDevRegKey( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, samDesired: REGSAM, ) -> HKEY2883 pub fn SetupDiOpenDevRegKey( 2884 DeviceInfoSet: HDEVINFO, 2885 DeviceInfoData: PSP_DEVINFO_DATA, 2886 Scope: DWORD, 2887 HwProfile: DWORD, 2888 KeyType: DWORD, 2889 samDesired: REGSAM, 2890 ) -> HKEY; SetupDiDeleteDevRegKey( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Scope: DWORD, HwProfile: DWORD, KeyType: DWORD, ) -> BOOL2891 pub fn SetupDiDeleteDevRegKey( 2892 DeviceInfoSet: HDEVINFO, 2893 DeviceInfoData: PSP_DEVINFO_DATA, 2894 Scope: DWORD, 2895 HwProfile: DWORD, 2896 KeyType: DWORD, 2897 ) -> BOOL; SetupDiGetHwProfileList( HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD, ) -> BOOL2898 pub fn SetupDiGetHwProfileList( 2899 HwProfileList: PDWORD, 2900 HwProfileListSize: DWORD, 2901 RequiredSize: PDWORD, 2902 CurrentlyActiveIndex: PDWORD, 2903 ) -> BOOL; SetupDiGetHwProfileListExA( HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD, MachineName: PCSTR, Reserved: PVOID, ) -> BOOL2904 pub fn SetupDiGetHwProfileListExA( 2905 HwProfileList: PDWORD, 2906 HwProfileListSize: DWORD, 2907 RequiredSize: PDWORD, 2908 CurrentlyActiveIndex: PDWORD, 2909 MachineName: PCSTR, 2910 Reserved: PVOID, 2911 ) -> BOOL; SetupDiGetHwProfileListExW( HwProfileList: PDWORD, HwProfileListSize: DWORD, RequiredSize: PDWORD, CurrentlyActiveIndex: PDWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL2912 pub fn SetupDiGetHwProfileListExW( 2913 HwProfileList: PDWORD, 2914 HwProfileListSize: DWORD, 2915 RequiredSize: PDWORD, 2916 CurrentlyActiveIndex: PDWORD, 2917 MachineName: PCWSTR, 2918 Reserved: PVOID, 2919 ) -> BOOL; SetupDiGetDevicePropertyKeys( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, PropertyKeyArray: *mut DEVPROPKEY, PropertyKeyCount: DWORD, RequiredPropertyKeyCount: PDWORD, Flags: DWORD, ) -> BOOL2920 pub fn SetupDiGetDevicePropertyKeys( 2921 DeviceInfoSet: HDEVINFO, 2922 DeviceInfoData: PSP_DEVINFO_DATA, 2923 PropertyKeyArray: *mut DEVPROPKEY, 2924 PropertyKeyCount: DWORD, 2925 RequiredPropertyKeyCount: PDWORD, 2926 Flags: DWORD, 2927 ) -> BOOL; SetupDiGetDevicePropertyW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, PropertyKey: *const DEVPROPKEY, PropertyType: *mut DEVPROPTYPE, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, Flags: DWORD, ) -> BOOL2928 pub fn SetupDiGetDevicePropertyW( 2929 DeviceInfoSet: HDEVINFO, 2930 DeviceInfoData: PSP_DEVINFO_DATA, 2931 PropertyKey: *const DEVPROPKEY, 2932 PropertyType: *mut DEVPROPTYPE, 2933 PropertyBuffer: PBYTE, 2934 PropertyBufferSize: DWORD, 2935 RequiredSize: PDWORD, 2936 Flags: DWORD, 2937 ) -> BOOL; SetupDiSetDevicePropertyW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, PropertyKey: *const DEVPROPKEY, PropertyType: DEVPROPTYPE, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, Flags: DWORD, ) -> BOOL2938 pub fn SetupDiSetDevicePropertyW( 2939 DeviceInfoSet: HDEVINFO, 2940 DeviceInfoData: PSP_DEVINFO_DATA, 2941 PropertyKey: *const DEVPROPKEY, 2942 PropertyType: DEVPROPTYPE, 2943 PropertyBuffer: *const BYTE, 2944 PropertyBufferSize: DWORD, 2945 Flags: DWORD, 2946 ) -> BOOL; SetupDiGetDeviceInterfacePropertyKeys( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, PropertyKeyArray: *mut DEVPROPKEY, PropertyKeyCount: DWORD, RequiredPropertyKeyCount: PDWORD, Flags: DWORD, ) -> BOOL2947 pub fn SetupDiGetDeviceInterfacePropertyKeys( 2948 DeviceInfoSet: HDEVINFO, 2949 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2950 PropertyKeyArray: *mut DEVPROPKEY, 2951 PropertyKeyCount: DWORD, 2952 RequiredPropertyKeyCount: PDWORD, 2953 Flags: DWORD, 2954 ) -> BOOL; SetupDiGetDeviceInterfacePropertyW( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, PropertyKey: *const DEVPROPKEY, PropertyType: *mut DEVPROPTYPE, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, Flags: DWORD, ) -> BOOL2955 pub fn SetupDiGetDeviceInterfacePropertyW( 2956 DeviceInfoSet: HDEVINFO, 2957 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2958 PropertyKey: *const DEVPROPKEY, 2959 PropertyType: *mut DEVPROPTYPE, 2960 PropertyBuffer: PBYTE, 2961 PropertyBufferSize: DWORD, 2962 RequiredSize: PDWORD, 2963 Flags: DWORD, 2964 ) -> BOOL; SetupDiSetDeviceInterfacePropertyW( DeviceInfoSet: HDEVINFO, DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, PropertyKey: *const DEVPROPKEY, PropertyType: DEVPROPTYPE, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, Flags: DWORD, ) -> BOOL2965 pub fn SetupDiSetDeviceInterfacePropertyW( 2966 DeviceInfoSet: HDEVINFO, 2967 DeviceInterfaceData: PSP_DEVICE_INTERFACE_DATA, 2968 PropertyKey: *const DEVPROPKEY, 2969 PropertyType: DEVPROPTYPE, 2970 PropertyBuffer: *const BYTE, 2971 PropertyBufferSize: DWORD, 2972 Flags: DWORD, 2973 ) -> BOOL; 2974 } 2975 pub const DICLASSPROP_INSTALLER: DWORD = 0x00000001; 2976 pub const DICLASSPROP_INTERFACE: DWORD = 0x00000002; 2977 extern "system" { SetupDiGetClassPropertyKeys( ClassGuid: *const GUID, PropertyKeyArray: *mut DEVPROPKEY, PropertyKeyCount: DWORD, RequiredPropertyKeyCount: PDWORD, Flags: DWORD, ) -> BOOL2978 pub fn SetupDiGetClassPropertyKeys( 2979 ClassGuid: *const GUID, 2980 PropertyKeyArray: *mut DEVPROPKEY, 2981 PropertyKeyCount: DWORD, 2982 RequiredPropertyKeyCount: PDWORD, 2983 Flags: DWORD, 2984 ) -> BOOL; SetupDiGetClassPropertyKeysExW( ClassGuid: *const GUID, PropertyKeyArray: *mut DEVPROPKEY, PropertyKeyCount: DWORD, RequiredPropertyKeyCount: PDWORD, Flags: DWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL2985 pub fn SetupDiGetClassPropertyKeysExW( 2986 ClassGuid: *const GUID, 2987 PropertyKeyArray: *mut DEVPROPKEY, 2988 PropertyKeyCount: DWORD, 2989 RequiredPropertyKeyCount: PDWORD, 2990 Flags: DWORD, 2991 MachineName: PCWSTR, 2992 Reserved: PVOID, 2993 ) -> BOOL; SetupDiGetClassPropertyW( ClassGuid: *const GUID, PropertyKey: *const DEVPROPKEY, PropertyType: *mut DEVPROPTYPE, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, Flags: DWORD, ) -> BOOL2994 pub fn SetupDiGetClassPropertyW( 2995 ClassGuid: *const GUID, 2996 PropertyKey: *const DEVPROPKEY, 2997 PropertyType: *mut DEVPROPTYPE, 2998 PropertyBuffer: PBYTE, 2999 PropertyBufferSize: DWORD, 3000 RequiredSize: PDWORD, 3001 Flags: DWORD, 3002 ) -> BOOL; SetupDiGetClassPropertyExW( ClassGuid: *const GUID, PropertyKey: *const DEVPROPKEY, PropertyType: *mut DEVPROPTYPE, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, Flags: DWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL3003 pub fn SetupDiGetClassPropertyExW( 3004 ClassGuid: *const GUID, 3005 PropertyKey: *const DEVPROPKEY, 3006 PropertyType: *mut DEVPROPTYPE, 3007 PropertyBuffer: PBYTE, 3008 PropertyBufferSize: DWORD, 3009 RequiredSize: PDWORD, 3010 Flags: DWORD, 3011 MachineName: PCWSTR, 3012 Reserved: PVOID, 3013 ) -> BOOL; SetupDiSetClassPropertyW( ClassGuid: *const GUID, PropertyKey: *const DEVPROPKEY, PropertyType: DEVPROPTYPE, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, Flags: DWORD, ) -> BOOL3014 pub fn SetupDiSetClassPropertyW( 3015 ClassGuid: *const GUID, 3016 PropertyKey: *const DEVPROPKEY, 3017 PropertyType: DEVPROPTYPE, 3018 PropertyBuffer: *const BYTE, 3019 PropertyBufferSize: DWORD, 3020 Flags: DWORD, 3021 ) -> BOOL; SetupDiSetClassPropertyExW( ClassGuid: *const GUID, PropertyKey: *const DEVPROPKEY, PropertyType: DEVPROPTYPE, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, Flags: DWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL3022 pub fn SetupDiSetClassPropertyExW( 3023 ClassGuid: *const GUID, 3024 PropertyKey: *const DEVPROPKEY, 3025 PropertyType: DEVPROPTYPE, 3026 PropertyBuffer: *const BYTE, 3027 PropertyBufferSize: DWORD, 3028 Flags: DWORD, 3029 MachineName: PCWSTR, 3030 Reserved: PVOID, 3031 ) -> BOOL; 3032 } 3033 pub const SPDRP_DEVICEDESC: DWORD = 0x00000000; 3034 pub const SPDRP_HARDWAREID: DWORD = 0x00000001; 3035 pub const SPDRP_COMPATIBLEIDS: DWORD = 0x00000002; 3036 pub const SPDRP_UNUSED0: DWORD = 0x00000003; 3037 pub const SPDRP_SERVICE: DWORD = 0x00000004; 3038 pub const SPDRP_UNUSED1: DWORD = 0x00000005; 3039 pub const SPDRP_UNUSED2: DWORD = 0x00000006; 3040 pub const SPDRP_CLASS: DWORD = 0x00000007; 3041 pub const SPDRP_CLASSGUID: DWORD = 0x00000008; 3042 pub const SPDRP_DRIVER: DWORD = 0x00000009; 3043 pub const SPDRP_CONFIGFLAGS: DWORD = 0x0000000A; 3044 pub const SPDRP_MFG: DWORD = 0x0000000B; 3045 pub const SPDRP_FRIENDLYNAME: DWORD = 0x0000000C; 3046 pub const SPDRP_LOCATION_INFORMATION: DWORD = 0x0000000D; 3047 pub const SPDRP_PHYSICAL_DEVICE_OBJECT_NAME: DWORD = 0x0000000E; 3048 pub const SPDRP_CAPABILITIES: DWORD = 0x0000000F; 3049 pub const SPDRP_UI_NUMBER: DWORD = 0x00000010; 3050 pub const SPDRP_UPPERFILTERS: DWORD = 0x00000011; 3051 pub const SPDRP_LOWERFILTERS: DWORD = 0x00000012; 3052 pub const SPDRP_BUSTYPEGUID: DWORD = 0x00000013; 3053 pub const SPDRP_LEGACYBUSTYPE: DWORD = 0x00000014; 3054 pub const SPDRP_BUSNUMBER: DWORD = 0x00000015; 3055 pub const SPDRP_ENUMERATOR_NAME: DWORD = 0x00000016; 3056 pub const SPDRP_SECURITY: DWORD = 0x00000017; 3057 pub const SPDRP_SECURITY_SDS: DWORD = 0x00000018; 3058 pub const SPDRP_DEVTYPE: DWORD = 0x00000019; 3059 pub const SPDRP_EXCLUSIVE: DWORD = 0x0000001A; 3060 pub const SPDRP_CHARACTERISTICS: DWORD = 0x0000001B; 3061 pub const SPDRP_ADDRESS: DWORD = 0x0000001C; 3062 pub const SPDRP_UI_NUMBER_DESC_FORMAT: DWORD = 0x0000001D; 3063 pub const SPDRP_DEVICE_POWER_DATA: DWORD = 0x0000001E; 3064 pub const SPDRP_REMOVAL_POLICY: DWORD = 0x0000001F; 3065 pub const SPDRP_REMOVAL_POLICY_HW_DEFAULT: DWORD = 0x00000020; 3066 pub const SPDRP_REMOVAL_POLICY_OVERRIDE: DWORD = 0x00000021; 3067 pub const SPDRP_INSTALL_STATE: DWORD = 0x00000022; 3068 pub const SPDRP_LOCATION_PATHS: DWORD = 0x00000023; 3069 pub const SPDRP_BASE_CONTAINERID: DWORD = 0x00000024; 3070 pub const SPDRP_MAXIMUM_PROPERTY: DWORD = 0x00000025; 3071 pub const SPCRP_UPPERFILTERS: DWORD = 0x00000011; 3072 pub const SPCRP_LOWERFILTERS: DWORD = 0x00000012; 3073 pub const SPCRP_SECURITY: DWORD = 0x00000017; 3074 pub const SPCRP_SECURITY_SDS: DWORD = 0x00000018; 3075 pub const SPCRP_DEVTYPE: DWORD = 0x00000019; 3076 pub const SPCRP_EXCLUSIVE: DWORD = 0x0000001A; 3077 pub const SPCRP_CHARACTERISTICS: DWORD = 0x0000001B; 3078 pub const SPCRP_MAXIMUM_PROPERTY: DWORD = 0x0000001C; 3079 extern "system" { SetupDiGetDeviceRegistryPropertyA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL3080 pub fn SetupDiGetDeviceRegistryPropertyA( 3081 DeviceInfoSet: HDEVINFO, 3082 DeviceInfoData: PSP_DEVINFO_DATA, 3083 Property: DWORD, 3084 PropertyRegDataType: PDWORD, 3085 PropertyBuffer: PBYTE, 3086 PropertyBufferSize: DWORD, 3087 RequiredSize: PDWORD, 3088 ) -> BOOL; SetupDiGetDeviceRegistryPropertyW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, ) -> BOOL3089 pub fn SetupDiGetDeviceRegistryPropertyW( 3090 DeviceInfoSet: HDEVINFO, 3091 DeviceInfoData: PSP_DEVINFO_DATA, 3092 Property: DWORD, 3093 PropertyRegDataType: PDWORD, 3094 PropertyBuffer: PBYTE, 3095 PropertyBufferSize: DWORD, 3096 RequiredSize: PDWORD, 3097 ) -> BOOL; SetupDiGetClassRegistryPropertyA( ClassGuid: *const GUID, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, MachineName: PCSTR, Reserved: PVOID, ) -> BOOL3098 pub fn SetupDiGetClassRegistryPropertyA( 3099 ClassGuid: *const GUID, 3100 Property: DWORD, 3101 PropertyRegDataType: PDWORD, 3102 PropertyBuffer: PBYTE, 3103 PropertyBufferSize: DWORD, 3104 RequiredSize: PDWORD, 3105 MachineName: PCSTR, 3106 Reserved: PVOID, 3107 ) -> BOOL; SetupDiGetClassRegistryPropertyW( ClassGuid: *const GUID, Property: DWORD, PropertyRegDataType: PDWORD, PropertyBuffer: PBYTE, PropertyBufferSize: DWORD, RequiredSize: PDWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL3108 pub fn SetupDiGetClassRegistryPropertyW( 3109 ClassGuid: *const GUID, 3110 Property: DWORD, 3111 PropertyRegDataType: PDWORD, 3112 PropertyBuffer: PBYTE, 3113 PropertyBufferSize: DWORD, 3114 RequiredSize: PDWORD, 3115 MachineName: PCWSTR, 3116 Reserved: PVOID, 3117 ) -> BOOL; SetupDiSetDeviceRegistryPropertyA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, ) -> BOOL3118 pub fn SetupDiSetDeviceRegistryPropertyA( 3119 DeviceInfoSet: HDEVINFO, 3120 DeviceInfoData: PSP_DEVINFO_DATA, 3121 Property: DWORD, 3122 PropertyBuffer: *const BYTE, 3123 PropertyBufferSize: DWORD, 3124 ) -> BOOL; SetupDiSetDeviceRegistryPropertyW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, Property: DWORD, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, ) -> BOOL3125 pub fn SetupDiSetDeviceRegistryPropertyW( 3126 DeviceInfoSet: HDEVINFO, 3127 DeviceInfoData: PSP_DEVINFO_DATA, 3128 Property: DWORD, 3129 PropertyBuffer: *const BYTE, 3130 PropertyBufferSize: DWORD, 3131 ) -> BOOL; SetupDiSetClassRegistryPropertyA( ClassGuid: *const GUID, Property: DWORD, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, MachineName: PCSTR, Reserved: PVOID, ) -> BOOL3132 pub fn SetupDiSetClassRegistryPropertyA( 3133 ClassGuid: *const GUID, 3134 Property: DWORD, 3135 PropertyBuffer: *const BYTE, 3136 PropertyBufferSize: DWORD, 3137 MachineName: PCSTR, 3138 Reserved: PVOID, 3139 ) -> BOOL; SetupDiSetClassRegistryPropertyW( ClassGuid: *const GUID, Property: DWORD, PropertyBuffer: *const BYTE, PropertyBufferSize: DWORD, MachineName: PCWSTR, Reserved: PVOID, ) -> BOOL3140 pub fn SetupDiSetClassRegistryPropertyW( 3141 ClassGuid: *const GUID, 3142 Property: DWORD, 3143 PropertyBuffer: *const BYTE, 3144 PropertyBufferSize: DWORD, 3145 MachineName: PCWSTR, 3146 Reserved: PVOID, 3147 ) -> BOOL; SetupDiGetDeviceInstallParamsA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A, ) -> BOOL3148 pub fn SetupDiGetDeviceInstallParamsA( 3149 DeviceInfoSet: HDEVINFO, 3150 DeviceInfoData: PSP_DEVINFO_DATA, 3151 DeviceInstallParams: PSP_DEVINSTALL_PARAMS_A, 3152 ) -> BOOL; SetupDiGetDeviceInstallParamsW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W, ) -> BOOL3153 pub fn SetupDiGetDeviceInstallParamsW( 3154 DeviceInfoSet: HDEVINFO, 3155 DeviceInfoData: PSP_DEVINFO_DATA, 3156 DeviceInstallParams: PSP_DEVINSTALL_PARAMS_W, 3157 ) -> BOOL; SetupDiGetClassInstallParamsA( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD, RequiredSize: PDWORD, ) -> BOOL3158 pub fn SetupDiGetClassInstallParamsA( 3159 DeviceInfoSet: HDEVINFO, 3160 DeviceInfoData: PSP_DEVINFO_DATA, 3161 ClassInstallParams: PSP_CLASSINSTALL_HEADER, 3162 ClassInstallParamsSize: DWORD, 3163 RequiredSize: PDWORD, 3164 ) -> BOOL; SetupDiGetClassInstallParamsW( DeviceInfoSet: HDEVINFO, DeviceInfoData: PSP_DEVINFO_DATA, ClassInstallParams: PSP_CLASSINSTALL_HEADER, ClassInstallParamsSize: DWORD, RequiredSize: PDWORD, ) -> BOOL3165