?? setupapi.pas
字號:
// Structure corresponding to the following DIF_NEWDEVICEWIZARD_* install
// functions:
//
// DIF_NEWDEVICEWIZARD_PRESELECT
// DIF_NEWDEVICEWIZARD_SELECT
// DIF_NEWDEVICEWIZARD_PREANALYZE
// DIF_NEWDEVICEWIZARD_POSTANALYZE
// DIF_NEWDEVICEWIZARD_FINISHINSTALL
//
type
PSPNewDeviceWizardData = ^TSPNewDeviceWizardData;
_SP_NEWDEVICEWIZARD_DATA = packed record
ClassInstallHeader: TSPClassInstallHeader;
Flags: DWORD; // presently unused--must be zero.
DynamicPages: array [0..MAX_INSTALLWIZARD_DYNAPAGES - 1] of HPROPSHEETPAGE;
NumDynamicPages: DWORD;
hwndWizardDlg: HWND;
end;
{$EXTERNALSYM _SP_NEWDEVICEWIZARD_DATA}
TSPNewDeviceWizardData = _SP_NEWDEVICEWIZARD_DATA;
//
// Structure corresponding to the DIF_TROUBLESHOOTER install function
//
PSPTroubleShooterParamsA = ^TSPTroubleShooterParamsA;
PSPTroubleShooterParamsW = ^TSPTroubleShooterParamsW;
PSPTroubleShooterParams = PSPTroubleShooterParamsA;
_SP_TROUBLESHOOTER_PARAMS_A = packed record
ClassInstallHeader: TSPClassInstallHeader;
ChmFile: array [0..MAX_PATH - 1] of AnsiChar;
HtmlTroubleShooter: array [0..MAX_PATH - 1] of AnsiChar;
end;
{$EXTERNALSYM _SP_TROUBLESHOOTER_PARAMS_A}
_SP_TROUBLESHOOTER_PARAMS_W = packed record
ClassInstallHeader: TSPClassInstallHeader;
ChmFile: array [0..MAX_PATH - 1] of WideChar;
HtmlTroubleShooter: array [0..MAX_PATH - 1] of WideChar;
end;
{$EXTERNALSYM _SP_TROUBLESHOOTER_PARAMS_W}
_SP_TROUBLESHOOTER_PARAMS_ = _SP_TROUBLESHOOTER_PARAMS_A;
TSPTroubleShooterParamsA = _SP_TROUBLESHOOTER_PARAMS_A;
TSPTroubleShooterParamsW = _SP_TROUBLESHOOTER_PARAMS_W;
TSPTroubleShooterParams = TSPTroubleShooterParamsA;
//
// Structure corresponding to the DIF_POWERMESSAGEWAKE install function
//
PSPPowerMessageWakeParamsA = ^TSPPowerMessageWakeParamsA;
PSPPowerMessageWakeParamsW = ^TSPPowerMessageWakeParamsW;
PSPPowerMessageWakeParams = PSPPowerMessageWakeParamsA;
_SP_POWERMESSAGEWAKE_PARAMS_A = packed record
ClassInstallHeader: TSPClassInstallHeader;
PowerMessageWake: array [0..(LINE_LEN * 2) - 1] of AnsiChar;
end;
{$EXTERNALSYM _SP_POWERMESSAGEWAKE_PARAMS_A}
_SP_POWERMESSAGEWAKE_PARAMS_W = packed record
ClassInstallHeader: TSPClassInstallHeader;
PowerMessageWake: array [0..(LINE_LEN * 2) - 1] of WideChar;
end;
{$EXTERNALSYM _SP_POWERMESSAGEWAKE_PARAMS_W}
_SP_POWERMESSAGEWAKE_PARAMS_ = _SP_POWERMESSAGEWAKE_PARAMS_A;
TSPPowerMessageWakeParamsA = _SP_POWERMESSAGEWAKE_PARAMS_A;
TSPPowerMessageWakeParamsW = _SP_POWERMESSAGEWAKE_PARAMS_W;
TSPPowerMessageWakeParams = TSPPowerMessageWakeParamsA;
//
// Driver information structure (member of a driver info list that may be associated
// with a particular device instance, or (globally) with a device information set)
//
PSPDrvInfoDataV2A = ^TSPDrvInfoDataV2A;
PSPDrvInfoDataV2W = ^TSPDrvInfoDataV2W;
PSPDrvInfoDataV2 = PSPDrvInfoDataV2A;
_SP_DRVINFO_DATA_V2_A = packed record
cbSize: DWORD;
DriverType: DWORD;
Reserved: ULONG_PTR;
Description: array [0..LINE_LEN - 1] of AnsiChar;
MfgName: array [0..LINE_LEN - 1] of AnsiChar;
ProviderName: array [0..LINE_LEN - 1] of AnsiChar;
DriverDate: TFileTime;
DriverVersion: Int64;
end;
{$EXTERNALSYM _SP_DRVINFO_DATA_V2_A}
_SP_DRVINFO_DATA_V2_W = packed record
cbSize: DWORD;
DriverType: DWORD;
Reserved: ULONG_PTR;
Description: array [0..LINE_LEN - 1] of WideChar;
MfgName: array [0..LINE_LEN - 1] of WideChar;
ProviderName: array [0..LINE_LEN - 1] of WideChar;
DriverDate: TFileTime;
DriverVersion: Int64;
end;
{$EXTERNALSYM _SP_DRVINFO_DATA_V2_W}
_SP_DRVINFO_DATA_V2_ = _SP_DRVINFO_DATA_V2_A;
TSPDrvInfoDataV2A = _SP_DRVINFO_DATA_V2_A;
TSPDrvInfoDataV2W = _SP_DRVINFO_DATA_V2_W;
TSPDrvInfoDataV2 = TSPDrvInfoDataV2A;
//
// Version 1 of the SP_DRVINFO_DATA structures, used only for compatibility
// with Windows NT 4.0/Windows 95/98 SETUPAPI.DLL
//
PSPDrvInfoDataV1A = ^TSPDrvInfoDataV1A;
PSPDrvInfoDataV1W = ^TSPDrvInfoDataV1W;
PSPDrvInfoDataV1 = PSPDrvInfoDataV1A;
_SP_DRVINFO_DATA_V1_A = packed record
cbSize: DWORD;
DriverType: DWORD;
Reserved: ULONG_PTR;
Description: array [0..LINE_LEN - 1] of AnsiChar;
MfgName: array [0..LINE_LEN - 1] of AnsiChar;
ProviderName: array [0..LINE_LEN - 1] of AnsiChar;
end;
{$EXTERNALSYM _SP_DRVINFO_DATA_V1_A}
_SP_DRVINFO_DATA_V1_W = packed record
cbSize: DWORD;
DriverType: DWORD;
Reserved: ULONG_PTR;
Description: array [0..LINE_LEN - 1] of WideChar;
MfgName: array [0..LINE_LEN - 1] of WideChar;
ProviderName: array [0..LINE_LEN - 1] of WideChar;
end;
{$EXTERNALSYM _SP_DRVINFO_DATA_V1_W}
_SP_DRVINFO_DATA_V1_ = _SP_DRVINFO_DATA_V1_A;
TSPDrvInfoDataV1A = _SP_DRVINFO_DATA_V1_A;
TSPDrvInfoDataV1W = _SP_DRVINFO_DATA_V1_W;
TSPDrvInfoDataV1 = TSPDrvInfoDataV1A;
{$IFDEF USE_SP_DRVINFO_DATA_V1}
TSPDrvInfoDataA = TSPDrvInfoDataV1A;
TSPDrvInfoDataW = TSPDrvInfoDataV1W;
TSPDrvInfoData = TSPDrvInfoDataA;
PSPDrvInfoDataA = PSPDrvInfoDataV1A;
PSPDrvInfoDataW = PSPDrvInfoDataV1W;
PSPDrvInfoData = PSPDrvInfoDataA;
{$ELSE}
TSPDrvInfoDataA = TSPDrvInfoDataV2A;
TSPDrvInfoDataW = TSPDrvInfoDataV2W;
TSPDrvInfoData = TSPDrvInfoDataA;
PSPDrvInfoDataA = PSPDrvInfoDataV2A;
PSPDrvInfoDataW = PSPDrvInfoDataV2W;
PSPDrvInfoData = PSPDrvInfoDataA;
{$ENDIF}
//
// Driver information details structure (provides detailed information about a
// particular driver information structure)
//
PSPDrvInfoDetailDataA = ^TSPDrvInfoDetailDataA;
PSPDrvInfoDetailDataW = ^TSPDrvInfoDetailDataW;
PSPDrvInfoDetailData = PSPDrvInfoDetailDataA;
_SP_DRVINFO_DETAIL_DATA_A = packed record
cbSize: DWORD;
InfDate: TFileTime;
CompatIDsOffset: DWORD;
CompatIDsLength: DWORD;
Reserved: ULONG_PTR;
SectionName: array [0..LINE_LEN - 1] of AnsiChar;
InfFileName: array [0..MAX_PATH - 1] of AnsiChar;
DrvDescription: array [0..LINE_LEN - 1] of AnsiChar;
HardwareID: array [0..ANYSIZE_ARRAY - 1] of AnsiChar;
end;
{$EXTERNALSYM _SP_DRVINFO_DETAIL_DATA_A}
_SP_DRVINFO_DETAIL_DATA_W = packed record
cbSize: DWORD;
InfDate: TFileTime;
CompatIDsOffset: DWORD;
CompatIDsLength: DWORD;
Reserved: ULONG_PTR;
SectionName: array [0..LINE_LEN - 1] of WideChar;
InfFileName: array [0..MAX_PATH - 1] of WideChar;
DrvDescription: array [0..LINE_LEN - 1] of WideChar;
HardwareID: array [0..ANYSIZE_ARRAY - 1] of WideChar;
end;
{$EXTERNALSYM _SP_DRVINFO_DETAIL_DATA_W}
_SP_DRVINFO_DETAIL_DATA_ = _SP_DRVINFO_DETAIL_DATA_A;
TSPDrvInfoDetailDataA = _SP_DRVINFO_DETAIL_DATA_A;
TSPDrvInfoDetailDataW = _SP_DRVINFO_DETAIL_DATA_W;
TSPDrvInfoDetailData = TSPDrvInfoDetailDataA;
//
// Driver installation parameters (associated with a particular driver
// information element)
//
PSPDrvInstallParams = ^TSPDrvInstallParams;
_SP_DRVINSTALL_PARAMS = packed record
cbSize: DWORD;
Rank: DWORD;
Flags: DWORD;
PrivateData: DWORD_PTR;
Reserved: DWORD;
end;
{$EXTERNALSYM _SP_DRVINSTALL_PARAMS}
TSPDrvInstallParams = _SP_DRVINSTALL_PARAMS;
//
// SP_DRVINSTALL_PARAMS.Flags values
//
const
DNF_DUPDESC = $00000001; // Multiple providers have same desc
{$EXTERNALSYM DNF_DUPDESC}
DNF_OLDDRIVER = $00000002; // Driver node specifies old/current driver
{$EXTERNALSYM DNF_OLDDRIVER}
DNF_EXCLUDEFROMLIST = $00000004; // If set, this driver node will not be
{$EXTERNALSYM DNF_EXCLUDEFROMLIST} // displayed in any driver select dialogs.
DNF_NODRIVER = $00000008; // if we want to install no driver
{$EXTERNALSYM DNF_NODRIVER} // (e.g no mouse drv)
DNF_LEGACYINF = $00000010; // this driver node comes from an old-style INF
{$EXTERNALSYM DNF_LEGACYINF}
DNF_CLASS_DRIVER = $00000020; // Driver node represents a class driver
{$EXTERNALSYM DNF_CLASS_DRIVER}
DNF_COMPATIBLE_DRIVER = $00000040; // Driver node represents a compatible driver
{$EXTERNALSYM DNF_COMPATIBLE_DRIVER}
DNF_INET_DRIVER = $00000080; // Driver comes from an internet source
{$EXTERNALSYM DNF_INET_DRIVER}
DNF_UNUSED1 = $00000100;
{$EXTERNALSYM DNF_UNUSED1}
DNF_INDEXED_DRIVER = $00000200; // Driver is contained in the Windows Driver Index
{$EXTERNALSYM DNF_INDEXED_DRIVER}
DNF_OLD_INET_DRIVER = $00000400; // Driver came from the Internet, but we don't currently
{$EXTERNALSYM DNF_OLD_INET_DRIVER} // have access to it's source files. Never attempt to
// install a driver with this flag!
DNF_BAD_DRIVER = $00000800; // Driver node should not be used at all
{$EXTERNALSYM DNF_BAD_DRIVER}
DNF_DUPPROVIDER = $00001000; // Multiple drivers have the same provider and desc
{$EXTERNALSYM DNF_DUPPROVIDER}
//
//Rank values (the lower the Rank number, the better the Rank)
//
DRIVER_HARDWAREID_RANK = $00000FFF; // Any rank less than or equal to
{$EXTERNALSYM DRIVER_HARDWAREID_RANK} // this value is a HardwareID match
//
// Setup callback routine for comparing detection signatures
//
type
TSPDetsigCmpProc = function (DeviceInfoSet: HDEVINFO; NewDeviceData,
ExistingDeviceData: PSPDevInfoData; CompareContext: Pointer): DWORD; stdcall;
//
// Define context structure handed to co-installers
//
PCoInstallerContextData = ^TCoInstallerContextData;
_COINSTALLER_CONTEXT_DATA = packed record
PostProcessing: BOOL;
InstallResult: DWORD;
PrivateData: Pointer;
end;
{$EXTERNALSYM _COINSTALLER_CONTEXT_DATA}
TCoInstallerContextData = _COINSTALLER_CONTEXT_DATA;
//
// Structure containing class image list information.
//
PSPClassImageListData = ^TSPClassImageListData;
_SP_CLASSIMAGELIST_DATA = packed record
cbSize: DWORD;
ImageList: HIMAGELIST;
Reserved: ULONG_PTR;
end;
{$EXTERNALSYM _SP_CLASSIMAGELIST_DATA}
TSPClassImageListData = _SP_CLASSIMAGELIST_DATA;
//
// Structure to be passed as first parameter (LPVOID lpv) to ExtensionPropSheetPageProc
// entry point in setupapi.dll or to "EnumPropPages32" or "BasicProperties32" entry
// points provided by class/device property page providers. Used to retrieve a handle
// (or, potentially, multiple handles) to property pages for a specified property page type.
//
PSPPropSheetPageRequest = ^TSPPropSheetPageRequest;
_SP_PROPSHEETPAGE_REQUEST = packed record
cbSize: DWORD;
PageRequested: DWORD;
DeviceInfoSet: HDEVINFO;
DeviceInfoData: PSPDevInfoData;
end;
{$EXTERNALSYM _SP_PROPSHEETPAGE_REQUEST}
TSPPropSheetPageRequest = _SP_PROPSHEETPAGE_REQUEST;
//
// Property sheet codes used in SP_PROPSHEETPAGE_REQUEST.PageRequested
//
const
SPPSR_SELECT_DEVICE_RESOURCES = 1; // supplied by setupapi.dll
{$EXTERNALSYM SPPSR_SELECT_DEVICE_RESOURCES}
SPPSR_ENUM_BASIC_DEVICE_PROPERTIES = 2; // supplied by device's BasicProperties32 provider
{$EXTERNALSYM SPPSR_ENUM_BASIC_DEVICE_PROPERTIES}
SPPSR_ENUM_ADV_DEVICE_PROPERTIES = 3; // supplied by class and/or device's EnumPropPages32 provider
{$EXTERNALSYM SPPSR_ENUM_ADV_DEVICE_PROPERTIES}
//
// Structure used with SetupGetBackupQueue
//
type
PSPBackupQueueParamsA = ^TSPBackupQueueParamsA;
PSPBackupQueueParamsW = ^TSPBackupQueueParamsW;
PSPBackupQueueParams = PSPBackupQueueParamsA;
_SP_BACKUP_QUEUE_PARAMS_A = packed record
cbSize: DWORD;
FullInfPath: array [0..MAX_PATH - 1] of AnsiChar; // buffer to hold ANSI pathname of INF file
FilenameOffset: Integer; // offset in CHAR's of filename part (after '\')
end;
{$EXTERNALSYM _SP_BACKUP_QUEUE_PARAMS_A}
_SP_BACKUP_QUEUE_PARAMS_W = packed record
cbSize: DWORD;
FullInfPath: array [0..MAX_PATH - 1] of WideChar; // buffer to hold ANSI pathname of INF file
FilenameOffset: Integer; // offset in CHAR's of filename part (after '\')
end;
{$EXTERNALSYM _SP_BACKUP_QUEUE_PARAMS_W}
_SP_BACKUP_QUEUE_PARAMS_ = _SP_BACKUP_QUEUE_PARAMS_A;
TSPBackupQueueParamsA = _SP_BACKUP_QUEUE_PARAMS_A;
TSPBackupQueueParamsW = _SP_BACKUP_QUEUE_PARAMS_W;
TSPBackupQueueParams = TSPBackupQueueParamsA;
//
// Setupapi-specific error codes
//
// Inf parse outcomes
//
const
APPLICATION_ERROR_MASK = DWORD($20000000); // from WINNT.h
{$EXTERNALSYM APPLICATION_ERROR_MASK}
ERROR_SEVERITY_ERROR = DWORD($C0000000); // from WINNT.h
{$EXTERNALSYM ERROR_SEVERITY_ERROR}
ERROR_EXPECTED_SECTION_NAME = DWORD(APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 0);
{$EXTERNALSYM ERROR_EXPECTED_SECTION_NAME}
ERROR_BAD_SECTION_NAME_LINE = DWORD(APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 1);
{$EXTERNALSYM ERROR_BAD_SECTION_NAME_LINE}
ERROR_SECTION_NAME_TOO_LONG = DWORD(APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 2);
{$EXTERNALSYM ERROR_SECTION_NAME_TOO_LONG}
ERROR_GENERAL_SYNTAX = DWORD(APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or 3);
{$EXTERNALSYM ERROR_GENERAL_SYNTAX}
//
// Inf runtime errors
//
ERROR_WRONG_INF_STYLE = DWORD(APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or $100);
{$EXTERNALSYM ERROR_WRONG_INF_STYLE}
ERROR_SECTION_NOT_FOUND = DWORD(APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or $101);
{$EXTERNALSYM ERROR_SECTION_NOT_FOUND}
ERROR_LINE_NOT_FOUND = DWORD(APPLICATION_ERROR_MASK or ERROR_SEVERITY_ERROR or $102);
{$EXTERNALSYM ERROR_LINE_NOT_FOUND}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -