📄 common.pas
字号:
DIF_RESERVED1 = $00000025;
{$EXTERNALSYM DIF_RESERVED1}
DIF_TROUBLESHOOTER = $00000026;
{$EXTERNALSYM DIF_TROUBLESHOOTER}
DIF_POWERMESSAGEWAKE = $00000027;
{$EXTERNALSYM DIF_POWERMESSAGEWAKE}
//
// Values indicating a change in a device's state
//
const
DICS_ENABLE = $00000001;
{$EXTERNALSYM DICS_ENABLE}
DICS_DISABLE = $00000002;
{$EXTERNALSYM DICS_DISABLE}
DICS_PROPCHANGE = $00000003;
{$EXTERNALSYM DICS_PROPCHANGE}
DICS_START = $00000004;
{$EXTERNALSYM DICS_START}
DICS_STOP = $00000005;
{$EXTERNALSYM DICS_STOP}
//
// Values specifying the scope of a device property change
//
DICS_FLAG_GLOBAL = $00000001; // make change in all hardware profiles
{$EXTERNALSYM DICS_FLAG_GLOBAL}
DICS_FLAG_CONFIGSPECIFIC = $00000002; // make change in specified profile only
{$EXTERNALSYM DICS_FLAG_CONFIGSPECIFIC}
DICS_FLAG_CONFIGGENERAL = $00000004; // 1 or more hardware profile-specific
{$EXTERNALSYM DICS_FLAG_CONFIGGENERAL} // changes to follow.
function SetupDiCallClassInstaller(InstallFunction: DI_FUNCTION;
DeviceInfoSet: HDEVINFO; DeviceInfoData: PSP_DEVINFO_DATA): BOOL;
stdcall external 'setupapi.dll' name 'SetupDiCallClassInstaller';
function SetupDiSetClassInstallParams(DeviceInfoSet: HDEVINFO;
DeviceInfoData: PSP_DEVINFO_DATA; ClassInstallParams: PSP_CLASSINSTALL_HEADER;
ClassInstallParamsSize: DWORD): BOOL;
stdcall external 'setupapi.dll' name 'SetupDiSetClassInstallParamsA';
function SetupDiClassNameFromGuid(const ClassGuid: PGUID; ClassName: PAnsiChar;
ClassNameSize: DWORD; RequiredSize: PDWORD): LongBool;
stdcall external 'setupapi.dll' name 'SetupDiClassNameFromGuidA';
const
CR_SUCCESS = $00000000;
CR_DEFAULT = $00000001;
CR_OUT_OF_MEMORY = $00000002;
CR_INVALID_POINTER = $00000003;
CR_INVALID_FLAG = $00000004;
CR_INVALID_DEVNODE = $00000005;
CR_INVALID_DEVINST = CR_INVALID_DEVNODE;
CR_INVALID_RES_DES = $00000006;
CR_INVALID_LOG_CONF = $00000007;
CR_INVALID_ARBITRATOR = $00000008;
CR_INVALID_NODELIST = $00000009;
CR_DEVNODE_HAS_REQS = $0000000A;
CR_DEVINST_HAS_REQS = CR_DEVNODE_HAS_REQS;
CR_INVALID_RESOURCEID = $0000000B;
CR_DLVXD_NOT_FOUND = $0000000C; // WIN 95 ONLY
CR_NO_SUCH_DEVNODE = $0000000D;
CR_NO_SUCH_DEVINST = CR_NO_SUCH_DEVNODE;
CR_NO_MORE_LOG_CONF = $0000000E;
CR_NO_MORE_RES_DES = $0000000F;
CR_ALREADY_SUCH_DEVNODE = $00000010;
CR_ALREADY_SUCH_DEVINST = CR_ALREADY_SUCH_DEVNODE;
CR_INVALID_RANGE_LIST = $00000011;
CR_INVALID_RANGE = $00000012;
CR_FAILURE = $00000013;
CR_NO_SUCH_LOGICAL_DEV = $00000014;
CR_CREATE_BLOCKED = $00000015;
CR_NOT_SYSTEM_VM = $00000016; // WIN 95 ONLY
CR_REMOVE_VETOED = $00000017;
CR_APM_VETOED = $00000018;
CR_INVALID_LOAD_TYPE = $00000019;
CR_BUFFER_SMALL = $0000001A;
CR_NO_ARBITRATOR = $0000001B;
CR_NO_REGISTRY_HANDLE = $0000001C;
CR_REGISTRY_ERROR = $0000001D;
CR_INVALID_DEVICE_ID = $0000001E;
CR_INVALID_DATA = $0000001F;
CR_INVALID_API = $00000020;
CR_DEVLOADER_NOT_READY = $00000021;
CR_NEED_RESTART = $00000022;
CR_NO_MORE_HW_PROFILES = $00000023;
CR_DEVICE_NOT_THERE = $00000024;
CR_NO_SUCH_VALUE = $00000025;
CR_WRONG_TYPE = $00000026;
CR_INVALID_PRIORITY = $00000027;
CR_NOT_DISABLEABLE = $00000028;
CR_FREE_RESOURCES = $00000029;
CR_QUERY_VETOED = $0000002A;
CR_CANT_SHARE_IRQ = $0000002B;
CR_NO_DEPENDENT = $0000002C;
CR_SAME_RESOURCES = $0000002D;
CR_NO_SUCH_REGISTRY_KEY = $0000002E;
CR_INVALID_MACHINENAME = $0000002F; // NT ONLY
CR_REMOTE_COMM_FAILURE = $00000030; // NT ONLY
CR_MACHINE_UNAVAILABLE = $00000031; // NT ONLY
CR_NO_CM_SERVICES = $00000032; // NT ONLY
CR_ACCESS_DENIED = $00000033; // NT ONLY
CR_CALL_NOT_IMPLEMENTED = $00000034;
CR_INVALID_PROPERTY = $00000035;
CR_DEVICE_INTERFACE_ACTIVE = $00000036;
CR_NO_SUCH_DEVICE_INTERFACE = $00000037;
CR_INVALID_REFERENCE_STRING = $00000038;
CR_INVALID_CONFLICT_LIST = $00000039;
CR_INVALID_INDEX = $0000003A;
CR_INVALID_STRUCTURE_SIZE = $0000003B;
NUM_CR_RESULTS = $0000003C;
CM_PROB_NOT_CONFIGURED = $00000001; // no config for device
CM_PROB_DEVLOADER_FAILED = $00000002; // service load failed
CM_PROB_OUT_OF_MEMORY = $00000003; // out of memory
CM_PROB_ENTRY_IS_WRONG_TYPE = $00000004; //
CM_PROB_LACKED_ARBITRATOR = $00000005; //
CM_PROB_BOOT_CONFIG_CONFLICT = $00000006; // boot config conflict
CM_PROB_FAILED_FILTER = $00000007; //
CM_PROB_DEVLOADER_NOT_FOUND = $00000008; // Devloader not found
CM_PROB_INVALID_DATA = $00000009; //
CM_PROB_FAILED_START = $0000000A; //
CM_PROB_LIAR = $0000000B; //
CM_PROB_NORMAL_CONFLICT = $0000000C; // config conflict
CM_PROB_NOT_VERIFIED = $0000000D; //
CM_PROB_NEED_RESTART = $0000000E; // requires restart
CM_PROB_REENUMERATION = $0000000F; //
CM_PROB_PARTIAL_LOG_CONF = $00000010; //
CM_PROB_UNKNOWN_RESOURCE = $00000011; // unknown res type
CM_PROB_REINSTALL = $00000012; //
CM_PROB_REGISTRY = $00000013; //
CM_PROB_VXDLDR = $00000014; // WINDOWS 95 ONLY
CM_PROB_WILL_BE_REMOVED = $00000015; // devinst will remove
CM_PROB_DISABLED = $00000016; // devinst is disabled
CM_PROB_DEVLOADER_NOT_READY = $00000017; // Devloader not ready
CM_PROB_DEVICE_NOT_THERE = $00000018; // device doesn't exist
CM_PROB_MOVED = $00000019; //
CM_PROB_TOO_EARLY = $0000001A; //
CM_PROB_NO_VALID_LOG_CONF = $0000001B; // no valid log config
CM_PROB_FAILED_INSTALL = $0000001C; // install failed
CM_PROB_HARDWARE_DISABLED = $0000001D; // device disabled
CM_PROB_CANT_SHARE_IRQ = $0000001E; // can't share IRQ
CM_PROB_FAILED_ADD = $0000001F; // driver failed add
CM_PROB_DISABLED_SERVICE = $00000020; // service's Start = 4
CM_PROB_TRANSLATION_FAILED = $00000021; // resource translation failed
CM_PROB_NO_SOFTCONFIG = $00000022; // no soft config
CM_PROB_BIOS_TABLE = $00000023; // device missing in BIOS table
CM_PROB_IRQ_TRANSLATION_FAILED= $00000024; // IRQ translator failed
NUM_CM_PROB = $00000025;
DN_ROOT_ENUMERATED = $00000001; // Was enumerated by ROOT
DN_DRIVER_LOADED = $00000002; // Has Register_Device_Driver
DN_ENUM_LOADED = $00000004; // Has Register_Enumerator
DN_STARTED = $00000008; // Is currently configured
DN_MANUAL = $00000010; // Manually installed
DN_NEED_TO_ENUM = $00000020; // May need reenumeration
DN_NOT_FIRST_TIME = $00000040; // Has received a config
DN_HARDWARE_ENUM = $00000080; // Enum generates hardware ID
DN_LIAR = $00000100; // Lied about can reconfig once
DN_HAS_MARK = $00000200; // Not CM_Create_DevInst lately
DN_HAS_PROBLEM = $00000400; // Need device installer
DN_FILTERED = $00000800; // Is filtered
DN_MOVED = $00001000; // Has been moved
DN_DISABLEABLE = $00002000; // Can be rebalanced
DN_REMOVABLE = $00004000; // Can be removed
DN_PRIVATE_PROBLEM = $00008000; // Has a private problem
DN_MF_PARENT = $00010000; // Multi function parent
DN_MF_CHILD = $00020000; // Multi function child
DN_WILL_BE_REMOVED = $00040000; // DevInst is being removed
{****************************************************************************
*
* DEVNODE STATUS
*
****************************************************************************
*
* These are the bits in the devnode's status that someone can query
* with a CM_Get_DevNode_Status. The A/S column tells wheter the flag
* can be change asynchronously or not.
*
***************************************************************************}
// 4.0 OPK2 Flags
DN_NOT_FIRST_TIMEE = $00080000; // S: Has received a config enumerate
DN_STOP_FREE_RES = $00100000; // S: When child is stopped, free resources
DN_REBAL_CANDIDATE = $00200000; // S: Don't skip during rebalance
DN_BAD_PARTIAL = $00400000; // S: This devnode's log_confs do not have same resources
DN_NT_ENUMERATOR = $00800000; // S: This devnode's is an NT enumerator
DN_NT_DRIVER = $01000000; // S: This devnode's is an NT driver
// 4.1 Flags
DN_NEEDS_LOCKING = $02000000; // S: Devnode need lock resume processing
DN_ARM_WAKEUP = $04000000; // S: Devnode can be the wakeup device
DN_APM_ENUMERATOR = $08000000; // S: APM aware enumerator
DN_APM_DRIVER = $10000000; // S: APM aware driver
DN_SILENT_INSTALL = $20000000; // S: Silent install
DN_NO_SHOW_IN_DM = $40000000; // S: No show in device manager
DN_BOOT_LOG_PROB = $80000000; // S: Had a problem during preassignment of boot log conf
DN_CHANGEABLE_FLAGS = $79BB62E0;
// 4.11 Flags
DN2_EJECT_ON_REMOVE = $00000001; // S: to be check on CONFIG_REMOVE to see if ejection is wanted
DN2_LOCK_CAPABLE = $00000002; // S: Locking capable
DN2_EJECT_CAPABLE = $00000004; // S: Ejecting capable
DN2_EJECT_LOCKED = $00000008; // S: Currently locked from ejecting
DN2_EJECTED_ON_REMOVE = $00000010; // S: to be set on CONFIG_REMOVE on successful ejection
DN2_POWER_NOOP = $00000020; // S: does not care about power
DN2_STARTING = $00000040; // S: devnode is currently starting
DN2_NO_EXIT_REMOVE = $00000080; // S: devnode will not be remove at exit
DN2_NO_HIBER_DISABLE = $00000100; // S: devnode will not be disable at pageable resume
DN2_CHANGEABLE_FLAGS = $000001B6;
NUM_DN_FLAG = $00000020; // DEBUG: maximum flag (number)
NUM_DN2_FLAG = $00000009; // DEBUG: maximum flag (number)
DN_FLAG_LEN = $00000002; // DEBUG: flag length
function CM_Get_DevNode_Status(pulStatus: PULONG; pulProblemNumber: PULONG;
dnDevInst: DEVINST; ulFlags: ULONG): Integer;
stdcall external 'cfgmgr32.dll' name 'CM_Get_DevNode_Status';
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -