setupapi.pas

来自「通过Delphi编程」· PAS 代码 · 共 95 行

PAS
95
字号
unit SetupAPI;

interface

uses
  Windows;

const
  DIGCF_DEFAULT           = $00000001;
  DIGCF_PRESENT           = $00000002;
  DIGCF_ALLCLASSES        = $00000004;
  DIGCF_PROFILE           = $00000008;
  DIGCF_DEVICEINTERFACE   = $00000010;

  SPDRP_DEVICEDESC        = $00000000;
  SPDRP_FRIENDLYNAME      = $0000000C;

  LINE_LEN                = 256;

  SPDIT_NODRIVER          = $00000000;
  SPDIT_CLASSDRIVER       = $00000001;
  SPDIT_COMPATDRIVER      = $00000002;

type
  PSP_DEVINFO_DATA = ^SP_DEVINFO_DATA;
  SP_DEVINFO_DATA = record
    cbSize: DWORD;
    ClassGuid: TGUID;
    DevInst: DWORD;
    Reserved: LongInt;
  end;

  PSP_CLASSIMAGELIST_DATA = ^SP_CLASSIMAGELIST_DATA;
  SP_CLASSIMAGELIST_DATA = record
    cbSize: DWORD;
    ImageList: HWND;
    Reserved: LongInt;
  end;

  PSP_DRVINFO_DATA = ^SP_DRVINFO_DATA;
  SP_DRVINFO_DATA = record
    cbSize: DWORD;
    DriverType: DWORD;
    Reserved: ULONG;
    Description: array [0..LINE_LEN] of Char;
    MfgName: array [0..LINE_LEN] of Char;
    ProviderName: array [0..LINE_LEN] of Char;
    DriverDate: TFileTime;
    DriverVersion: DWORD;
  end;

function SetupDiGetClassDevs(const ClassGuid: PGUID; Enumerator: PChar;
  hwndParent: HWND; Flags: DWORD): Cardinal; stdcall;
  external 'Setupapi.dll' name 'SetupDiGetClassDevsA';
  
function SetupDiEnumDeviceInfo(DeviceInfoSet: Cardinal; MemberIndex: DWORD;
  DeviceInfoData: PSP_DEVINFO_DATA): BOOL; stdcall;
  external 'Setupapi.dll' name 'SetupDiEnumDeviceInfo';

function SetupDiGetDeviceRegistryProperty(DeviceInfoSet: Cardinal;
  DeviceInfoData: PSP_DEVINFO_DATA; Propertys: DWORD;
  PropertyRegDataType: PWORD; PropertyBuffer: PByte;
  PropertyBufferSize: DWORD; RequiredSize: PDWORD): BOOL; stdcall;
  external 'Setupapi.dll' name 'SetupDiGetDeviceRegistryPropertyA';

function SetupDiDestroyDeviceInfoList(DeviceInfoSet: Cardinal): BOOL; stdcall;
  external 'Setupapi.dll' name 'SetupDiDestroyDeviceInfoList';

function SetupDiClassNameFromGuid(ClassGuid: PGUID; ClassName: PChar;
  ClassNameSize: DWORD; RequiredSize: PDWORD): BOOL; stdcall;
  external 'Setupapi.dll' name 'SetupDiClassNameFromGuidA';

function SetupDiGetClassImageList(ClassImageListData: PSP_CLASSIMAGELIST_DATA):
  BOOL; stdcall; external 'Setupapi.dll' name 'SetupDiGetClassImageList';

function SetupDiDestroyClassImageList(ClassImageListData: PSP_CLASSIMAGELIST_DATA):
  BOOL; stdcall; external 'Setupapi.dll' name 'SetupDiDestroyClassImageList';

function SetupDiGetClassImageIndex(ClassImageListData: PSP_CLASSIMAGELIST_DATA;
  ClassGuid: PGUID; ImageIndex: PINT): BOOL; stdcall;
  external 'Setupapi.dll' name 'SetupDiGetClassImageIndex';

function SetupDiEnumDriverInfo(DeviceInfoSet: Cardinal;
  DeviceInfoData: PSP_DEVINFO_DATA; DriverType: DWORD;MemberIndex: DWORD;
  DriverInfoData: SP_DRVINFO_DATA): BOOL; stdcall;
  external 'Setupapi.dll' name 'SetupDiEnumDriverInfoA';

function SetupDiGetSelectedDriver(DeviceInfoSet: Cardinal;
  DeviceInfoData: PSP_DEVINFO_DATA; DriverInfoData: PSP_DRVINFO_DATA): BOOL; stdcall;
  external 'Setupapi.dll' name 'SetupDiGetSelectedDriverA';

implementation

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?