// SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., "\\\\MachineName\0").
// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supercedes the functionality of SetupDiGetDeviceInfoListClass).
DI_SHOWOEMDI_FLAGS=0x00000001// support Other... button
DI_SHOWCOMPATDI_FLAGS=0x00000002// show compatibility list
DI_SHOWCLASSDI_FLAGS=0x00000004// show class list
DI_SHOWALLDI_FLAGS=0x00000007// both class & compat list shown
DI_NOVCPDI_FLAGS=0x00000008// don't create a new copy queue--use caller-supplied FileQueue
DI_DIDCOMPATDI_FLAGS=0x00000010// Searched for compatible devices
DI_DIDCLASSDI_FLAGS=0x00000020// Searched for class devices
DI_AUTOASSIGNRESDI_FLAGS=0x00000040// No UI for resources if possible
// Flags returned by DiInstallDevice to indicate need to reboot/restart
DI_NEEDRESTARTDI_FLAGS=0x00000080// Reboot required to take effect
DI_NEEDREBOOTDI_FLAGS=0x00000100// ""
// Flags for device installation
DI_NOBROWSEDI_FLAGS=0x00000200// no Browse... in InsertDisk
// Flags set by DiBuildDriverInfoList
DI_MULTMFGSDI_FLAGS=0x00000400// Set if multiple manufacturers in class driver list
// Flag indicates that device is disabled
DI_DISABLEDDI_FLAGS=0x00000800// Set if device disabled
// Flags for Device/Class Properties
DI_GENERALPAGE_ADDEDDI_FLAGS=0x00001000
DI_RESOURCEPAGE_ADDEDDI_FLAGS=0x00002000
// Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated.
DI_PROPERTIES_CHANGEDI_FLAGS=0x00004000
// Flag to indicate that the sorting from the INF file should be used.
DI_INF_IS_SORTEDDI_FLAGS=0x00008000
// Flag to indicate that only the the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched.
DI_ENUMSINGLEINFDI_FLAGS=0x00010000
// Flag that prevents ConfigMgr from removing/re-enumerating devices during device
// registration, installation, and deletion.
DI_DONOTCALLCONFIGMGDI_FLAGS=0x00020000
// The following flag can be used to install a device disabled
DI_INSTALLDISABLEDDI_FLAGS=0x00040000
// Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver
// list from its existing class driver list, instead of the normal INF search.
DI_COMPAT_FROM_CLASSDI_FLAGS=0x00080000
// This flag is set if the Class Install params should be used.
DI_CLASSINSTALLPARAMSDI_FLAGS=0x00100000
// This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT.
DI_NODI_DEFAULTACTIONDI_FLAGS=0x00200000
// Flags for device installation
DI_QUIETINSTALLDI_FLAGS=0x00800000// don't confuse the user with questions or excess info
DI_NOFILECOPYDI_FLAGS=0x01000000// No file Copy necessary
DI_FORCECOPYDI_FLAGS=0x02000000// Force files to be copied from install path
DI_PROPS_NOCHANGEUSAGEDI_FLAGS=0x20000000// No Enable/Disable in General Props
DI_NOSELECTICONSDI_FLAGS=0x40000000// No small icons in select device dialogs
DI_NOWRITE_IDSDI_FLAGS=0x80000000// Don't write HW & Compat IDs on install
)
// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values
typeDI_FLAGSEXuint32
const(
DI_FLAGSEX_CI_FAILEDDI_FLAGSEX=0x00000004// Failed to Load/Call class installer
DI_FLAGSEX_FINISHINSTALL_ACTIONDI_FLAGSEX=0x00000008// Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context.
DI_FLAGSEX_DIDINFOLISTDI_FLAGSEX=0x00000010// Did the Class Info List
DI_FLAGSEX_DIDCOMPATINFODI_FLAGSEX=0x00000020// Did the Compat Info List
DI_FLAGSEX_FILTERCLASSESDI_FLAGSEX=0x00000040
DI_FLAGSEX_SETFAILEDINSTALLDI_FLAGSEX=0x00000080
DI_FLAGSEX_DEVICECHANGEDI_FLAGSEX=0x00000100
DI_FLAGSEX_ALWAYSWRITEIDSDI_FLAGSEX=0x00000200
DI_FLAGSEX_PROPCHANGE_PENDINGDI_FLAGSEX=0x00000400// One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur.
DI_FLAGSEX_ALLOWEXCLUDEDDRVSDI_FLAGSEX=0x00000800
DI_FLAGSEX_NOUIONQUERYREMOVEDI_FLAGSEX=0x00001000
DI_FLAGSEX_USECLASSFORCOMPATDI_FLAGSEX=0x00002000// Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)
DI_FLAGSEX_NO_DRVREG_MODIFYDI_FLAGSEX=0x00008000// Don't run AddReg and DelReg for device's software (driver) key.
DI_FLAGSEX_IN_SYSTEM_SETUPDI_FLAGSEX=0x00010000// Installation is occurring during initial system setup.
DI_FLAGSEX_INET_DRIVERDI_FLAGSEX=0x00020000// Driver came from Windows Update
DI_FLAGSEX_APPENDDRIVERLISTDI_FLAGSEX=0x00040000// Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list.
DI_FLAGSEX_PREINSTALLBACKUPDI_FLAGSEX=0x00080000// not used
DI_FLAGSEX_BACKUPONREPLACEDI_FLAGSEX=0x00100000// not used
DI_FLAGSEX_DRIVERLIST_FROM_URLDI_FLAGSEX=0x00200000// build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website)
DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERSDI_FLAGSEX=0x00800000// Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later.
DI_FLAGSEX_POWERPAGE_ADDEDDI_FLAGSEX=0x01000000// class installer added their own power page
DI_FLAGSEX_FILTERSIMILARDRIVERSDI_FLAGSEX=0x02000000// only include similar drivers in class list
DI_FLAGSEX_INSTALLEDDRIVERDI_FLAGSEX=0x04000000// only add the installed driver to the class or compat driver list. Used in calls to SetupDiBuildDriverInfoList
DI_FLAGSEX_NO_CLASSLIST_NODE_MERGEDI_FLAGSEX=0x08000000// Don't remove identical driver nodes from the class list
DI_FLAGSEX_ALTPLATFORM_DRVSEARCHDI_FLAGSEX=0x10000000// Build driver list based on alternate platform information specified in associated file queue
DI_FLAGSEX_RESTART_DEVICE_ONLYDI_FLAGSEX=0x20000000// only restart the device drivers are being installed on as opposed to restarting all devices using those drivers.
DI_FLAGSEX_RECURSIVESEARCHDI_FLAGSEX=0x40000000// Tell SetupDiBuildDriverInfoList to do a recursive search
DI_FLAGSEX_SEARCH_PUBLISHED_INFSDI_FLAGSEX=0x80000000// Tell SetupDiBuildDriverInfoList to do a "published INF" search
)
// HSPFILEQ is type for setup file queue
typeHSPFILEQuintptr
type_SP_DEVINSTALL_PARAMSstruct{
Sizeuint32
FlagsDI_FLAGS
FlagsExDI_FLAGSEX
hwndParentuintptr
InstallMsgHandleruintptr
InstallMsgHandlerContextuintptr
FileQueueHSPFILEQ
_uintptr
_uint32
DriverPath[windows.MAX_PATH]uint16
}
// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)
// SP_CLASSINSTALL_HEADER is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure.