sysdetmg.h
来自「用于查询PC机上的USB端口是否有设备挂接上」· C头文件 代码 · 共 849 行 · 第 1/2 页
H
849 行
/*** EISA related stuff
*/
#define MAX_EISAID_LEN 7
#define MAX_EISA_SLOTS 16
#define MAX_IOCONFIGS 20
#define MAX_MEMCONFIGS 9
#define MAX_IRQCONFIGS 7
#define MAX_DMACONFIGS 4
#define IDSLOT_DUPID 0x0080
#define IDSLOT_NOREADID 0x0040
#define IDSLOT_SLOTTYPEMASK 0x0030
#define IDSLOT_EXPANSLOT 0x0000
#define IDSLOT_EMBEDSLOT 0x0010
#define IDSLOT_VIRTSLOT 0x0020
#define IDSLOT_DUPCFGIDMASK 0x000f
#define IDSLOT_INCOMPLETECONFIG 0x8000
#define IDSLOT_SUPPORTIOCHKERR 0x0200
#define IDSLOT_SUPPORTENABLE 0x0100
#define FUNCINFO_FUNCDISABLED 0x80
#define FUNCINFO_FREEFORMDATA 0x40
#define FUNCINFO_IOINITENTRIES 0x20
#define FUNCINFO_IORANGEENTRIES 0x10
#define FUNCINFO_DMAENTRIES 0x08
#define FUNCINFO_IRQENTRIES 0x04
#define FUNCINFO_MEMENTRIES 0x02
#define FUNCINFO_TYPEENTRY 0x01
#define PORTINFO_MOREENTRIES 0x80
#define PORTINFO_SHARED 0x40
#define PORTINFO_NUMPORTMASK 0x1f
#define MEMCFG_MOREENTRIES 0x80
#define MEMCFG_SHARED 0x20
#define MEMCFG_MEMTYPEMASK 0x18
#define MEMCFG_CACHED 0x02
#define MEMCFG_READWRITE 0x01
#define MEMSIZ_DECODEMASK 0x0c
#define MEMSIZ_DECODE20BIT 0x00
#define MEMSIZ_DECODE24BIT 0x04
#define MEMSIZ_DECODE32BIT 0x08
#define IRQCFG_MOREENTRIES 0x80
#define IRQCFG_SHARED 0x40
#define IRQCFG_LEVELTRIGGERED 0x20
#define IRQCFG_INTNUMMASK 0x0f
#define DMACFG_MOREENTRIES 0x0080
#define DMACFG_SHARED 0x0040
#define DMACFG_DMANUMMASK 0x0007
#define DMACFG_TIMINGMASK 0x3000
#define DMACFG_XFERSIZEMASK 0x0c00
#define TABLE_ENTRIES_FROM_RSDT_POINTER(p) ((p->Header.Length-min(p->Header.Length, sizeof(DESCRIPTION_HEADER))) / 4)
#define DSDT_SIGNATURE 0x54445344 // "DSDT"
#define FADT_SIGNATURE 0x50434146 // "FACP"
#define RSDT_SIGNATURE 0x54445352 // "RSDT"
#pragma pack(1)
typedef struct memconfig_s
{
BYTE bMemConfig;
BYTE bMemDataSize;
BYTE bStartAddrLo; //divided by 0x100
WORD wStartAddrHi;
WORD wMemSize; //divided by 0x400
} MEMCONFIG;
typedef struct ioconfig_s
{
BYTE bPortInfo;
WORD wStartPort;
} IOCONFIG;
typedef struct initdata_s
{
BYTE bInitType;
WORD wPortAddr;
} INITDATA;
typedef struct eisaconfig_s
{
DWORD dwEISAID;
WORD wIDSlotInfo;
BYTE bMajorRev;
BYTE bMinorRev;
BYTE abSelections[26];
BYTE bFuncInfo;
char achTypeInfo[80];
MEMCONFIG amemconfig[MAX_MEMCONFIGS];
WORD awIRQConfig[MAX_IRQCONFIGS];
WORD awDMAConfig[MAX_DMACONFIGS];
IOCONFIG aioconfig[MAX_IOCONFIGS];
INITDATA ainitdata[20];
} EISACONFIG;
typedef EISACONFIG FAR *LPEISACONFIG;
/*** DPMI call structure
*/
typedef struct dwregs_s
{
DWORD edi;
DWORD esi;
DWORD ebp;
DWORD rmdw1;
DWORD ebx;
DWORD edx;
DWORD ecx;
DWORD eax;
} DWREGS;
typedef struct wregs_s
{
WORD di;
WORD rmw1;
WORD si;
WORD rmw2;
WORD bp;
WORD rmw3;
DWORD rmw4;
WORD bx;
WORD rmw5;
WORD dx;
WORD rmw6;
WORD cx;
WORD rmw7;
WORD ax;
} WREGS;
typedef struct bregs_s
{
DWORD rmb1[4];
BYTE bl;
BYTE bh;
WORD rmb2;
BYTE dl;
BYTE dh;
WORD rmb3;
BYTE cl;
BYTE ch;
WORD rmb4;
BYTE al;
BYTE ah;
} BREGS;
typedef struct rmcs_s
{
union
{
DWREGS dw;
WREGS w;
BREGS b;
} regs;
WORD flags;
WORD es;
WORD ds;
WORD fs;
WORD gs;
WORD ip;
WORD cs;
WORD sp;
WORD ss;
} RMCS, FAR *LPRMCS;
typedef struct pnpbiostable_s {
DWORD dwSignature;
BYTE bVersion;
BYTE bLength;
WORD wControlField;
BYTE bChecksum;
DWORD dwEventNotification;
WORD wRMOffset;
WORD wRMSegment;
WORD wPMOffset;
DWORD dwPMSegment;
DWORD dwOEM;
WORD wRMData;
DWORD dwPMData;
} PNPBIOSTABLE, FAR *LPPNPBIOSTABLE;
typedef struct rsdptr_s
{
DWORD dwSigLo;
DWORD dwSigHi;
BYTE bChkSum;
char achOEMID[6];
BYTE abReserved[1];
DWORD dwRSDTAddr;
} RSDPTR, FAR *LPRSDPTR;
typedef struct { // Header structure appears at the beginning of each ACPI table
ULONG Signature; // Signature used to identify the type of table
ULONG Length; // Length of entire table including the DESCRIPTION_HEADER
BYTE Revision; // Minor version of ACPI spec to which this table conforms
BYTE Checksum; // sum of all bytes in the entire TABLE should = 0
BYTE OEMID[6]; // String that uniquely ID's the OEM
BYTE OEMTableID[8]; // String that uniquely ID's this table (used for table patching and replacement).
ULONG OEMRevision; // OEM supplied table revision number. Bigger number = newer table.
BYTE CreatorID[4]; // Vendor ID of utility which created this table.
ULONG CreatorRev; // Revision of utility that created the table.
} DESCRIPTION_HEADER, *PDESCRIPTION_HEADER;
typedef struct {
DESCRIPTION_HEADER Header;
DWORD Tables[1];
}RSDT, *PRSDT;
typedef struct { // Fixed ACPI description table
DESCRIPTION_HEADER Header;
ULONG facs; // Physical address of the Firmware ACPI Control Structure
ULONG dsdt; // Physical address of the Differentiated System Description Table
BYTE int_model; // System's Interrupt mode, 0=Dual PIC, 1=Multiple APIC, >1 reserved
BYTE reserved4;
WORD sci_int_vector; // Vector of SCI interrupt.
PBYTE smi_cmd_io_port; // Address in System I/O Space of the SMI Command port, used to enable and disable ACPI.
BYTE acpi_on_value; // Value out'd to smi_cmd_port to activate ACPI
BYTE acpi_off_value; // Value out'd to smi_cmd_port to deactivate ACPI
BYTE s4bios_req; // Value to write to SMI_CMD to enter the S4 state.
BYTE reserved1; // Must Be 0
ULONG pm1a_evt_blk_io_port; // Address in System I/O Space of the PM1a_EVT_BLK register block
ULONG pm1b_evt_blk_io_port; // Address in System I/O Space of the PM1b_EVT_BLK register block
ULONG pm1a_ctrl_blk_io_port; // Address in System I/O Space of the PM1a_CNT_BLK register block
ULONG pm1b_ctrl_blk_io_port; // Address in System I/O Space of the PM1b_CNT_BLK register block
ULONG pm2_ctrl_blk_io_port; // Address in System I/O Space of the PM2_CNT_BLK register block
ULONG pm_tmr_blk_io_port; // Address in System I/O Space of the PM_TMR register block
ULONG gp0_blk_io_port; // Address in System I/O Space of the GP0 register block
ULONG gp1_blk_io_port; // Address in System I/O Space of the GP1 register block
BYTE pm1_evt_len; // number of bytes decoded for PM1_BLK (must be >= 4)
BYTE pm1_ctrl_len; // number of bytes decoded for PM1_CNT (must be >= 2)
BYTE pm2_ctrl_len; // number of bytes decoded for PM1a_CNT (must be >= 1)
BYTE pm_tmr_len; // number of bytes decoded for PM_TMR (must be >= 4)
BYTE gp0_blk_len; // number of bytes decoded for GP0_BLK (must be multiple of 2)
BYTE gp1_blk_len; // number of bytes decoded for GP1_BLK (must be multiple of 2)
BYTE gp1_base; // index at which GP1 based events start
BYTE reserved2; // Must Be 0
WORD lvl2_latency; // Worst case latency in microseconds required to enter and leave the C2 processor state
WORD lvl3_latency; // Worst case latency in microseconds required to enter and leave the C3 processor state
WORD flush_size; // Ignored if WBINVD flag is 1 -- indicates size of memory read to flush dirty lines from
// any processors memory caches. A size of zero indicates this is not supported.
WORD flush_stride; // Ignored if WBINVD flag is 1 -- the memory stride width, in bytes, to perform reads to flush
// the processor's memory caches.
BYTE duty_offset; // zero based index of where the processor's duty cycle setting is within the processor's P_CNT register.
BYTE duty_width; // bit width of the processor's duty cycle setting value in the P_CNT register.
// a value of zero indicates that processor duty cycle is not supported
BYTE day_alarm_index;
BYTE month_alarm_index;
BYTE century_alarm_index;
BYTE reserved3[3];
ULONG flags;
}FADT, *PFADT;
#pragma pack()
/*** SDS Services prototypes
*/
LONG DLLENTRY SDSOpen(HWND hwnd, LPCSTR lpstrInfPath, LPCSTR lpstrLogPath,
DWORD dwfDetOpen, LPFNDCB lpfnCallBack,
LPSTR lpstrParams);
LONG DLLENTRY SDSClose(VOID);
LONG DLLENTRY SDSDetect(LPSTR lpstrClass, LPSTR lpstrFunc, WORD wfDetect,
DWORD dwDetParam);
LONG DLLENTRY SDSRegAvoidRes(LPSTR lpstrOwnerID, LPSTR lpstrOwnerInst,
int icIO, LPIOMEM lpaio,
int icMem, LPIOMEM lpamem,
int icIRQ, LPIRQDMA lpairq,
int icDMA, LPIRQDMA lpadma);
VOID DLLENTRY SDSGetErrMsg(LONG lErr, LPSTR lpstrBuff, int icbLen);
LONG DLLENTRY SDSEnumDetFunc(BOOL fFirst, LPFUNCSTATE lpFuncState);
LONG DLLENTRY SDSGetDetFuncState(LPFUNCSTATE lpFuncState);
LONG DLLENTRY SDSSetDetFuncState(LPFUNCSTATE lpFuncState);
LONG DLLENTRY SDSEnumSkippedClasses(BOOL fFirst, LPCLASSSTATE lpClassState);
LONG DLLENTRY SDSSetClassState(LPCLASSSTATE lpClassState);
/*** DMS Services prototypes
*/
VOID _loadds FAR CDECL WriteDetLog(int iLogLevel, LPCSTR lpstrFormat, ...);
VOID _loadds FAR CDECL CatMsg(LPCSTR lpstrFormat, ...);
VOID _loadds FAR CDECL EnterProc(int iTraceLevel, LPCSTR lpstrFormat, ...);
VOID _loadds FAR CDECL ExitProc(int iTraceLevel, LPCSTR lpstrFormat, ...);
VOID _loadds FAR CDECL PrintTrace(int iTraceLevel, LPCSTR lpstrFormat, ...);
LONG DLLENTRY DMSQueryIOMem(HDET hdet, int iResType, int icEntries,
LPIOMEM lpaiomem, LPOWNERINFO lpownerinfo);
LONG DLLENTRY DMSQueryIRQDMA(HDET hdet, int iResType, int icEntries,
LPIRQDMA lpairqdma, LPOWNERINFO lpownerinfo);
LONG DLLENTRY DMSRegHW(HDET hdet, LPSTR lpstrDevID, HKEY FAR *lphkHW,
int icIO, LPIOMEM lpaio,
int icMem, LPIOMEM lpamem,
int icIRQ, LPIRQDMA lpairq,
int icDMA, LPIRQDMA lpadma,
LPBYTE lpbVerifyKey, DWORD dwcbKeySize,
WORD wfRegHW);
int DLLENTRY DMSInp(unsigned uPort);
unsigned DLLENTRY DMSInpw(unsigned uPort);
DWORD DLLENTRY DMSInpdw(unsigned uPort);
int DLLENTRY DMSOutp(unsigned uPort, int iData);
unsigned DLLENTRY DMSOutpw(unsigned uPort, unsigned uData);
DWORD DLLENTRY DMSOutpdw(unsigned uPort, DWORD dwData);
int DLLENTRY DMSDetectIRQ(unsigned uIRQMask, LPFNICB lpfnIntOn,
LPFNICB lpfnIntOff, DWORD dwParam);
BOOL DLLENTRY DMSTimeout(DWORD dwcTicks);
VOID DLLENTRY DMSDelayTicks(DWORD dwcTicks);
LPBYTE DLLENTRY DMSGetMemAlias(DWORD dwRealMemAddr, DWORD dwcbSize,
DWORD dwfMem);
VOID DLLENTRY DMSFreeMemAlias(LPBYTE lpbMemAlias);
LPFNGEN DLLENTRY DMSGetCodeAlias(DWORD dwCodeAddr, DWORD dwfMem);
VOID DLLENTRY DMSFreeCodeAlias(LPFNGEN lpfnCodeAlias);
LPBYTE DLLENTRY DMSFindMemStr(LPBYTE lpbAddr, DWORD dwcbSize, LPCSTR lpstr,
DWORD dwfMem);
LPBYTE DLLENTRY DMSFindMemPattern(LPBYTE lpbAddr, DWORD dwcbSize,
LPCBYTE lpbyte, DWORD dwcbLen,
DWORD dwfMem);
LONG DLLENTRY DMSQueryDosDev(DWORD dwDevHdrPtr, LPSTR lpstrDevName,
WORD wfDev, LPDOSDEV lpdosdev);
LONG DLLENTRY DMSQueryDosTSR(DWORD dwMCBPtr, LPSTR lpstrTSRName,
LPDOSTSR lpdostsr);
VOID DLLENTRY DMSQuerySysEnv(LPSYSENV lpsysenv);
LONG DLLENTRY DMSGetIHVEISADevSlots(LPCSTR lpstrIHVID);
LONG DLLENTRY DMSGetSlotEISAID(int iSlot, LPSTR lpstrDevID);
LONG DLLENTRY DMSGetEISAFuncConfig(int iSlot, int iFunc,
LPEISACONFIG lpcfg, LPSTR lpstrEISAID);
BOOL DLLENTRY DMSGetEISACardConfig(int iSlot, LPSTR lpstrDevID,
int FAR *lpicIO, LPIOMEM lpaio,
int FAR *lpicMem, LPIOMEM lpamem,
int FAR *lpicIRQ, LPIRQDMA lpairq,
int FAR *lpicDMA, LPIRQDMA lpadma,
WORD wcbTypeBuff, LPSTR lpstrTypeBuff);
LONG DLLENTRY DMSGetMCADevSlots(WORD wMCAID);
LONG DLLENTRY DMSGetSlotMCAID(int iSlot);
LONG DLLENTRY DMSInt86x(int iIntNum, LPREGS lpregsIn, LPREGS lpregsOut,
LPSREGS lpsregs);
LONG DLLENTRY DMSCheckInt86xCrash(HDET hdet, int iIntNum, int iAX);
BOOL DLLENTRY DMSQueryVerifyKey(LPBYTE lpbVerifyKey, DWORD dwcbKeySize,
WORD wfQuery);
LPSTR DLLENTRY DMSCatPath(LPSTR lpstrPath, LPSTR lpstrName);
BOOL DLLENTRY DMSGetPathItem(LPSTR FAR *lplpstrPathEnv, LPSTR lpstrBuff);
LPSTR DLLENTRY DMSGetWinDir(LPSTR lpstrWinDir, int icbBuffLen);
LPFNPROC DLLENTRY DMSRegRing0Proc(LPFNPROC lpfnR3Proc, int icwArg);
VOID DLLENTRY DMSFreeRing0Proc(LPFNPROC lpfnR0Proc);
LONG DLLENTRY DMSCallRMProc(DWORD dwRMProcPtr, BOOL fReset, LPRMCS lprmcs,
LPWORD lpawStack, WORD wStackSize);
LONG DLLENTRY DMSSetVar(LPSTR lpstrVar, LPBYTE lpbData, DWORD dwcbData);
LONG DLLENTRY DMSGetVar(LPSTR lpstrVar, LPBYTE lpbBuff, DWORD dwcbBuff,
LPDWORD lpdwcbData);
DWORD DLLENTRY DMSFindIOROMStr(LPSTR lpstr, DWORD dwfMem);
LONG DLLENTRY DMSParseCfgSysDev(HINF hinf, LPSTR lpstrSect,
LPIOMEM lpaiomem, int icIOMem,
LPIOMEM FAR *lplpaio, int FAR *lpicIO,
LPIOMEM FAR *lplpamem, int FAR *lpicMem,
LPIRQDMA lpairqdma, int icIRQDMA,
LPIRQDMA FAR *lplpairq, int FAR *lpicIRQ,
LPIRQDMA FAR *lplpadma, int FAR *lpicDMA,
WORD FAR *lpwfReg);
LONG DLLENTRY DMSParseIniDev(HINF hinf, LPSTR lpstrSect,
LPIOMEM lpaiomem, int icIOMem,
LPIOMEM FAR *lplpaio, int FAR *lpicIO,
LPIOMEM FAR *lplpamem, int FAR *lpicMem,
LPIRQDMA lpairqdma, int icIRQDMA,
LPIRQDMA FAR *lplpairq, int FAR *lpicIRQ,
LPIRQDMA FAR *lplpadma, int FAR *lpicDMA,
WORD FAR *lpwfReg);
LONG DLLENTRY DMSParseEnvDev(HINF hinf, LPSTR lpstrSect,
LPIOMEM lpaiomem, int icIOMem,
LPIOMEM FAR *lplpaio, int FAR *lpicIO,
LPIOMEM FAR *lplpamem, int FAR *lpicMem,
LPIRQDMA lpairqdma, int icIRQDMA,
LPIRQDMA FAR *lplpairq, int FAR *lpicIRQ,
LPIRQDMA FAR *lplpadma, int FAR *lpicDMA,
WORD FAR *lpwfReg);
LONG DLLENTRY DMSParseRes(LPSTR lpstrRes, LPIOMEM lpaiomem, int icIOMem,
LPIOMEM FAR *lplpaio, int FAR *lpicIO,
LPIOMEM FAR *lplpamem, int FAR *lpicMem,
LPIRQDMA lpairqdma, int icIRQDMA,
LPIRQDMA FAR *lplpairq, int FAR *lpicIRQ,
LPIRQDMA FAR *lplpadma, int FAR *lpicDMA,
WORD FAR *lpwfReg);
HWND DLLENTRY DMSGetHWnd(VOID);
LPSTR DLLENTRY DMSGetWinBootPath(LPSTR lpstrWinBootPath, int icbBuffLen);
LONG DLLENTRY DMSRegAvoidRes(LPSTR lpstrOwnerID, LPSTR lpstrOwnerInst,
int icIO, LPIOMEM lpaio,
int icMem, LPIOMEM lpamem,
int icIRQ, LPIRQDMA lpairq,
int icDMA, LPIRQDMA lpadma);
DWORD DLLENTRY DMSMakeVerifyKey(LPSTR lpstrDevID);
LONG DLLENTRY DMSRegSkipList(LPSTR lpstrSkipList);
DWORD DLLENTRY DMSGetCompaqMachineID(LPBYTE lpbFlags);
LPPNPBIOSTABLE DLLENTRY DMSGetPnpBiosTable(VOID);
BOOL DLLENTRY DMSMatchInfList(LPSTR lpstrInfFile, LPSTR lpstrInfSection, BOOL fMatchAllDescriptions);
LONG DLLENTRY DMSAdvanceProgress(int icUnits);
BYTE DLLENTRY DMSComputeCheckSum(LPBYTE lpb, DWORD dwLen);
DWORD DLLENTRY DMSGetRSDPTR(VOID);
DWORD DLLENTRY DMSFindACPITable(DWORD dwSig, LPDWORD lpdwLen);
LONG DLLENTRY DMSInvalidateCrashLog(VOID);
/*** Module function error codes
*/
#define MODERR_NONE 0L //no error
#define MODERR_SDMERR 0x80008001 //sysdetmg error
#define MODERR_REGERR 0x80008002 //cannot access registry
#define MODERR_UNRECOVERABLE 0x80000003 //unrecoverable error
#endif //_INC_SYSDETMG
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?