?? setupapi.pas
字號:
TSPInterfaceDeviceDetailDataA = TSPDeviceInterfaceDetailDataA;
TSPInterfaceDeviceDetailDataW = TSPDeviceInterfaceDetailDataW;
TSPInterfaceDeviceDetailData = TSPInterfaceDeviceDetailDataA;
PSPInterfaceDeviceDetailDataA = PSPDeviceInterfaceDetailDataA;
PSPInterfaceDeviceDetailDataW = PSPDeviceInterfaceDetailDataW;
PSPInterfaceDeviceDetailData = PSPInterfaceDeviceDetailDataA;
//
// Structure for detailed information on a device information set (used for
// SetupDiGetDeviceInfoListDetail which supercedes the functionality of
// SetupDiGetDeviceInfoListClass).
//
PSPDevInfoListDetailDataA = ^TSPDevInfoListDetailDataA;
PSPDevInfoListDetailDataW = ^TSPDevInfoListDetailDataW;
PSPDevInfoListDetailData = PSPDevInfoListDetailDataA;
_SP_DEVINFO_LIST_DETAIL_DATA_A = packed record
cbSize: DWORD;
ClassGuid: TGUID;
RemoteMachineHandle: THandle;
RemoteMachineName: array [0..SP_MAX_MACHINENAME_LENGTH - 1] of AnsiChar;
end;
{$EXTERNALSYM _SP_DEVINFO_LIST_DETAIL_DATA_A}
_SP_DEVINFO_LIST_DETAIL_DATA_W = packed record
cbSize: DWORD;
ClassGuid: TGUID;
RemoteMachineHandle: THandle;
RemoteMachineName: array [0..SP_MAX_MACHINENAME_LENGTH - 1] of WideChar;
end;
{$EXTERNALSYM _SP_DEVINFO_LIST_DETAIL_DATA_W}
_SP_DEVINFO_LIST_DETAIL_DATA_ = _SP_DEVINFO_LIST_DETAIL_DATA_A;
TSPDevInfoListDetailDataA = _SP_DEVINFO_LIST_DETAIL_DATA_A;
TSPDevInfoListDetailDataW = _SP_DEVINFO_LIST_DETAIL_DATA_W;
TSPDevInfoListDetailData = TSPDevInfoListDetailDataA;
//
// Class installer function codes
//
const
DIF_SELECTDEVICE = $00000001;
{$EXTERNALSYM DIF_SELECTDEVICE}
DIF_INSTALLDEVICE = $00000002;
{$EXTERNALSYM DIF_INSTALLDEVICE}
DIF_ASSIGNRESOURCES = $00000003;
{$EXTERNALSYM DIF_ASSIGNRESOURCES}
DIF_PROPERTIES = $00000004;
{$EXTERNALSYM DIF_PROPERTIES}
DIF_REMOVE = $00000005;
{$EXTERNALSYM DIF_REMOVE}
DIF_FIRSTTIMESETUP = $00000006;
{$EXTERNALSYM DIF_FIRSTTIMESETUP}
DIF_FOUNDDEVICE = $00000007;
{$EXTERNALSYM DIF_FOUNDDEVICE}
DIF_SELECTCLASSDRIVERS = $00000008;
{$EXTERNALSYM DIF_SELECTCLASSDRIVERS}
DIF_VALIDATECLASSDRIVERS = $00000009;
{$EXTERNALSYM DIF_VALIDATECLASSDRIVERS}
DIF_INSTALLCLASSDRIVERS = $0000000A;
{$EXTERNALSYM DIF_INSTALLCLASSDRIVERS}
DIF_CALCDISKSPACE = $0000000B;
{$EXTERNALSYM DIF_CALCDISKSPACE}
DIF_DESTROYPRIVATEDATA = $0000000C;
{$EXTERNALSYM DIF_DESTROYPRIVATEDATA}
DIF_VALIDATEDRIVER = $0000000D;
{$EXTERNALSYM DIF_VALIDATEDRIVER}
DIF_MOVEDEVICE = $0000000E;
{$EXTERNALSYM DIF_MOVEDEVICE}
DIF_DETECT = $0000000F;
{$EXTERNALSYM DIF_DETECT}
DIF_INSTALLWIZARD = $00000010;
{$EXTERNALSYM DIF_INSTALLWIZARD}
DIF_DESTROYWIZARDDATA = $00000011;
{$EXTERNALSYM DIF_DESTROYWIZARDDATA}
DIF_PROPERTYCHANGE = $00000012;
{$EXTERNALSYM DIF_PROPERTYCHANGE}
DIF_ENABLECLASS = $00000013;
{$EXTERNALSYM DIF_ENABLECLASS}
DIF_DETECTVERIFY = $00000014;
{$EXTERNALSYM DIF_DETECTVERIFY}
DIF_INSTALLDEVICEFILES = $00000015;
{$EXTERNALSYM DIF_INSTALLDEVICEFILES}
DIF_UNREMOVE = $00000016;
{$EXTERNALSYM DIF_UNREMOVE}
DIF_SELECTBESTCOMPATDRV = $00000017;
{$EXTERNALSYM DIF_SELECTBESTCOMPATDRV}
DIF_ALLOW_INSTALL = $00000018;
{$EXTERNALSYM DIF_ALLOW_INSTALL}
DIF_REGISTERDEVICE = $00000019;
{$EXTERNALSYM DIF_REGISTERDEVICE}
DIF_NEWDEVICEWIZARD_PRESELECT = $0000001A;
{$EXTERNALSYM DIF_NEWDEVICEWIZARD_PRESELECT}
DIF_NEWDEVICEWIZARD_SELECT = $0000001B;
{$EXTERNALSYM DIF_NEWDEVICEWIZARD_SELECT}
DIF_NEWDEVICEWIZARD_PREANALYZE = $0000001C;
{$EXTERNALSYM DIF_NEWDEVICEWIZARD_PREANALYZE}
DIF_NEWDEVICEWIZARD_POSTANALYZE = $0000001D;
{$EXTERNALSYM DIF_NEWDEVICEWIZARD_POSTANALYZE}
DIF_NEWDEVICEWIZARD_FINISHINSTALL = $0000001E;
{$EXTERNALSYM DIF_NEWDEVICEWIZARD_FINISHINSTALL}
DIF_UNUSED1 = $0000001F;
{$EXTERNALSYM DIF_UNUSED1}
DIF_INSTALLINTERFACES = $00000020;
{$EXTERNALSYM DIF_INSTALLINTERFACES}
DIF_DETECTCANCEL = $00000021;
{$EXTERNALSYM DIF_DETECTCANCEL}
DIF_REGISTER_COINSTALLERS = $00000022;
{$EXTERNALSYM DIF_REGISTER_COINSTALLERS}
DIF_ADDPROPERTYPAGE_ADVANCED = $00000023;
{$EXTERNALSYM DIF_ADDPROPERTYPAGE_ADVANCED}
DIF_ADDPROPERTYPAGE_BASIC = $00000024;
{$EXTERNALSYM DIF_ADDPROPERTYPAGE_BASIC}
DIF_RESERVED1 = $00000025;
{$EXTERNALSYM DIF_RESERVED1}
DIF_TROUBLESHOOTER = $00000026;
{$EXTERNALSYM DIF_TROUBLESHOOTER}
DIF_POWERMESSAGEWAKE = $00000027;
{$EXTERNALSYM DIF_POWERMESSAGEWAKE}
type
DI_FUNCTION = UINT; // Function type for device installer
{$EXTERNALSYM DI_FUNCTION}
//
// Device installation parameters structure (associated with a
// particular device information element, or globally with a device
// information set)
//
PSPDevInstallParamsA = ^TSPDevInstallParamsA;
PSPDevInstallParamsW = ^TSPDevInstallParamsW;
PSPDevInstallParams = PSPDevInstallParamsA;
_SP_DEVINSTALL_PARAMS_A = packed record
cbSize: DWORD;
Flags: DWORD;
FlagsEx: DWORD;
hwndParent: HWND;
InstallMsgHandler: TSPFileCallback;
InstallMsgHandlerContext: Pointer;
FileQueue: HSPFILEQ;
ClassInstallReserved: ULONG_PTR;
Reserved: DWORD;
DriverPath: array [0..MAX_PATH - 1] of AnsiChar;
end;
{$EXTERNALSYM _SP_DEVINSTALL_PARAMS_A}
_SP_DEVINSTALL_PARAMS_W = packed record
cbSize: DWORD;
Flags: DWORD;
FlagsEx: DWORD;
hwndParent: HWND;
InstallMsgHandler: TSPFileCallback;
InstallMsgHandlerContext: Pointer;
FileQueue: HSPFILEQ;
ClassInstallReserved: ULONG_PTR;
Reserved: DWORD;
DriverPath: array [0..MAX_PATH - 1] of WideChar;
end;
{$EXTERNALSYM _SP_DEVINSTALL_PARAMS_W}
_SP_DEVINSTALL_PARAMS_ = _SP_DEVINSTALL_PARAMS_A;
TSPDevInstallParamsA = _SP_DEVINSTALL_PARAMS_A;
TSPDevInstallParamsW = _SP_DEVINSTALL_PARAMS_W;
TSPDevInstallParams = TSPDevInstallParamsA;
//
// SP_DEVINSTALL_PARAMS.Flags values
//
// Flags for choosing a device
//
const
DI_SHOWOEM = $00000001; // support Other... button
{$EXTERNALSYM DI_SHOWOEM}
DI_SHOWCOMPAT = $00000002; // show compatibility list
{$EXTERNALSYM DI_SHOWCOMPAT}
DI_SHOWCLASS = $00000004; // show class list
{$EXTERNALSYM DI_SHOWCLASS}
DI_SHOWALL = $00000007; // both class & compat list shown
{$EXTERNALSYM DI_SHOWALL}
DI_NOVCP = $00000008; // don't create a new copy queue--use
{$EXTERNALSYM DI_NOVCP} // caller-supplied FileQueue
DI_DIDCOMPAT = $00000010; // Searched for compatible devices
{$EXTERNALSYM DI_DIDCOMPAT}
DI_DIDCLASS = $00000020; // Searched for class devices
{$EXTERNALSYM DI_DIDCLASS}
DI_AUTOASSIGNRES = $00000040; // No UI for resources if possible
{$EXTERNALSYM DI_AUTOASSIGNRES}
// flags returned by DiInstallDevice to indicate need to reboot/restart
DI_NEEDRESTART = $00000080; // Reboot required to take effect
{$EXTERNALSYM DI_NEEDRESTART}
DI_NEEDREBOOT = $00000100; // ""
{$EXTERNALSYM DI_NEEDREBOOT}
// flags for device installation
DI_NOBROWSE = $00000200; // no Browse... in InsertDisk
{$EXTERNALSYM DI_NOBROWSE}
// Flags set by DiBuildDriverInfoList
DI_MULTMFGS = $00000400; // Set if multiple manufacturers in
{$EXTERNALSYM DI_MULTMFGS} // class driver list
// Flag indicates that device is disabled
DI_DISABLED = $00000800; // Set if device disabled
{$EXTERNALSYM DI_DISABLED}
// Flags for Device/Class Properties
DI_GENERALPAGE_ADDED = $00001000;
{$EXTERNALSYM DI_GENERALPAGE_ADDED}
DI_RESOURCEPAGE_ADDED = $00002000;
{$EXTERNALSYM DI_RESOURCEPAGE_ADDED}
// Flag to indicate the setting properties for this Device (or class) caused a change
// so the Dev Mgr UI probably needs to be updatd.
DI_PROPERTIES_CHANGE = $00004000;
{$EXTERNALSYM DI_PROPERTIES_CHANGE}
// Flag to indicate that the sorting from the INF file should be used.
DI_INF_IS_SORTED = $00008000;
{$EXTERNALSYM DI_INF_IS_SORTED}
// Flag to indicate that only the the INF specified by SP_DEVINSTALL_PARAMS.DriverPath
// should be searched.
DI_ENUMSINGLEINF = $00010000;
{$EXTERNALSYM DI_ENUMSINGLEINF}
// Flag that prevents ConfigMgr from removing/re-enumerating devices during device
// registration, installation, and deletion.
DI_DONOTCALLCONFIGMG = $00020000;
{$EXTERNALSYM DI_DONOTCALLCONFIGMG}
// The following flag can be used to install a device disabled
DI_INSTALLDISABLED = $00040000;
{$EXTERNALSYM DI_INSTALLDISABLED}
// 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_CLASS = $00080000;
{$EXTERNALSYM DI_COMPAT_FROM_CLASS}
// This flag is set if the Class Install params should be used.
DI_CLASSINSTALLPARAMS = $00100000;
{$EXTERNALSYM DI_CLASSINSTALLPARAMS}
// 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_DEFAULTACTION = $00200000;
{$EXTERNALSYM DI_NODI_DEFAULTACTION}
// The setupx flag, DI_NOSYNCPROCESSING (0x00400000L) is not support in the Setup APIs.
// flags for device installation
DI_QUIETINSTALL = $00800000; // don't confuse the user with
{$EXTERNALSYM DI_QUIETINSTALL} // questions or excess info
DI_NOFILECOPY = $01000000; // No file Copy necessary
{$EXTERNALSYM DI_NOFILECOPY}
DI_FORCECOPY = $02000000; // Force files to be copied from install path
{$EXTERNALSYM DI_FORCECOPY}
DI_DRIVERPAGE_ADDED = $04000000; // Prop provider added Driver page.
{$EXTERNALSYM DI_DRIVERPAGE_ADDED}
DI_USECI_SELECTSTRINGS = $08000000; // Use Class Installer Provided strings in the Select Device Dlg
{$EXTERNALSYM DI_USECI_SELECTSTRINGS}
DI_OVERRIDE_INFFLAGS = $10000000; // Override INF flags
{$EXTERNALSYM DI_OVERRIDE_INFFLAGS}
DI_PROPS_NOCHANGEUSAGE = $20000000; // No Enable/Disable in General Props
{$EXTERNALSYM DI_PROPS_NOCHANGEUSAGE}
DI_NOSELECTICONS = $40000000; // No small icons in select device dialogs
{$EXTERNALSYM DI_NOSELECTICONS}
DI_NOWRITE_IDS = DWORD($80000000); // Don't write HW & Compat IDs on install
{$EXTERNALSYM DI_NOWRITE_IDS}
//
// SP_DEVINSTALL_PARAMS.FlagsEx values
//
DI_FLAGSEX_USEOLDINFSEARCH = $00000001; // Inf Search functions should not use Index Search
{$EXTERNALSYM DI_FLAGSEX_USEOLDINFSEARCH}
DI_FLAGSEX_AUTOSELECTRANK0 = $00000002; // SetupDiSelectDevice doesn't prompt user if rank 0 match
{$EXTERNALSYM DI_FLAGSEX_AUTOSELECTRANK0}
DI_FLAGSEX_CI_FAILED = $00000004; // Failed to Load/Call class installer
{$EXTERNALSYM DI_FLAGSEX_CI_FAILED}
DI_FLAGSEX_DIDINFOLIST = $00000010; // Did the Class Info List
{$EXTERNALSYM DI_FLAGSEX_DIDINFOLIST}
DI_FLAGSEX_DIDCOMPATINFO = $00000020; // Did the Compat Info List
{$EXTERNALSYM DI_FLAGSEX_DIDCOMPATINFO}
DI_FLAGSEX_FILTERCLASSES = $00000040;
{$EXTERNALSYM DI_FLAGSEX_FILTERCLASSES}
DI_FLAGSEX_SETFAILEDINSTALL = $00000080;
{$EXTERNALSYM DI_FLAGSEX_SETFAILEDINSTALL}
DI_FLAGSEX_DEVICECHANGE = $00000100;
{$EXTERNALSYM DI_FLAGSEX_DEVICECHANGE}
DI_FLAGSEX_ALWAYSWRITEIDS = $00000200;
{$EXTERNALSYM DI_FLAGSEX_ALWAYSWRITEIDS}
DI_FLAGSEX_PROPCHANGE_PENDING = $00000400; // One or more device property sheets have had changes made
{$EXTERNALSYM DI_FLAGSEX_PROPCHANGE_PENDING} // to them, and need to have a DIF_PROPERTYCHANGE occur.
DI_FLAGSEX_ALLOWEXCLUDEDDRVS = $00000800;
{$EXTERNALSYM DI_FLAGSEX_ALLOWEXCLUDEDDRVS}
DI_FLAGSEX_NOUIONQUERYREMOVE = $00001000;
{$EXTERNALSYM DI_FLAGSEX_NOUIONQUERYREMOVE}
DI_FLAGSEX_USECLASSFORCOMPAT = $00002000; // Use the device's class when building compat drv list.
{$EXTERNALSYM DI_FLAGSEX_USECLASSFORCOMPAT} // (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)
DI_FLAGSEX_OLDINF_IN_CLASSLIST = $00004000; // Search legacy INFs when building class driver list.
{$EXTERNALSYM DI_FLAGSEX_OLDINF_IN_CLASSLIST}
DI_FLAGSEX_NO_DRVREG_MODIFY = $00008000; // Don't run AddReg and DelReg for device's software (driver) key.
{$EXTERNALSYM DI_FLAGSEX_NO_DRVREG_MODIFY}
DI_FLAGSEX_IN_SYSTEM_SETUP = $00010000; // Installation is occurring during initial system setup.
{$EXTERNALSYM DI_FLAGSEX_IN_SYSTEM_SETUP}
DI_FLAGSEX_INET_DRIVER = $00020000; // Driver came from Windows Update
{$EXTERNALSYM DI_FLAGSEX_INET_DRIVER}
DI_FLAGSEX_APPENDDRIVERLIST = $00040000; // Cause SetupDiBuildDriverInfoList to append
{$EXTERNALSYM DI_FLAGSEX_APPENDDRIVERLIST} // a new driver list to an existing list.
DI_FLAGSEX_PREINSTALLBACKUP = $00080000; // backup all files required by old inf before install
{$EXTERNALSYM DI_FLAGSEX_PREINSTALLBACKUP}
DI_FLAGSEX_BACKUPONREPLACE = $00100000; // backup files required by old inf as they are replaced
{$EXTERNALSYM DI_FLAGSEX_BACKUPONREPLACE}
DI_FLAGSEX_DRIVERLIST_FROM_URL = $00200000; // build driver list from INF(s) retrieved from URL specified
{$EXTERNALSYM DI_FLAGSEX_DRIVERLIST_FROM_URL}
// in SP_DEVINSTALL_PARAMS.DriverPath (empty string means
// Windows Update website)
DI_FLAGSEX_RESERVED1 = $00400000;
{$EXTERNALSYM DI_FLAGSEX_RESERVED1}
DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = $00800000; // Don't include old Internet drivers when building
{$EXTERNALSYM DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS}
// a driver list.
DI_FLAGSEX_POWERPAGE_ADDED = $01000000; // class installer added their own power page
{$EXTERNALSYM DI_FLAGSEX_POWERPAGE_ADDED}
//
// Class installation parameters header. This must be the first field of any
// class install parameter structure. The InstallFunction field must be set to
// the function code corresponding to the structure, and the cbSize field must
// be set to the size of the header structure. E.g.,
//
// SP_ENABLECLASS_PARAMS EnableClassParams;
//
// EnableClassParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
// EnableClassParams.ClassInstallHeader.InstallFunction = DIF_ENABLECLASS;
//
type
PSPClassInstallHeader = ^TSPClassInstallHeader;
_SP_CLASSINSTALL_HEADER = packed record
cbSize: DWORD;
InstallFunction: DI_FUNCTION;
end;
{$EXTERNALSYM _SP_CLASSINSTALL_HEADER}
TSPClassInstallHeader = _SP_CLASSINSTALL_HEADER;
//
// Structure corresponding to a DIF_ENABLECLASS install function.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -