⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pccard.h

📁 用于查询PC机上的USB端口是否有设备挂接上
💻 H
📖 第 1 页 / 共 2 页
字号:

typedef struct GetStatus_s {
    LOG_SOCKET	Socket;
    WORD	CardState;
    WORD	SocketState;
} GET_STATUS_PKT;

// Get Status CardState bit definitions.

#define CRDS_WRITE_PROTECTED	0x0001
#define CRDS_CARD_LOCKED	0x0002
#define CRDS_EJECT_REQUEST	0x0004
#define CRDS_INSERT_REQUEST	0x0008
#define CRDS_BATTERY_DEAD	0x0010
#define CRDS_BATTERY_WARNING	0x0020
#define CRDS_READY		0x0040
#define CRDS_CARD_DETECTED	0x0080

// Get Status SocketState bit definitions.

#define SKTS_WRITE_PROTECT	0x0001
#define SKTS_CARD_LOCK		0x0002
#define SKTS_EJECT_REQUEST	0x0004
#define SKTS_INSERT_REQUEST	0x0008
#define SKTS_BATTERY_DEAD	0x0010
#define SKTS_BATTERY_WARNING	0x0020
#define SKTS_READY		0x0040
#define SKTS_CARD_DETECT	0x0080


//-----------------------------------------------------------------------------
// Get Tuple Data Structure.

typedef struct GetTupleData_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    BYTE	DesiredTuple;
    BYTE	TupleOffset;
    WORD	Flags;
    DWORD	LinkOffset;
    DWORD	CISOffset;
    WORD	TupleDataMax;
    WORD	TupleDataLen;
//  BYTE	TupleData[];
} GET_TUPLE_DATA_PKT;


//-----------------------------------------------------------------------------
// Map Logical/Physical Socket Structure.

typedef struct MapSocket_s {
    LOG_SOCKET	    LogSocket;
    PHY_ADAPTER     PhyAdapter;
    PHY_SOCKET	    PhySocket;
} MAP_SKT_PKT;


//-----------------------------------------------------------------------------
// Map Logical/Physical Window Structure.

typedef struct MapWindow_s {
    PHY_ADAPTER     PhyAdapter;
    PHY_WINDOW	    PhyWindow;
} MAP_WDW_PKT;


//-----------------------------------------------------------------------------
// Map Memory Page Structure.

typedef struct MapMemPage_s {
    DWORD   CardOffset;
    BYTE    PageNum;
} MAP_MEM_PAGE_PKT;


//-----------------------------------------------------------------------------
// Modify Configuration Structure.

typedef struct ModifyConfiguration_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    BYTE	Vcc;
    BYTE	Vpp1;
    BYTE	Vpp2;
} MODIFY_CONFIG_PKT;

// Modify Configuration Attribute bit definitions.

//	CFGA_ENABLE_IRQ     0x0002
#define CFGA_IRQ_CHG	    0x0004
#define CFGA_VCC_CHG	    0x0008
#define CFGA_VPP1_CHG	    0x0010
#define CFGA_VPP2_CHG	    0x0020


//-----------------------------------------------------------------------------
// Modify Window Structure.

typedef struct ModifyWindow_s {
    WORD   Attributes;
    BYTE   AccessSpeed;
} MODIFY_WDW_PKT;

// Modify Window Attribute bit definitions.

#define WDWA_ATTRIB_MEM 	0x0002
#define WDWA_ENABLED            0x0004
#define WDWA_SPEED_VALID        0x0008

// Modify Window AccessSpeed bit definitions.
//  These are the same as the Get Partition AccessSpeed bit definitions.


//-----------------------------------------------------------------------------
// Open Memory Structure.

typedef struct OpenMemory_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    DWORD	CardOffset;
} OPEN_MEM_PKT;

// Open Memory Attributes bit definitions.

#define OPMA_ATTRIB_MEM     0x0001
#define OPMA_EXCLUSIVE	    0x0002


//-----------------------------------------------------------------------------
// Read Memory Structure.

typedef struct ReadMemory_s {
    DWORD   CardOffset;
    DWORD   Count;
} READ_MEM_PKT;


//-----------------------------------------------------------------------------
// Register Client Structure.

typedef struct ClientData_s {
    WORD    ReferenceData;
    WORD    ReservedWord;
    DWORD   DataOffset;
} CLIENT_DATA;

typedef struct RegisterClient_s{
    WORD    Attributes;
    WORD    EventMask;
    struct ClientData_s ClientData;
    WORD    Version;
} REGISTER_CLT_PKT;

// Register Client Attributes bit definitions.
//  These are the same as the Client Info Attributes bit definitions.

// Register Client EventMask bit definitions.
//  These are the same as the Event Mask EventMask bit definitions.


//-----------------------------------------------------------------------------
// Register Erase Queue Structure.

typedef struct QueueEntry_s {
    WORD    MemoryHandle;
    BYTE    EntryState;
    BYTE    EraseSize;
    DWORD   EraseOffset;
//  BYTE    Optional[];
} ERASE_Q_ENTRY;

typedef struct RegisterEraseQueue_s {
    WORD		QueueEntryLen;
    WORD		QueueEntryCnt;
//  struct QueueEntry_s QueueEntryArray[];
} REGISTER_ERASE_Q_PKT;

// Register Erase Queue EntryState definitions.

#define EQES_QUEUED_FOR_ERASE	    0x00
#define EQES_ERASE_IN_PROGRESS	    0x01  // 0x01 - 0x7F

#define EQES_MEDIA_MISSING	    0x80
#define EQES_MEDIA_WRITE_PROTECTED  0x84
#define EQES_MEDIA_NOT_ERASABLE     0x86
#define EQES_MEDIA_NOT_WRITABLE     0x87

#define EQES_BAD_OFFSET 	    0xC1
#define EQES_BAD_TECHNOLOGY	    0xC2
#define EQES_BAD_SOCKET 	    0xC3
#define EQES_BAD_VCC		    0xC4
#define EQES_BAD_VPP		    0xC5
#define EQES_BAD_SIZE		    0xC6

#define EQES_ERASE_PASSED	    0xE0
#define EQES_ERASE_FAILED	    0xE1

#define EQES_IDLE		    0xFF


//-----------------------------------------------------------------------------
// Register MTD Structure.

typedef struct RegisterMTD_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    DWORD	CardOffset;
    WORD	MTDMediaID;
} REGISTER_MTD_PKT;

// Register MTD Attributes bit definitions.
//  These are the same as the Get Partition Attributes bit definitions.


//-----------------------------------------------------------------------------
// MTD Request Callback Structure.

typedef struct MTDRequest_s  {
    WORD    PktLength;
    WORD    Socket;
    DWORD   SourceOffset;
    DWORD   DestOffset;
    DWORD   XferLength;
    UCHAR   Function;
    UCHAR   AccessSpeed;
    WORD    MTDID;
    WORD    MTDStatus;
    WORD    TimeoutCount;
    void *  MATDataPtr;
    void *  CardSetAddressPtr;
    void *  CardSetAutoIncPtr;
    void *  CardReadBytePtr;
    void *  CardReadWordPtr;
    void *  CardReadWordsPtr;
    void *  CardReadByteAIPtr;
    void *  CardReadWordAIPtr;
    void *  CardReadWordsAIPtr;
    void *  CardWriteBytePtr;
    void *  CardWriteWordPtr;
    void *  CardWriteWordsPtr;
    void *  CardWriteByteAIPtr;
    void *  CardWriteWordAIPtr;
    void *  CardWriteWordsAIPtr;
    void *  CardCompareBytePtr;
    void *  CardCompareByteAIPtr;
    void *  CardCompareWordsPtr;
    void *  CardCompareWordsAIPtr;
    void *  MTDHelperEntryPtr;
} MTD_REQUEST;

// MTD Request Function definitions.

#define MTDF_FUNC		0x03
#define MTDF_ERASE		0x00
#define MTDF_READ		0x01
#define MTDF_WRITE		0x02
#define MTDF_COPY		0x03

#define MTDF_DISABLE_ERASE	0x04
#define MTDF_VERIFY		0x08
#define MTDF_READY_CONT 	0x10
#define MTDF_TIMEOUT_CONT	0x20
#define MTDF_FIRST		0x40
#define MTDF_LAST		0x80

// MTD Request MTDStatus definitions.

#define MTDS_WAITREQ		0
#define MTDS_WAITTIMER		1
#define MTDS_WAITRDY		2
#define MTDS_WAITPOWER		3


//-----------------------------------------------------------------------------
// MTD Initialization Data Structure.

typedef struct MTDInit_s {
    LOG_SOCKET	Socket;
    DWORD	CardOffset;
} MTD_INIT;


//-----------------------------------------------------------------------------
// Register Timer Structure.

typedef struct RegisterTimer_s {
    WORD    WaitTicks;
} REGISTER_TIMER_PKT;


//-----------------------------------------------------------------------------
// Release Configuration Structure.

typedef struct ReleaseConfiguration_s {
    LOG_SOCKET	Socket;
} RELEASE_CONFIG_PKT;


//-----------------------------------------------------------------------------
// Release/Request Exclusive Structure.

typedef struct Exclusive_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
} EXCLUSIVE_PKT;


//-----------------------------------------------------------------------------
// Release I/O Structure.

typedef struct ReleaseIO_s {
    LOG_SOCKET		Socket;
    struct IOParms_s	IOParms[MAX_IO_WDWS_PER_SKT];
    BYTE		IOAddrLines;
} RELEASE_IO_PKT;


//-----------------------------------------------------------------------------
// Release IRQ Structure.

typedef struct ReleaseIRQ_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    BYTE	AssignedIRQ;
} RELEASE_IRQ_PKT;

// Release IRQ Attributes bit definitions.

#define IRQA_IRQ_TYPE_MASK      0x0003
#define IRQA_EXCLUSIVE          0
#define IRQA_TIME_MUX           1
#define IRQA_DYNAMIC            2

#define IRQA_FORCE_PULSE        0x0004
#define IRQA_FIRST_SHARED       0x0008
#define IRQA_PULSE_ALLOC        0x0100


//-----------------------------------------------------------------------------
// Release Socket Mask Structure.

typedef struct ReleaseSocketMask_s {
    LOG_SOCKET	Socket;
} RELEASE_SKT_MASK_PKT;


//-----------------------------------------------------------------------------
// Replace Socket Services Structure.

typedef struct ReplaceSocketServices_s {
    LOG_SOCKET	Socket;
    WORD	NumSockets;
    WORD	Attributes;
    VOID	*DataPointer;
} REPLACE_SS_PKT;


//-----------------------------------------------------------------------------
// Request Configuration Structure.

typedef struct RequestConfiguration_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    BYTE	Vcc;
    BYTE	Vpp1;
    BYTE	Vpp2;
    BYTE	IntType;
    DWORD	ConfigBase;
    BYTE	Status;
    BYTE	Pin;
    BYTE	Copy;
    BYTE	ConfigIndex;
    BYTE	Present;
} REQUEST_CONFIG_PKT;

// Request Configuration Attributes bit definitions.

//	CFGA_ENABLE_IRQ     0x0002	// Same as defined previously

// Request Configuration Present bit definitions.
//  These are the same as the Get Configuration CardValue bit definitions.

// Request Configuration IntType bit definitions.

#define CFGI_MEMORY	    0x01
#define CFGI_MEMORY_AND_IO  0x02


//-----------------------------------------------------------------------------
// Request I/O Structure.

typedef struct RequestIO_s {
    LOG_SOCKET		Socket;
    struct IOParms_s	IOParms[MAX_IO_WDWS_PER_SKT];
    BYTE		IOAddrLines;
} REQUEST_IO_PKT;


//-----------------------------------------------------------------------------
// Request IRQ Structure.

typedef struct RequestIRQ_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    BYTE	AssignedIRQ;
    BYTE	IRQInfo1;
    WORD	IRQInfo2;
} REQUEST_IRQ_PKT;

// Request IRQ Attributes bit definitions.
// These are the same as the Release IRQ Attributes bit definitions.

// Request IRQ IRQInfo1 bit definitions.

#define IRQI_NUMBER_MASK        0x0F

#define IRQI_NMI		0x01
#define IRQI_LOCK		0x02
#define IRQI_BERR		0x04
#define IRQI_VEND		0x08

#define IRQI_MASK		0x10
#define IRQI_LEVEL              0x20
#define IRQI_PULSE              0x40
#define IRQI_SHARE              0x80


//-----------------------------------------------------------------------------
// Request Socket Mask Structure.

typedef struct RequestSocketMask_s {
    LOG_SOCKET	Socket;
    WORD	EventMask;
} REQUEST_SKT_MASK_PKT;

// Request Socket Mask EventMask bit definitions.
//  These are the same as the Event Mask EventMask bit definitions.


//-----------------------------------------------------------------------------
// Request Window Structure.

typedef struct RequestWindow_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    DWORD	Base;
    DWORD	MemSize;
    BYTE	AccessSpeed;
} REQUEST_WDW_PKT;

// Request Window Attributes bit definitions.

//	WDWA_ATTRIB_MEM 	0x0002	// Same as defined previously
//	WDWA_ENABLED		0x0004	// Same as defined previously
#define WDWA_16BIT              0x0008
#define WDWA_PAGED              0x0010
#define WDWA_SHARED             0x0020
#define WDWA_FIRST_SHARED       0x0040
#define WDWA_OFFSETS_SIZED      0x0100

// Request Window AccessSpeed bit definitions.
//  These are the same as the Get Partition AccessSpeed bit definitions.


//-----------------------------------------------------------------------------
// Reset Card Structure.

typedef struct ResetCard_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
} RESET_CARD_PKT;


//-----------------------------------------------------------------------------
// Return Socket Services Entry Structure.

typedef struct ReturnSSEntry_s {
    WORD    Attributes;
} RETURN_SS_ENTRY_PKT;

// Return Socket Services Entry Attributes definitions.
//  These are the same as the Add Socket Services Attributes definitions.


//-----------------------------------------------------------------------------
// Set Region Structure.

typedef struct SetRegion_s {
    LOG_SOCKET	Socket;
    WORD	Attributes;
    DWORD	CardOffset;
    DWORD	RegionSize;
    DWORD	EffBlockSize;
    WORD	PartMultiple;
    WORD	JedecID;
    DWORD	BiasOffset;
    BYTE	AccessSpeed;
} SET_REGION_PKT;

// Set Region Attributes bit definitions.

//	MEMA_ATTRIB_MEM 	0x0001	// Same as defined previously
#define MEMA_DELETE_REGION	0x0002
//	MEMA_VIRTUAL		0x0100	// Same as defined previously

// Set Region AccessSpeed bit definitions.
//  These are the same as the Get Partition AccessSpeed bit definitions.


//-----------------------------------------------------------------------------
// Validate CIS Structure.

typedef struct ValidateCIS_s {
    LOG_SOCKET	Socket;
    WORD	Chains;
} VALIDATE_CIS_PKT;


//-----------------------------------------------------------------------------
// Vendor Specific Structure.

//typedef struct VendorSpecific_s {
//    WORD    InfoLen;
//    BYTE    VendorData[];
//} VENDOR_SPECIFIC_PKT;


//-----------------------------------------------------------------------------
// Write Memory Structure.

typedef struct WriteMemory_s {
    DWORD   CardOffset;
    DWORD   Count;
    WORD    Attributes;
} WRITE_MEM_PKT;

// Write Memory Attributes bit definitions.
//  These are the same as the Copy Memory Attributes bit definitions.


/* XLATOFF */
#pragma pack()				/* return packing to normal   */
/* XLATON */

#endif	// ifndef _PCCARD_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -