📄 setupapi.pas
字号:
//
SPFILENOTIFY_CABINETINFO = $00000010;
{$EXTERNALSYM SPFILENOTIFY_CABINETINFO}
SPFILENOTIFY_FILEINCABINET = $00000011;
{$EXTERNALSYM SPFILENOTIFY_FILEINCABINET}
SPFILENOTIFY_NEEDNEWCABINET = $00000012;
{$EXTERNALSYM SPFILENOTIFY_NEEDNEWCABINET}
SPFILENOTIFY_FILEEXTRACTED = $00000013;
{$EXTERNALSYM SPFILENOTIFY_FILEEXTRACTED}
SPFILENOTIFY_FILEOPDELAYED = $00000014;
{$EXTERNALSYM SPFILENOTIFY_FILEOPDELAYED}
//
// These are used for backup operations
//
SPFILENOTIFY_STARTBACKUP = $00000015;
{$EXTERNALSYM SPFILENOTIFY_STARTBACKUP}
SPFILENOTIFY_BACKUPERROR = $00000016;
{$EXTERNALSYM SPFILENOTIFY_BACKUPERROR}
SPFILENOTIFY_ENDBACKUP = $00000017;
{$EXTERNALSYM SPFILENOTIFY_ENDBACKUP}
//
// Extended notification for SetupScanFileQueue(Flags=SPQ_SCAN_USE_CALLBACKEX)
//
SPFILENOTIFY_QUEUESCAN_EX = $00000018;
{$EXTERNALSYM SPFILENOTIFY_QUEUESCAN_EX}
//
// Copy notification. These are bit flags that may be combined.
//
SPFILENOTIFY_LANGMISMATCH = $00010000;
{$EXTERNALSYM SPFILENOTIFY_LANGMISMATCH}
SPFILENOTIFY_TARGETEXISTS = $00020000;
{$EXTERNALSYM SPFILENOTIFY_TARGETEXISTS}
SPFILENOTIFY_TARGETNEWER = $00040000;
{$EXTERNALSYM SPFILENOTIFY_TARGETNEWER}
//
// File operation codes and callback outcomes.
//
FILEOP_COPY = 0;
{$EXTERNALSYM FILEOP_COPY}
FILEOP_RENAME = 1;
{$EXTERNALSYM FILEOP_RENAME}
FILEOP_DELETE = 2;
{$EXTERNALSYM FILEOP_DELETE}
FILEOP_BACKUP = 3;
{$EXTERNALSYM FILEOP_BACKUP}
FILEOP_ABORT = 0;
{$EXTERNALSYM FILEOP_ABORT}
FILEOP_DOIT = 1;
{$EXTERNALSYM FILEOP_DOIT}
FILEOP_SKIP = 2;
{$EXTERNALSYM FILEOP_SKIP}
FILEOP_RETRY = FILEOP_DOIT;
{$EXTERNALSYM FILEOP_RETRY}
FILEOP_NEWPATH = 4;
{$EXTERNALSYM FILEOP_NEWPATH}
//
// Flags in inf copy sections
//
COPYFLG_WARN_IF_SKIP = $00000001; // warn if user tries to skip file
{$EXTERNALSYM COPYFLG_WARN_IF_SKIP}
COPYFLG_NOSKIP = $00000002; // disallow skipping this file
{$EXTERNALSYM COPYFLG_NOSKIP}
COPYFLG_NOVERSIONCHECK = $00000004; // ignore versions and overwrite target
{$EXTERNALSYM COPYFLG_NOVERSIONCHECK}
COPYFLG_FORCE_FILE_IN_USE = $00000008; // force file-in-use behavior
{$EXTERNALSYM COPYFLG_FORCE_FILE_IN_USE}
COPYFLG_NO_OVERWRITE = $00000010; // do not copy if file exists on target
{$EXTERNALSYM COPYFLG_NO_OVERWRITE}
COPYFLG_NO_VERSION_DIALOG = $00000020; // do not copy if target is newer
{$EXTERNALSYM COPYFLG_NO_VERSION_DIALOG}
COPYFLG_OVERWRITE_OLDER_ONLY = $00000040; // leave target alone if version same as source
{$EXTERNALSYM COPYFLG_OVERWRITE_OLDER_ONLY}
COPYFLG_REPLACEONLY = $00000400; // copy only if file exists on target
{$EXTERNALSYM COPYFLG_REPLACEONLY}
COPYFLG_NODECOMP = $00000800; // don't attempt to decompress file; copy as-is
{$EXTERNALSYM COPYFLG_NODECOMP}
COPYFLG_REPLACE_BOOT_FILE = $00001000; // file must be present upon reboot (i.e., it's
{$EXTERNALSYM COPYFLG_REPLACE_BOOT_FILE} // needed by the loader); this flag implies a reboot
COPYFLG_NOPRUNE = $00002000; // never prune this file
{$EXTERNALSYM COPYFLG_NOPRUNE}
//
// Flags in inf delete sections
// New flags go in high word
//
DELFLG_IN_USE = $00000001; // queue in-use file for delete
{$EXTERNALSYM DELFLG_IN_USE}
DELFLG_IN_USE1 = $00010000; // high-word version of DELFLG_IN_USE
{$EXTERNALSYM DELFLG_IN_USE1}
//
// Source and file paths. Used when notifying queue callback
// of SPFILENOTIFY_STARTxxx, SPFILENOTIFY_ENDxxx, and SPFILENOTIFY_xxxERROR.
//
type
PFilePathsA = ^TFilePathsA;
PFilePathsW = ^TFilePathsW;
PFilePaths = PFilePathsA;
FILEPATHS_A = packed record
Target: PAnsiChar;
Source: PAnsiChar; // not used for delete operations
Win32Error: UINT;
Flags: DWORD; // such as SP_COPY_NOSKIP for copy errors
end;
{$EXTERNALSYM FILEPATHS_A}
FILEPATHS_W = packed record
Target: PWideChar;
Source: PWideChar; // not used for delete operations
Win32Error: UINT;
Flags: DWORD; // such as SP_COPY_NOSKIP for copy errors
end;
{$EXTERNALSYM FILEPATHS_W}
TFilePathsA = FILEPATHS_A;
TFilePathsW = FILEPATHS_W;
TFilePaths = TFilePathsA;
//
// Structure used with SPFILENOTIFY_NEEDMEDIA
//
PSourceMediaA = ^TSourceMediaA;
PSourceMediaW = ^TSourceMediaW;
PSourceMedia = PSourceMediaA;
SOURCE_MEDIA_A = packed record
Reserved: PAnsiChar;
Tagfile: PAnsiChar; // may be NULL
Description: PAnsiChar;
//
// Pathname part and filename part of source file
// that caused us to need the media.
//
SourcePath: PAnsiChar;
SourceFile: PAnsiChar;
Flags: DWORD; // subset of SP_COPY_xxx
end;
{$EXTERNALSYM SOURCE_MEDIA_A}
SOURCE_MEDIA_W = packed record
Reserved: PWideChar;
Tagfile: PWideChar; // may be NULL
Description: PWideChar;
//
// Pathname part and filename part of source file
// that caused us to need the media.
//
SourcePath: PWideChar;
SourceFile: PWideChar;
Flags: DWORD; // subset of SP_COPY_xxx
end;
{$EXTERNALSYM SOURCE_MEDIA_W}
TSourceMediaA = SOURCE_MEDIA_A;
TSourceMediaW = SOURCE_MEDIA_W;
TSourceMedia = TSourceMediaA;
//
// Structure used with SPFILENOTIFY_CABINETINFO and
// SPFILENOTIFY_NEEDNEWCABINET
//
PCabinetInfoA = ^TCabinetInfoA;
PCabinetInfoW = ^TCabinetInfoW;
PCabinetInfo = PCabinetInfoA;
CABINET_INFO_A = packed record
CabinetPath: PAnsiChar;
CabinetFile: PAnsiChar;
DiskName: PAnsiChar;
SetId: Word;
CabinetNumber: Word;
end;
{$EXTERNALSYM CABINET_INFO_A}
CABINET_INFO_W = packed record
CabinetPath: PWideChar;
CabinetFile: PWideChar;
DiskName: PWideChar;
SetId: Word;
CabinetNumber: Word;
end;
{$EXTERNALSYM CABINET_INFO_W}
TCabinetInfoA = CABINET_INFO_A;
TCabinetInfoW = CABINET_INFO_W;
TCabinetInfo = TCabinetInfoA;
//
// Structure used with SPFILENOTIFY_FILEINCABINET
//
PFileInCabinetInfoA = ^TFileInCabinetInfoA;
PFileInCabinetInfoW = ^TFileInCabinetInfoW;
PFileInCabinetInfo = PFileInCabinetInfoA;
FILE_IN_CABINET_INFO_A = packed record
NameInCabinet: PAnsiChar;
FileSize: DWORD;
Win32Error: DWORD;
DosDate: Word;
DosTime: Word;
DosAttribs: Word;
FullTargetName: array [0..MAX_PATH - 1] of AnsiChar;
end;
{$EXTERNALSYM FILE_IN_CABINET_INFO_A}
FILE_IN_CABINET_INFO_W = packed record
NameInCabinet: PWideChar;
FileSize: DWORD;
Win32Error: DWORD;
DosDate: Word;
DosTime: Word;
DosAttribs: Word;
FullTargetName: array [0..MAX_PATH - 1] of WideChar;
end;
{$EXTERNALSYM FILE_IN_CABINET_INFO_W}
TFileInCabinetInfoA = FILE_IN_CABINET_INFO_A;
TFileInCabinetInfoW = FILE_IN_CABINET_INFO_W;
TFileInCabinetInfo = TFileInCabinetInfoA;
//
// Define type for setup file queue
//
HSPFILEQ = Pointer;
{$EXTERNALSYM HSPFILEQ}
//
// Structure used with SetupQueueCopyIndirect
//
PSPFileCopyParamsA = ^TSPFileCopyParamsA;
PSPFileCopyParamsW = ^TSPFileCopyParamsW;
PSPFileCopyParams = PSPFileCopyParamsA;
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;
TSPFileCopyParams = TSPFileCopyParamsA;
//
// 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;
PSPDeviceInterfaceDetailData = PSPDeviceInterfaceDetailDataA;
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;
TSPDeviceInterfaceDetailData = TSPDeviceInterfaceDetailDataA;
//
// Backward compatibility--do not use.
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -