00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef CTDRIVER_PCSC_H
00030 #define CTDRIVER_PCSC_H "$Id: ctdriver_pcsc.h,v 1.3 2003/02/17 04:17:48 aquamaniac Exp $"
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036
00037 #include <winscard.h>
00038 #include <ctcore.h>
00039 #include <chameleon/libloader.h>
00040
00041
00042 typedef LONG (*CTDPCSCESTABLISHCONTEXTPTR)(DWORD dwScope,
00043 LPCVOID pvReserved1,
00044 LPCVOID pvReserved2,
00045 LPSCARDCONTEXT phContext);
00046 typedef LONG (*CTDPCSCRELEASECONTEXTPTR)(SCARDCONTEXT hContext);
00047 typedef LONG (*CTDPCSCLISTREADERSPTR)(SCARDCONTEXT hContext,
00048 LPCSTR mszGroups,
00049 LPSTR mszReaders,
00050 LPDWORD pcchReaders);
00051 typedef LONG (*CTDPCSCCONNECTPTR)(SCARDCONTEXT hContext,
00052 LPCSTR szReader,
00053 DWORD dwShareMode,
00054 DWORD dwPreferredProtocols,
00055 LPSCARDHANDLE phCard,
00056 LPDWORD pdwActiveProtocol);
00057 typedef LONG (*CTDPCSCRECONNECTPTR)(SCARDHANDLE phCard,
00058 DWORD dwShareMode,
00059 DWORD dwPreferredProtocols,
00060 DWORD dwInit,
00061 LPDWORD pdwActiveProtocol);
00062 typedef LONG (*CTDPCSCDISCONNECTPTR)(SCARDHANDLE hCard,
00063 DWORD dwDisposition);
00064 typedef LONG (*CTDPCSCCONTROLPTR)(SCARDHANDLE hCard,
00065 LPCBYTE pbSendBuffer,
00066 DWORD cbSendLength,
00067 LPBYTE pbRecvBuffer,
00068 LPDWORD pcbRecvLength);
00069 typedef LONG (*CTDPCSCTRANSMITPTR)(SCARDHANDLE hCard,
00070 LPCSCARD_IO_REQUEST pioSendPci,
00071 LPCBYTE pbSendBuffer,
00072 DWORD cbSendLength,
00073 LPCSCARD_IO_REQUEST pioRecvPci,
00074 LPBYTE pbRecvBuffer,
00075 LPDWORD pcbRecvLength);
00076 typedef LONG (*CTDPCSCSTATUSPTR)(SCARDHANDLE hCard,
00077 LPSTR szReaderName,
00078 LPDWORD pcchReaderLen,
00079 LPDWORD pdwState,
00080 LPDWORD pdwProtocol,
00081 LPBYTE pbAtr,
00082 LPDWORD pcbAtrLen);
00083
00084
00085
00086 typedef struct CTDRIVERPCSC_DRIVERDATASTRUCT CTDRIVERPCSC_DRIVERDATA;
00087 typedef struct CTDRIVERPCSC_READERDATASTRUCT CTDRIVERPCSC_READERDATA;
00088
00089
00090
00091 struct CTDRIVERPCSC_DRIVERDATASTRUCT {
00092 CTDPCSCESTABLISHCONTEXTPTR establishContext;
00093 CTDPCSCRELEASECONTEXTPTR releaseContext;
00094 CTDPCSCLISTREADERSPTR listReaders;
00095 CTDPCSCCONNECTPTR connect;
00096 CTDPCSCRECONNECTPTR reconnect;
00097 CTDPCSCDISCONNECTPTR disconnect;
00098 CTDPCSCCONTROLPTR control;
00099 CTDPCSCTRANSMITPTR transmit;
00100 CTDPCSCSTATUSPTR status;
00101 SCARDCONTEXT context;
00102 CHLIBLOADERHANDLE libHandle;
00103 };
00104
00105
00106 struct CTDRIVERPCSC_READERDATASTRUCT {
00107 SCARDHANDLE cardhandle;
00108 DWORD protocol;
00109 };
00110
00111
00112 ERRORCODE CTDriver_PCSC_Open(CTDRIVERTABLE *dt,
00113 CTREADERDESCRIPTION *rd,
00114 CONFIGGROUP *ddescr);
00115
00116 ERRORCODE CTDriver_PCSC_Close(CTDRIVERTABLE *dt);
00117
00118
00119 #ifdef __cplusplus
00120 }
00121 #endif
00122
00123
00124 #endif
00125
00126