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