winscard_msg.h

Go to the documentation of this file.
00001 /*
00002  * MUSCLE SmartCard Development ( http://www.linuxnet.com )
00003  *
00004  * Copyright (C) 2001-2004
00005  *  David Corcoran <corcoran@linuxnet.com>
00006  *  Damien Sauveron <damien.sauveron@labri.fr>
00007  *  Ludovic Rousseau <ludovic.rousseau@free.fr>
00008  *
00009  * $Id: winscard_msg.h 2308 2007-01-06 20:26:57Z rousseau $
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; /* was request_id in pcsc-lite <= 1.2.0 */
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      * Now some function definitions
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

Generated on Wed Mar 26 13:31:37 2008 for pcsc-lite by  doxygen 1.5.2