📄 pcsccom.h
字号:
//pcsccom.h
#ifndef __PCSCCOM_H__
#define __PCSCCOM_H__
#ifdef _ExportLib
#define PCSCCOM_API __declspec(dllexport)
#else
#define PCSCCOM_API __declspec(dllimport)
#endif
//define protocol type
#define PCSC_T0 0
#define PCSC_T1 1
#define PCSC_SLE4428 2
#define PCSC_SLE4442 3
#define PCSC_SLE4406 4
#define PCSC_AT24C01 5
//define error code
#define FAIL_READ_DATA 0x1111 //failed to read data from communication port
#define WRONG_RETURN_FORMAT 0x3333 //fromat of returning data is wrong
#define FAIL_SET_T1 0x4444 //failed to set T=1 protocol
#define WRONG_READ_LENGTH 0x5555 //length of reading data is wrong
#define WRONG_INS_STRUCT 0x7777 //instruction struct is wrong
#define FAIL_COMMUNICATE 0xFFFF //failed to communicate
//define data struct
typedef struct //PCSCCOM_STRUCT
{
HANDLE hPortFile;
BOOL bOpen;
UINT nProtocolType;
BOOL fAPDUHead;
BOOL fConnect;
BOOL fReadReady;
HANDLE ReceiveThread;
DWORD ReceiveThreadID;
HANDLE hCardChangedMutex;
HANDLE ReceiveEvent;
OVERLAPPED WOverlapped;
OVERLAPPED ROverlapped;
CHAR LastReceivedBuffer[560];
INT LastReceivedLength;
UINT nTryConnect;
}PCSCCOM_STRUCT;
//declare global variable
extern PCSCCOM_STRUCT g_STUPortArray[256];
#ifdef __cplusplus
extern "C"
{
#endif
//IC function
BOOL PCSCCOM_API bOpenPort(UINT nPortNum);//nPortNum = 0 : COM1
UINT PCSCCOM_API iConnectCard(UINT nPortNum, UINT nProtocolType, BYTE *pATR, UINT *nATRLen);
UINT PCSCCOM_API iTransmitAPDU(UINT nPortNum, BYTE *pInData, UINT nInDataLen, BYTE *pOutData, UINT *nOutDataLen);
UINT PCSCCOM_API iDisconnectCard(UINT nPortNum);
void PCSCCOM_API ClosePort(UINT nPortNum);
DWORD WINAPI PortThreadProc( LPVOID lpParam );
//////////////////////////////////////////
//incoming
BOOL PCSCCOM_API bReadData(UINT nPortNum, BYTE *pReadBuf, UINT *nReadDataLen);
//outgoing
BOOL PCSCCOM_API bWriteData(UINT nPortNum, CHAR *pWriteBuf, UINT nWriteDataLen);
UINT PCSCCOM_API bSetMemoryICType(UINT nPortNum, CHAR* pMemoryICType, UINT nICTypeLen);
///////assisant function
BYTE PCSCCOM_API cSumParityByte(BYTE *pInData, UINT nInDataLen);
BOOL PCSCCOM_API bCheckParityByte(BYTE *pInData, UINT nInDataLen, BYTE cCheckParityByte);
BOOL PCSCCOM_API nPackHexToByte(BYTE *pInData, UINT nInDataLen, BYTE *pOutData, UINT *nOutDataLen);
void PCSCCOM_API pcscWriteErrorLog(char szErrorMsg[1024],UINT nErrLogType=1);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -