📄 setupapi.pas
字号:
TSPRegisterControlStatusA = SP_REGISTER_CONTROL_STATUSA;
TSPRegisterControlStatusW = SP_REGISTER_CONTROL_STATUSW;
{$IFDEF UNICODE}
TSPRegisterControlStatus = TSPRegisterControlStatusW;
PSPRegisterControlStatus = PSPRegisterControlStatusW;
{$ELSE}
TSPRegisterControlStatus = TSPRegisterControlStatusA;
PSPRegisterControlStatus = PSPRegisterControlStatusA;
{$ENDIF UNICODE}
{$ENDIF WINXP_UP}
//
// valid values for SP_REGISTER_CONTROL_STATUS.FailureCode field
//
const
SPREG_SUCCESS = $00000000;
{$EXTERNALSYM SPREG_SUCCESS}
SPREG_LOADLIBRARY = $00000001;
{$EXTERNALSYM SPREG_LOADLIBRARY}
SPREG_GETPROCADDR = $00000002;
{$EXTERNALSYM SPREG_GETPROCADDR}
SPREG_REGSVR = $00000003;
{$EXTERNALSYM SPREG_REGSVR}
SPREG_DLLINSTALL = $00000004;
{$EXTERNALSYM SPREG_DLLINSTALL}
SPREG_TIMEOUT = $00000005;
{$EXTERNALSYM SPREG_TIMEOUT}
SPREG_UNKNOWN = $FFFFFFFF;
{$EXTERNALSYM SPREG_UNKNOWN}
//
// Define type for setup file queue
//
type
HSPFILEQ = Pointer;
{$EXTERNALSYM HSPFILEQ}
//
// Structure used with SetupQueueCopyIndirect
//
PSPFileCopyParamsA = ^TSPFileCopyParamsA;
PSPFileCopyParamsW = ^TSPFileCopyParamsW;
SP_FILE_COPY_PARAMS_A = packed record
cbSize: DWORD;
QueueHandle: HSPFILEQ;
SourceRootPath: PAnsiChar;
SourcePath: PAnsiChar;
SourceFilename: PAnsiChar;
SourceDescription: PAnsiChar;
SourceTagfile: PAnsiChar;
TargetDirectory: PAnsiChar;
TargetFilename: PAnsiChar;
CopyStyle: DWORD;
LayoutInf: HINF;
SecurityDescriptor: PAnsiChar;
end;
{$EXTERNALSYM SP_FILE_COPY_PARAMS_A}
SP_FILE_COPY_PARAMS_W = packed record
cbSize: DWORD;
QueueHandle: HSPFILEQ;
SourceRootPath: PWideChar;
SourcePath: PWideChar;
SourceFilename: PWideChar;
SourceDescription: PWideChar;
SourceTagfile: PWideChar;
TargetDirectory: PWideChar;
TargetFilename: PWideChar;
CopyStyle: DWORD;
LayoutInf: HINF;
SecurityDescriptor: PWideChar;
end;
{$EXTERNALSYM SP_FILE_COPY_PARAMS_W}
TSPFileCopyParamsA = SP_FILE_COPY_PARAMS_A;
TSPFileCopyParamsW = SP_FILE_COPY_PARAMS_W;
{$IFDEF UNICODE}
TSPFileCopyParams = TSPFileCopyParamsW;
PSPFileCopyParams = PSPFileCopyParamsW;
{$ELSE}
TSPFileCopyParams = TSPFileCopyParamsA;
PSPFileCopyParams = PSPFileCopyParamsA;
{$ENDIF UNICODE}
//
// Define type for setup disk space list
//
HDSKSPC = Pointer;
{$EXTERNALSYM HDSKSPC}
//
// Define type for reference to device information set
//
HDEVINFO = Pointer;
{$EXTERNALSYM HDEVINFO}
//
// Device information structure (references a device instance
// that is a member of a device information set)
//
PSPDevInfoData = ^TSPDevInfoData;
SP_DEVINFO_DATA = packed record
cbSize: DWORD;
ClassGuid: TGUID;
DevInst: DWORD; // DEVINST handle
Reserved: ULONG_PTR;
end;
{$EXTERNALSYM SP_DEVINFO_DATA}
TSPDevInfoData = SP_DEVINFO_DATA;
//
// Device interface information structure (references a device
// interface that is associated with the device information
// element that owns it).
//
PSPDeviceInterfaceData = ^TSPDeviceInterfaceData;
SP_DEVICE_INTERFACE_DATA = packed record
cbSize: DWORD;
InterfaceClassGuid: TGUID;
Flags: DWORD;
Reserved: ULONG_PTR;
end;
{$EXTERNALSYM SP_DEVICE_INTERFACE_DATA}
TSPDeviceInterfaceData = SP_DEVICE_INTERFACE_DATA;
//
// Flags for SP_DEVICE_INTERFACE_DATA.Flags field.
//
const
SPINT_ACTIVE = $00000001;
{$EXTERNALSYM SPINT_ACTIVE}
SPINT_DEFAULT = $00000002;
{$EXTERNALSYM SPINT_DEFAULT}
SPINT_REMOVED = $00000004;
{$EXTERNALSYM SPINT_REMOVED}
//
// Backward compatibility--do not use.
//
type
TSPInterfaceDeviceData = TSPDeviceInterfaceData;
PSPInterfaceDeviceData = PSPDeviceInterfaceData;
const
SPID_ACTIVE = SPINT_ACTIVE;
{$EXTERNALSYM SPID_ACTIVE}
SPID_DEFAULT = SPINT_DEFAULT;
{$EXTERNALSYM SPID_DEFAULT}
SPID_REMOVED = SPINT_REMOVED;
{$EXTERNALSYM SPID_REMOVED}
type
PSPDeviceInterfaceDetailDataA = ^TSPDeviceInterfaceDetailDataA;
PSPDeviceInterfaceDetailDataW = ^TSPDeviceInterfaceDetailDataW;
SP_DEVICE_INTERFACE_DETAIL_DATA_A = packed record
cbSize: DWORD;
DevicePath: array [0..ANYSIZE_ARRAY - 1] of AnsiChar;
end;
{$EXTERNALSYM SP_DEVICE_INTERFACE_DETAIL_DATA_A}
SP_DEVICE_INTERFACE_DETAIL_DATA_W = packed record
cbSize: DWORD;
DevicePath: array [0..ANYSIZE_ARRAY - 1] of WideChar;
end;
{$EXTERNALSYM SP_DEVICE_INTERFACE_DETAIL_DATA_W}
TSPDeviceInterfaceDetailDataA = SP_DEVICE_INTERFACE_DETAIL_DATA_A;
TSPDeviceInterfaceDetailDataW = SP_DEVICE_INTERFACE_DETAIL_DATA_W;
{$IFDEF UNICODE}
TSPDeviceInterfaceDetailData = TSPDeviceInterfaceDetailDataW;
PSPDeviceInterfaceDetailData = PSPDeviceInterfaceDetailDataW;
{$ELSE}
TSPDeviceInterfaceDetailData = TSPDeviceInterfaceDetailDataA;
PSPDeviceInterfaceDetailData = PSPDeviceInterfaceDetailDataA;
{$ENDIF UNICODE}
//
// Backward compatibility--do not use.
//
TSPInterfaceDeviceDetailDataA = TSPDeviceInterfaceDetailDataA;
TSPInterfaceDeviceDetailDataW = TSPDeviceInterfaceDetailDataW;
PSPInterfaceDeviceDetailDataA = PSPDeviceInterfaceDetailDataA;
PSPInterfaceDeviceDetailDataW = PSPDeviceInterfaceDetailDataW;
{$IFDEF UNICODE}
TSPInterfaceDeviceDetailData = TSPInterfaceDeviceDetailDataW;
PSPInterfaceDeviceDetailData = PSPInterfaceDeviceDetailDataW;
{$ELSE}
TSPInterfaceDeviceDetailData = TSPInterfaceDeviceDetailDataA;
PSPInterfaceDeviceDetailData = PSPInterfaceDeviceDetailDataA;
{$ENDIF UNICODE}
//
// Structure for detailed information on a device information set (used for
// SetupDiGetDeviceInfoListDetail which supercedes the functionality of
// SetupDiGetDeviceInfoListClass).
//
PSPDevInfoListDetailDataA = ^TSPDevInfoListDetailDataA;
PSPDevInfoListDetailDataW = ^TSPDevInfoListDetailDataW;
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}
TSPDevInfoListDetailDataA = SP_DEVINFO_LIST_DETAIL_DATA_A;
TSPDevInfoListDetailDataW = SP_DEVINFO_LIST_DETAIL_DATA_W;
{$IFDEF UNICODE}
TSPDevInfoListDetailData = TSPDevInfoListDetailDataW;
PSPDevInfoListDetailData = PSPDevInfoListDetailDataW;
{$ELSE}
TSPDevInfoListDetailData = TSPDevInfoListDetailDataA;
PSPDevInfoListDetailData = PSPDevInfoListDetailDataA;
{$ENDIF UNICODE}
//
// 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}
DIF_ADDREMOTEPROPERTYPAGE_ADVANCED = $00000028;
{$EXTERNALSYM DIF_ADDREMOTEPROPERTYPAGE_ADVANCED}
DIF_UPDATEDRIVER_UI = $00000029;
{$EXTERNALSYM DIF_UPDATEDRIVER_UI}
DIF_RESERVED2 = $00000030;
{$EXTERNALSYM DIF_RESERVED2}
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;
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}
TSPDevInstallParamsA = SP_DEVINSTALL_PARAMS_A;
TSPDevInstallParamsW = SP_DEVINSTALL_PARAMS_W;
{$IFDEF UNICODE}
TSPDevInstallParams = TSPDevInstallParamsW;
PSPDevInstallParams = PSPDevInstallParamsW;
{$ELSE}
TSPDevInstallParams = TSPDevInstallParamsA;
PSPDevInstallParams = PSPDevInstallParamsA;
{$ENDIF UNICODE}
//
// SP_DEVINSTALL_PARAMS.Flags values
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -