📄 pccard.h
字号:
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 + -