winscard_msg.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00018 #ifndef __winscard_msg_h__
00019 #define __winscard_msg_h__
00020
00022 #define PROTOCOL_VERSION_MAJOR 2
00023
00024 #define PROTOCOL_VERSION_MINOR 2
00025
00026 #ifdef __cplusplus
00027 extern "C"
00028 {
00029 #endif
00030
00042 typedef struct rxSharedSegment
00043 {
00044 unsigned int mtype;
00045 unsigned int user_id;
00046 unsigned int group_id;
00047 unsigned int command;
00048 unsigned int dummy;
00049 time_t date;
00050 unsigned char key[PCSCLITE_MSG_KEY_LEN];
00051 unsigned char data[PCSCLITE_MAX_MESSAGE_SIZE];
00052 }
00053 sharedSegmentMsg, *psharedSegmentMsg;
00054
00058 enum pcsc_adm_commands
00059 {
00060 CMD_FUNCTION = 0xF1,
00061 CMD_FAILED = 0xF2,
00062 CMD_SERVER_DIED = 0xF3,
00063 CMD_CLIENT_DIED = 0xF4,
00064 CMD_READER_EVENT = 0xF5,
00065 CMD_SYN = 0xF6,
00066 CMD_ACK = 0xF7,
00067 CMD_VERSION = 0xF8
00068 };
00069
00073 enum pcsc_msg_commands
00074 {
00075 SCARD_ESTABLISH_CONTEXT = 0x01,
00076 SCARD_RELEASE_CONTEXT = 0x02,
00077 SCARD_LIST_READERS = 0x03,
00078 SCARD_CONNECT = 0x04,
00079 SCARD_RECONNECT = 0x05,
00080 SCARD_DISCONNECT = 0x06,
00081 SCARD_BEGIN_TRANSACTION = 0x07,
00082 SCARD_END_TRANSACTION = 0x08,
00083 SCARD_TRANSMIT = 0x09,
00084 SCARD_CONTROL = 0x0A,
00085 SCARD_STATUS = 0x0B,
00086 SCARD_GET_STATUS_CHANGE = 0x0C,
00087 SCARD_CANCEL = 0x0D,
00088 SCARD_CANCEL_TRANSACTION = 0x0E,
00089 SCARD_GET_ATTRIB = 0x0F,
00090 SCARD_SET_ATTRIB = 0x10,
00091 SCARD_TRANSMIT_EXTENDED = 0x11,
00092 SCARD_CONTROL_EXTENDED = 0x12
00093 };
00094
00098 struct version_struct
00099 {
00100 int major;
00101 int minor;
00102 LONG rv;
00103 };
00104 typedef struct version_struct version_struct;
00105
00106 struct client_struct
00107 {
00108 SCARDCONTEXT hContext;
00109 };
00110 typedef struct client_struct client_struct;
00111
00117 struct establish_struct
00118 {
00119 DWORD dwScope;
00120 SCARDCONTEXT phContext;
00121 LONG rv;
00122 };
00123 typedef struct establish_struct establish_struct;
00124
00130 struct release_struct
00131 {
00132 SCARDCONTEXT hContext;
00133 LONG rv;
00134 };
00135 typedef struct release_struct release_struct;
00136
00142 struct connect_struct
00143 {
00144 SCARDCONTEXT hContext;
00145 char szReader[MAX_READERNAME];
00146 DWORD dwShareMode;
00147 DWORD dwPreferredProtocols;
00148 SCARDHANDLE phCard;
00149 DWORD pdwActiveProtocol;
00150 LONG rv;
00151 };
00152 typedef struct connect_struct connect_struct;
00153
00159 struct reconnect_struct
00160 {
00161 SCARDHANDLE hCard;
00162 DWORD dwShareMode;
00163 DWORD dwPreferredProtocols;
00164 DWORD dwInitialization;
00165 DWORD pdwActiveProtocol;
00166 LONG rv;
00167 };
00168 typedef struct reconnect_struct reconnect_struct;
00169
00175 struct disconnect_struct
00176 {
00177 SCARDHANDLE hCard;
00178 DWORD dwDisposition;
00179 LONG rv;
00180 };
00181 typedef struct disconnect_struct disconnect_struct;
00182
00188 struct begin_struct
00189 {
00190 SCARDHANDLE hCard;
00191 LONG rv;
00192 };
00193 typedef struct begin_struct begin_struct;
00194
00200 struct end_struct
00201 {
00202 SCARDHANDLE hCard;
00203 DWORD dwDisposition;
00204 LONG rv;
00205 };
00206 typedef struct end_struct end_struct;
00207
00213 struct cancel_struct
00214 {
00215 SCARDHANDLE hCard;
00216 LONG rv;
00217 };
00218 typedef struct cancel_struct cancel_struct;
00219
00225 struct status_struct
00226 {
00227 SCARDHANDLE hCard;
00228 char mszReaderNames[MAX_READERNAME];
00229 DWORD pcchReaderLen;
00230 DWORD pdwState;
00231 DWORD pdwProtocol;
00232 UCHAR pbAtr[MAX_ATR_SIZE];
00233 DWORD pcbAtrLen;
00234 LONG rv;
00235 };
00236 typedef struct status_struct status_struct;
00237
00243 struct transmit_struct
00244 {
00245 SCARDHANDLE hCard;
00246 SCARD_IO_REQUEST pioSendPci;
00247 UCHAR pbSendBuffer[MAX_BUFFER_SIZE];
00248 DWORD cbSendLength;
00249 SCARD_IO_REQUEST pioRecvPci;
00250 BYTE pbRecvBuffer[MAX_BUFFER_SIZE];
00251 DWORD pcbRecvLength;
00252 LONG rv;
00253 };
00254 typedef struct transmit_struct transmit_struct;
00255
00261 struct transmit_struct_extended
00262 {
00263 SCARDHANDLE hCard;
00264 SCARD_IO_REQUEST pioSendPci;
00265 DWORD cbSendLength;
00266 SCARD_IO_REQUEST pioRecvPci;
00267 DWORD pcbRecvLength;
00268 LONG rv;
00269 size_t size;
00270 BYTE data[1];
00271 };
00272 typedef struct transmit_struct_extended transmit_struct_extended;
00273
00279 struct control_struct
00280 {
00281 SCARDHANDLE hCard;
00282 DWORD dwControlCode;
00283 UCHAR pbSendBuffer[MAX_BUFFER_SIZE];
00284 DWORD cbSendLength;
00285 UCHAR pbRecvBuffer[MAX_BUFFER_SIZE];
00286 DWORD cbRecvLength;
00287 DWORD dwBytesReturned;
00288 LONG rv;
00289 };
00290 typedef struct control_struct control_struct;
00291
00297 struct control_struct_extended
00298 {
00299 SCARDHANDLE hCard;
00300 DWORD dwControlCode;
00301 DWORD cbSendLength;
00302 DWORD cbRecvLength;
00303 DWORD pdwBytesReturned;
00304 LONG rv;
00305 size_t size;
00306 BYTE data[1];
00307 };
00308 typedef struct control_struct_extended control_struct_extended;
00309
00315 struct getset_struct
00316 {
00317 SCARDHANDLE hCard;
00318 DWORD dwAttrId;
00319 UCHAR pbAttr[MAX_BUFFER_SIZE];
00320 DWORD cbAttrLen;
00321 LONG rv;
00322 };
00323 typedef struct getset_struct getset_struct;
00324
00325
00326
00327
00328
00329 int SHMClientRead(psharedSegmentMsg, DWORD, int);
00330 int SHMClientSetupSession(PDWORD);
00331 int SHMClientCloseSession(DWORD);
00332 int SHMInitializeCommonSegment(void);
00333 int SHMProcessEventsContext(PDWORD, psharedSegmentMsg, int);
00334 int SHMProcessEventsServer(PDWORD, int);
00335 int SHMMessageSend(void *buffer, size_t buffer_size, int filedes,
00336 int blockAmount);
00337 int SHMMessageReceive(void *buffer, size_t buffer_size,
00338 int filedes, int blockAmount);
00339 int WrapSHMWrite(unsigned int command, DWORD dwClientID, unsigned int size,
00340 unsigned int blockAmount, void *data);
00341 void SHMCleanupSharedSegment(int, const char *);
00342
00343 #ifdef __cplusplus
00344 }
00345 #endif
00346
00347 #endif