ssdefs.h
来自「用于查询PC机上的USB端口是否有设备挂接上」· C头文件 代码 · 共 509 行 · 第 1/2 页
H
509 行
#define DMA_CHAN12 0xc0 //Get/SetSocket
#define DMA_CHAN13 0xd0 //Get/SetSocket
#define DMA_CHAN14 0xe0 //Get/SetSocket
#define DMA_CHAN15 0xf0 //Get/SetSocket
//Speed bits
#define SPEED_SIGN 0x80
#define SPEED_MANTISSA 0x78
#define SPEED_EXPONENT 0x07
//Socket bits
#define SKT_NUMMASK 0x0f
#define SKT_WIDTH16 0x00
#define SKT_WIDTH32 0x10
//Misc. Constants
#define EFLAGS_CARRY 0x00000001
#define EFLAGS_IF 0x00000200
#define NUM_PWR_ENTRIES 4
#define NUM_IF_ENTRIES 1
//Custom Interface index
#define IFID_ZV 0x00000141
/*** Type and Structure Definitions
*/
/*XLATOFF*/
typedef BYTE ADP;
typedef WORD BASE16;
typedef DWORD BASE32;
typedef WORD BCD;
typedef BYTE COUNT;
typedef BYTE EDC;
typedef BYTE FLAGS8;
typedef WORD FLAGS16;
typedef DWORD FLAGS32;
typedef BYTE IRQ;
typedef WORD COFFSET;
typedef BYTE WPAGE;
typedef BYTE PWRINDEX;
typedef BYTE RETCODE;
typedef WORD SIG;
typedef WORD WSIZE16;
typedef DWORD WSIZE32;
typedef BYTE SOCKET;
typedef BYTE SPEED;
typedef BYTE WINDOW;
typedef WORD SKTBITS;
typedef struct pwrentry_s //power level and valid signals (InqAdapter)
{
PWRINDEX bPowerLevel;
FLAGS8 bValidSignals;
} PWRENTRY;
typedef struct achartbl_s //InqAdapter
{
FLAGS16 wAdpCaps;
FLAGS32 dwActiveHi;
FLAGS32 dwActiveLo;
} ACHARTBL;
typedef struct schartbl_s //InqSocket
{
FLAGS16 wSktCaps;
FLAGS32 dwActiveHi;
FLAGS32 dwActiveLo;
FLAGS16 wDMAChannels;
WORD wNumCustomIF;
DWORD CustomIFTable[NUM_IF_ENTRIES];
} SCHARTBL;
typedef struct adapterinfo_s //InqAdapter
{
struct achartbl_s ACharTable;
WORD wNumPwrEntries;
struct pwrentry_s PwrTable[NUM_PWR_ENTRIES];
} ADAPTERINFO;
typedef struct memwintbl_s //InqWindow for memory windows
{
FLAGS16 wMemWndCaps; //windows capabilities flags
BASE16 wFirstByte; //system address of first byte
BASE16 wLastByte; //system address of last byte
WSIZE16 wMinSize; //minimum window size
WSIZE16 wMaxSize; //maximum window size
WSIZE16 wReqGran; //size granularity
WSIZE16 wReqBase; //window base alignment requirement
WSIZE16 wReqOffset; //alignment requirement for offsets
SPEED bSlowest; //slowest access speed for window
SPEED bFastest; //fastest access speed for window
} MEMWINTBL;
typedef struct memwin32tbl_s //InqWindow for big memory windows
{
FLAGS16 wMemWndCaps; //windows capabilities flags
BASE32 dwFirstByte; //system address of first byte
BASE32 dwLastByte; //system address of last byte
WSIZE32 dwMinSize; //minimum window size
WSIZE32 dwMaxSize; //maximum window size
WSIZE32 dwReqGran; //size granularity
WSIZE32 dwReqBase; //window base alignment requirement
WSIZE32 dwReqOffset; //alignment requirement for offsets
SPEED bSlowest; //slowest access speed for window
SPEED bFastest; //fastest access speed for window
} MEMWIN32TBL;
typedef struct iowintbl_s //InqWindow for I/O windows
{
FLAGS16 wIOWndCaps; //windows capabilities flags
BASE16 wFirstByte; //system address of first byte
BASE16 wLastByte; //system address of last byte
WSIZE16 wMinSize; //minimum window size
WSIZE16 wMaxSize; //maximum window size
WSIZE16 wReqGran; //size granularity
COUNT bAddrLines; //address lines decoded by window
FLAGS8 bEISASlot; //upper 4 I/O address lines for EISA
} IOWINTBL;
typedef struct iowin32tbl_s //InqWindow for I/O windows
{
FLAGS16 wIOWndCaps; //windows capabilities flags
BASE32 dwFirstByte; //system address of first byte
BASE32 dwLastByte; //system address of last byte
WSIZE32 dwMinSize; //minimum window size
WSIZE32 dwMaxSize; //maximum window size
WSIZE32 dwReqGran; //size granularity
COUNT bAddrLines; //address lines decoded by window
FLAGS8 bEISASlot; //upper 4 I/O address lines for EISA
} IOWIN32TBL;
/*XLATON*/
typedef struct dwframe_s {
DWORD r_edi;
DWORD r_esi;
DWORD r_ebp;
DWORD r_esp;
DWORD r_ebx;
DWORD r_edx;
DWORD r_ecx;
DWORD r_eax;
DWORD r_eflags;
} DWFRAME;
typedef struct wframe_s {
WORD r_di;
WORD wh_di;
WORD r_si;
WORD wh_si;
WORD r_bp;
WORD wh_bp;
WORD r_sp;
WORD wh_sp;
WORD r_bx;
WORD wh_bx;
WORD r_dx;
WORD wh_dx;
WORD r_cx;
WORD wh_cx;
WORD r_ax;
WORD wh_ax;
WORD r_flags;
WORD wh_flags;
} WFRAME;
typedef struct bframe_s {
DWORD b_edi;
DWORD b_esi;
DWORD b_ebp;
DWORD b_esp;
BYTE r_bl;
BYTE r_bh;
WORD bh_bx;
BYTE r_dl;
BYTE r_dh;
WORD bh_dx;
BYTE r_cl;
BYTE r_ch;
WORD bh_cx;
BYTE r_al;
BYTE r_ah;
WORD bh_ax;
DWORD b_eflags;
} BFRAME;
/*XLATOFF*/
typedef union paramframe_s
{
struct dwframe_s dw;
struct wframe_s w;
struct bframe_s b;
} PARAMFRAME;
typedef PARAMFRAME *PPARAMFRAME;
/*** Macros
*/
//Register bindings for socket services parameters
#define P_EFLAGS(p) ((p)->dw.r_eflags)
#define P_FUNC(p) ((p)->b.r_ah)
#define P_RETCODE(p) ((p)->b.r_ah)
#define P_ADP(p) ((p)->b.r_al)
#define P_COMPLIANCE(p) ((p)->w.r_bx)
#define P_WINDOW(p) ((p)->b.r_bh)
#define P_NUMWINS(p) ((p)->b.r_bh)
#define P_SCINTCAPS(p) ((p)->b.r_bh)
#define P_SCINTMASK(p) ((p)->b.r_bh)
#define P_CARDSTATE(p) ((p)->b.r_bh)
#define P_NUMSKTS(p) ((p)->b.r_bl)
#define P_WINCAPS(p) ((p)->b.r_bl)
#define P_SOCKET(p) ((p)->b.r_bl)
#define P_PAGE(p) ((p)->b.r_bl)
#define P_TYPE(p) ((p)->b.r_bl)
#define P_NUMEDCS(p) ((p)->w.r_cx)
#define P_SOCKETS(p) ((p)->w.r_cx)
#define P_WINSIZE(p) ((p)->dw.r_ecx)
#define P_NUMADPS(p) ((p)->b.r_ch)
#define P_VCONTROL(p) ((p)->b.r_ch)
#define P_FIRSTADP(p) ((p)->b.r_cl)
#define P_VPPLEVELS(p) ((p)->b.r_cl)
#define P_NUMBWINS(p) ((p)->w.r_dx)
#define P_RELEASE(p) ((p)->w.r_dx)
#define P_WIN32(p) ((p)->b.r_dh)
#define P_STATE(p) ((p)->b.r_dh)
#define P_SCRPTCAPS(p) ((p)->b.r_dh)
#define P_SPEED(p) ((p)->b.r_dl)
#define P_CTLINDCAPS(p) ((p)->b.r_dl)
#define P_CTLIND(p) ((p)->b.r_dl)
#define P_PAGESTATE(p) ((p)->b.r_dl)
#define P_SCROUTING(p) ((p)->w.r_di)
#define P_BASE(p) ((p)->dw.r_edi)
#define P_OFFSET(p) ((p)->w.r_di)
#define P_IF_ROUTING(p) ((p)->w.r_di)
#define P_PBUFFER(p) ((p)->dw.r_edi)
#define P_IFINDEX(p) ((p)->w.r_bp)
#define SETUPCARRY(p) { \
if (P_RETCODE(p) == SSERR_SUCCESS) \
P_EFLAGS(p) &= ~EFLAGS_CARRY; \
else \
P_EFLAGS(p) |= EFLAGS_CARRY; \
}
/*XLATON*/
#endif //ifndef _SSDEFS_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?