📄 common.pas
字号:
unit Common;
interface
uses
Windows;
type
HDEVINFO = Pointer;
ULONG_PTR = DWORD;
DEVINST = DWORD;
DI_FUNCTION = UINT;
_SP_DEVINFO_DATA = packed record
cbSize: DWORD;
ClassGuid: TGUID;
DevInst: DWORD;
Reserved: ULONG_PTR;
end;
SP_DEVINFO_DATA = _SP_DEVINFO_DATA;
PSP_DEVINFO_DATA = ^_SP_DEVINFO_DATA;
_SP_CLASSINSTALL_HEADER = packed record
cbSize: DWORD;
InstallFunction: DI_FUNCTION;
end;
SP_CLASSINSTALL_HEADER = _SP_CLASSINSTALL_HEADER;
PSP_CLASSINSTALL_HEADER = ^_SP_CLASSINSTALL_HEADER;
_SP_PROPCHANGE_PARAMS = packed record
ClassInstallHeader: SP_CLASSINSTALL_HEADER;
StateChange: DWORD;
Scope: DWORD;
HwProfile: DWORD;
end;
SP_PROPCHANGE_PARAMS = _SP_PROPCHANGE_PARAMS;
PSP_PROPCHANGE_PARAMS = ^SP_PROPCHANGE_PARAMS;
//
// Flags controlling what is included in the device information set built
// by SetupDiGetClassDevs
//
const
DIGCF_DEFAULT = $00000001; // only valid with DIGCF_DEVICEINTERFACE
{$EXTERNALSYM DIGCF_DEFAULT}
DIGCF_PRESENT = $00000002;
{$EXTERNALSYM DIGCF_PRESENT}
DIGCF_ALLCLASSES = $00000004;
{$EXTERNALSYM DIGCF_ALLCLASSES}
DIGCF_PROFILE = $00000008;
{$EXTERNALSYM DIGCF_PROFILE}
DIGCF_DEVICEINTERFACE = $00000010;
{$EXTERNALSYM DIGCF_DEVICEINTERFACE}
function SetupDiGetClassDevs(const ClassGuid: PGUID; Enumerator: PAnsiChar;
hwndParent: THandle; Flags: DWORD): HDEVINFO;
stdcall external 'setupapi.dll' name 'SetupDiGetClassDevsA';
function SetupDiDestroyDeviceInfoList(DeviceInfoSet: HDEVINFO): BOOL;
stdcall external 'setupapi.dll' name 'SetupDiDestroyDeviceInfoList';
function SetupDiEnumDeviceInfo(DeviceInfoSet: HDEVINFO; MemberIndex: DWORD;
DeviceInfoData: PSP_DEVINFO_DATA): BOOL;
stdcall external 'setupapi.dll' name 'SetupDiEnumDeviceInfo';
function SetupDiOpenClassRegKey(const ClassGuid: PGUID;
samDesired: REGSAM): HKEY;
stdcall external 'setupapi.dll' name 'SetupDiOpenClassRegKey';
//
// Device registry property codes
// (Codes marked as read-only (R) may only be used for
// SetupDiGetDeviceRegistryProperty)
//
// These values should cover the same set of registry properties
// as defined by the CM_DRP codes in cfgmgr32.h.
//
const
SPDRP_DEVICEDESC = $00000000; // DeviceDesc (R/W)
{$EXTERNALSYM SPDRP_DEVICEDESC}
SPDRP_HARDWAREID = $00000001; // HardwareID (R/W)
{$EXTERNALSYM SPDRP_HARDWAREID}
SPDRP_COMPATIBLEIDS = $00000002; // CompatibleIDs (R/W)
{$EXTERNALSYM SPDRP_COMPATIBLEIDS}
SPDRP_UNUSED0 = $00000003; // unused
{$EXTERNALSYM SPDRP_UNUSED0}
SPDRP_SERVICE = $00000004; // Service (R/W)
{$EXTERNALSYM SPDRP_SERVICE}
SPDRP_UNUSED1 = $00000005; // unused
{$EXTERNALSYM SPDRP_UNUSED1}
SPDRP_UNUSED2 = $00000006; // unused
{$EXTERNALSYM SPDRP_UNUSED2}
SPDRP_CLASS = $00000007; // Class (R--tied to ClassGUID)
{$EXTERNALSYM SPDRP_CLASS}
SPDRP_CLASSGUID = $00000008; // ClassGUID (R/W)
{$EXTERNALSYM SPDRP_CLASSGUID}
SPDRP_DRIVER = $00000009; // Driver (R/W)
{$EXTERNALSYM SPDRP_DRIVER}
SPDRP_CONFIGFLAGS = $0000000A; // ConfigFlags (R/W)
{$EXTERNALSYM SPDRP_CONFIGFLAGS}
SPDRP_MFG = $0000000B; // Mfg (R/W)
{$EXTERNALSYM SPDRP_MFG}
SPDRP_FRIENDLYNAME = $0000000C; // FriendlyName (R/W)
{$EXTERNALSYM SPDRP_FRIENDLYNAME}
SPDRP_LOCATION_INFORMATION = $0000000D; // LocationInformation (R/W)
{$EXTERNALSYM SPDRP_LOCATION_INFORMATION}
SPDRP_PHYSICAL_DEVICE_OBJECT_NAME = $0000000E; // PhysicalDeviceObjectName (R)
{$EXTERNALSYM SPDRP_PHYSICAL_DEVICE_OBJECT_NAME}
SPDRP_CAPABILITIES = $0000000F; // Capabilities (R)
{$EXTERNALSYM SPDRP_CAPABILITIES}
SPDRP_UI_NUMBER = $00000010; // UiNumber (R)
{$EXTERNALSYM SPDRP_UI_NUMBER}
SPDRP_UPPERFILTERS = $00000011; // UpperFilters (R/W)
{$EXTERNALSYM SPDRP_UPPERFILTERS}
SPDRP_LOWERFILTERS = $00000012; // LowerFilters (R/W)
{$EXTERNALSYM SPDRP_LOWERFILTERS}
SPDRP_BUSTYPEGUID = $00000013; // BusTypeGUID (R)
{$EXTERNALSYM SPDRP_BUSTYPEGUID}
SPDRP_LEGACYBUSTYPE = $00000014; // LegacyBusType (R)
{$EXTERNALSYM SPDRP_LEGACYBUSTYPE}
SPDRP_BUSNUMBER = $00000015; // BusNumber (R)
{$EXTERNALSYM SPDRP_BUSNUMBER}
SPDRP_ENUMERATOR_NAME = $00000016; // Enumerator Name (R)
{$EXTERNALSYM SPDRP_ENUMERATOR_NAME}
SPDRP_SECURITY = $00000017; // Security (R/W, binary form)
{$EXTERNALSYM SPDRP_SECURITY}
SPDRP_SECURITY_SDS = $00000018; // Security (W, SDS form)
{$EXTERNALSYM SPDRP_SECURITY_SDS}
SPDRP_DEVTYPE = $00000019; // Device Type (R/W)
{$EXTERNALSYM SPDRP_DEVTYPE}
SPDRP_EXCLUSIVE = $0000001A; // Device is exclusive-access (R/W)
{$EXTERNALSYM SPDRP_EXCLUSIVE}
SPDRP_CHARACTERISTICS = $0000001B; // Device Characteristics (R/W)
{$EXTERNALSYM SPDRP_CHARACTERISTICS}
SPDRP_ADDRESS = $0000001C; // Device Address (R)
{$EXTERNALSYM SPDRP_ADDRESS}
SPDRP_UI_NUMBER_DESC_FORMAT = $0000001E; // UiNumberDescFormat (R/W)
{$EXTERNALSYM SPDRP_UI_NUMBER_DESC_FORMAT}
SPDRP_MAXIMUM_PROPERTY = $0000001F; // Upper bound on ordinals
{$EXTERNALSYM SPDRP_MAXIMUM_PROPERTY}
function SetupDiGetDeviceRegistryProperty(DeviceInfoSet: HDEVINFO;
DeviceInfoData: PSP_DEVINFO_DATA; AProperty: DWORD;
PropertyRegDataType: PDWORD; PropertyBuffer: PAnsiChar;
PropertyBufferSize: DWORD; RequiredSize: PDWORD): BOOL;
stdcall external 'setupapi.dll' name 'SetupDiGetDeviceRegistryPropertyA';
//
// 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}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -