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

📄 mbmsc.h

📁 java 卡平台上的典型程序
💻 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 + -