📄 mbmsc.h
字号:
/******************************************************************************
* *
* MBMSC.h Smart Card functions, types, and definitions *
* *
* Version 1.00 -- 05/18/02 *
* *
******************************************************************************/
#ifndef __inc_mbmsc__h
#define __inc_mbmsc__h
#ifdef __cplusplus
extern "C" {
#endif
#include <winscard.h>
/* be aware of alignment */
#pragma pack(push,1)
#pragma pack(1)
typedef struct
{
BYTE Command[4];
SHORT LengthIn;
PBYTE DataIn;
SHORT LengthExpected;
} APDU_COMM;
typedef APDU_COMM * PAPDU_COMM;
#pragma pack()
#pragma pack(1)
typedef struct
{
SHORT LengthOut;
PBYTE DataOut;
WORD Status;
} APDU_RESP;
typedef APDU_RESP * PAPDU_RESP;
#pragma pack()
/****** SC functions ********************************************************/
/*
extern SHORT WINAPI NBSSCGetHWVersion(SHORT sChannelID, PCHAR pszVersion);
extern SHORT WINAPI NBSSCGetDLLVersion(PSHORT psVersion, PCHAR pszVersion);
extern VOID WINAPI NBSSCSetGeneration (INT iGeneration);
extern SHORT WINAPI NBSSCOpenChannel(SHORT sPort, DWORD dwBaudRate);
extern SHORT WINAPI NBSSCCloseChannel(SHORT sChannelID);
extern SHORT WINAPI NBSSCOpenSession(SHORT sChannelID, SHORT sCardType, PSESSION_INFO_STRU pSession);
extern SHORT WINAPI NBSSCCloseSession(SHORT sChannelID);
extern SHORT WINAPI NBSSCGetCmdTimeout(SHORT sChannelID, PLONG plTimeout);
extern SHORT WINAPI NBSSCSetCmdTimeout(SHORT sChannelID, LONG lTimeout);
extern SHORT WINAPI NBSSCExchangeApdu(SHORT sChannelID, PAPDU_COMM_STRU pApduComm, PAPDU_RESP_STRU pApduResp);
extern SHORT WINAPI NBSSCSetProtocolParm(SHORT sChannelID, SHORT sFI, SHORT sDI, SHORT sProtocol, DWORD * pdwBaudRate, PSESSION_INFO_STRU pSession);
extern SHORT WINAPI NBSSCCardDetect(SHORT sChannelID);
extern VOID WINAPI NBSSCSetMultiHead (void);
extern VOID WINAPI NBSSCSetSingleHead (void);
extern SHORT WINAPI NBSSCSetSCRProtocol (SHORT sChannelID, BYTE Mode);
extern SHORT WINAPI NBSSCGetLibVersion (char * pszVersion);
*/
typedef DWORD SCHANDLE;
/* Type of reader */
#define READER_TYPE_PCSC 0x0000000001
#define READER_TYPE_NBSSC 0x0000000002
#define READER_TYPE_EZSC 0x0000000003
#define READER_TYPE_GCRSC 0x0000000004
#define MAX_ATR_SIZE 64
#define SC_MAIN_CARD 0
#define SC_SAM_CARD 1
#define SC_DEFAULT_CARD SC_MAIN_CARD
/*#define EZ_READER_TYPE_STR_LEN 17
#define DEFAULT_APDU_IN_SIZE 256
#define DEFAULT_APDU_OUT_SIZE 256*/
/* ATR Structure */
typedef struct{
BYTE CardType;
struct{
UCHAR Length;
UCHAR Buffer[MAX_ATR_SIZE];
}ATR;
}SC_ATR, *PSC_ATR;
/* PC/SC Reader name */
typedef struct {
BYTE baReaderName[40][50];
int iNoR;
}SC_READER;
extern void WINAPI SC_SetDebug(
IN BOOL Debug
);
/* List all PC/SC Readers */
extern LONG WINAPI SC_ListReaders(
OUT SC_READER *stReaderInfo
);
/* For NBS reader only */
extern VOID WINAPI SC_SetMultiHead (void);
extern VOID WINAPI SC_SetSingleHead (void);
extern VOID WINAPI SC_SetGeneration (INT iGeneration);
extern LONG WINAPI SC_ConnectReader(
IN DWORD dwReaderType,
IN DWORD dwSelectCard, // for EZNR SAM CARD ( ie one reader can use two card )
IN DWORD dwPortNumber, // for EZNR, NBS & GCR Reader - Com port number
IN DWORD dwBaudRate, // for EZNR, NBS & GCR Reader - Com port baud rate
IN LPSTR szReaderName, // for PCSC Reader - Reader name
OUT SCHANDLE *phHandle
);
extern LONG WINAPI SC_ConnectCard(
IN SCHANDLE hHandle,
IN DWORD dwSelectCard,
IN DWORD dwCardType,
IN DWORD dwPreferedProtocol,
OUT DWORD *pdwActiveProtocol,
OUT SC_ATR *lpATR
);
extern LONG WINAPI SC_DisconnectReader(
IN SCHANDLE hHandle,
IN DWORD dwSelectCard
);
extern LONG WINAPI SC_DisconnectCard(
IN SCHANDLE hHandle,
IN DWORD dwSelectCard
);
extern LONG WINAPI SC_CardDetect(
IN SCHANDLE hHandle,
IN DWORD dwSelectCard,
OUT DWORD *lpdwState
);
extern LONG WINAPI SC_ExchangeApdu(
IN SCHANDLE hHandle,
IN DWORD dwSelectCard,
IN PAPDU_COMM pApduComm,
IN PAPDU_RESP pApduResp
);
extern LONG WINAPI SC_Transmit(
IN SCHANDLE hHandle,
IN DWORD dwSelectCard,
IN LPBYTE pbSendBuffer,
IN DWORD dwSendLength,
OUT LPBYTE pbRecvBuffer,
IN OUT LPDWORD pdwRecvLength
);
/* restore alignment */
#pragma pack(pop)
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /* __inc_mbmsc__h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -