00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00016 #ifndef _ifd_handler_h_
00017 #define _ifd_handler_h_
00018
00019 #include <pcsclite.h>
00020
00021 #ifdef __cplusplus
00022 extern "C"
00023 {
00024 #endif
00025
00026
00027
00028
00029
00030 typedef struct _DEVICE_CAPABILITIES
00031 {
00032 LPTSTR Vendor_Name;
00033 LPTSTR IFD_Type;
00034 DWORD IFD_Version;
00035 LPTSTR IFD_Serial;
00036 DWORD IFD_Channel_ID;
00037
00038 DWORD Asynch_Supported;
00039 DWORD Default_Clock;
00040 DWORD Max_Clock;
00041 DWORD Default_Data_Rate;
00042 DWORD Max_Data_Rate;
00043 DWORD Max_IFSD;
00044 DWORD Synch_Supported;
00045 DWORD Power_Mgmt;
00046 DWORD Card_Auth_Devices;
00047 DWORD User_Auth_Device;
00048 DWORD Mechanics_Supported;
00049 DWORD Vendor_Features;
00050 }
00051 DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
00052
00053 typedef struct _ICC_STATE
00054 {
00055 UCHAR ICC_Presence;
00056 UCHAR ICC_Interface_Status;
00057 UCHAR ATR[MAX_ATR_SIZE];
00058 UCHAR ICC_Type;
00059 }
00060 ICC_STATE, *PICC_STATE;
00061
00062 typedef struct _PROTOCOL_OPTIONS
00063 {
00064 DWORD Protocol_Type;
00065 DWORD Current_Clock;
00066 DWORD Current_F;
00067 DWORD Current_D;
00068 DWORD Current_N;
00069 DWORD Current_W;
00070 DWORD Current_IFSC;
00071 DWORD Current_IFSD;
00072 DWORD Current_BWT;
00073 DWORD Current_CWT;
00074 DWORD Current_EBC;
00075 }
00076 PROTOCOL_OPTIONS, *PPROTOCOL_OPTIONS;
00077
00078 typedef struct _SCARD_IO_HEADER
00079 {
00080 DWORD Protocol;
00081 DWORD Length;
00082 }
00083 SCARD_IO_HEADER, *PSCARD_IO_HEADER;
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 #define TAG_IFD_ATR 0x0303
00095 #define TAG_IFD_SLOTNUM 0x0180
00096 #define TAG_IFD_SLOT_THREAD_SAFE 0x0FAC
00097 #define TAG_IFD_THREAD_SAFE 0x0FAD
00098 #define TAG_IFD_SLOTS_NUMBER 0x0FAE
00099 #define TAG_IFD_SIMULTANEOUS_ACCESS 0x0FAF
00100
00101
00102
00103
00104
00105
00106
00107
00108 #define IFD_HVERSION_1_0 0x00010000
00109 #define IFD_HVERSION_2_0 0x00020000
00110 #define IFD_HVERSION_3_0 0x00030000
00111
00112
00113
00114
00115
00116
00117
00118
00119 #define IFD_POWER_UP 500
00120 #define IFD_POWER_DOWN 501
00121 #define IFD_RESET 502
00122
00123 #define IFD_NEGOTIATE_PTS1 1
00124 #define IFD_NEGOTIATE_PTS2 2
00125 #define IFD_NEGOTIATE_PTS3 4
00126
00127 #define IFD_SUCCESS 0
00128 #define IFD_ERROR_TAG 600
00129 #define IFD_ERROR_SET_FAILURE 601
00130 #define IFD_ERROR_VALUE_READ_ONLY 602
00131 #define IFD_ERROR_PTS_FAILURE 605
00132 #define IFD_ERROR_NOT_SUPPORTED 606
00133 #define IFD_PROTOCOL_NOT_SUPPORTED 607
00134 #define IFD_ERROR_POWER_ACTION 608
00135 #define IFD_ERROR_SWALLOW 609
00136 #define IFD_ERROR_EJECT 610
00137 #define IFD_ERROR_CONFISCATE 611
00138 #define IFD_COMMUNICATION_ERROR 612
00139 #define IFD_RESPONSE_TIMEOUT 613
00140 #define IFD_NOT_SUPPORTED 614
00141 #define IFD_ICC_PRESENT 615
00142 #define IFD_ICC_NOT_PRESENT 616
00143
00144
00145
00146
00147
00148
00149
00150
00151 #ifndef IFDHANDLERv2
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161 RESPONSECODE IFDHCreateChannelByName(DWORD, LPTSTR);
00162 RESPONSECODE IFDHControl(DWORD, DWORD, PUCHAR, DWORD, PUCHAR,
00163 DWORD, LPDWORD);
00164 #else
00165
00166
00167
00168
00169
00170 RESPONSECODE IFDHControl(DWORD, PUCHAR, DWORD, PUCHAR, PDWORD);
00171
00172 #endif
00173
00174
00175
00176
00177 RESPONSECODE IFDHCreateChannel(DWORD, DWORD);
00178 RESPONSECODE IFDHCloseChannel(DWORD);
00179 RESPONSECODE IFDHGetCapabilities(DWORD, DWORD, PDWORD, PUCHAR);
00180 RESPONSECODE IFDHSetCapabilities(DWORD, DWORD, DWORD, PUCHAR);
00181 RESPONSECODE IFDHSetProtocolParameters(DWORD, DWORD, UCHAR,
00182 UCHAR, UCHAR, UCHAR);
00183 RESPONSECODE IFDHPowerICC(DWORD, DWORD, PUCHAR, PDWORD);
00184 RESPONSECODE IFDHTransmitToICC(DWORD, SCARD_IO_HEADER, PUCHAR,
00185 DWORD, PUCHAR, PDWORD, PSCARD_IO_HEADER);
00186 RESPONSECODE IFDHICCPresence(DWORD);
00187
00188
00189
00190
00191
00192 RESPONSECODE IO_Create_Channel(DWORD);
00193 RESPONSECODE IO_Close_Channel();
00194 RESPONSECODE IFD_Get_Capabilities(DWORD, PUCHAR);
00195 RESPONSECODE IFD_Set_Capabilities(DWORD, PUCHAR);
00196 RESPONSECODE IFD_Set_Protocol_Parameters(DWORD, UCHAR, UCHAR,
00197 UCHAR, UCHAR);
00198 RESPONSECODE IFD_Power_ICC(DWORD);
00199 RESPONSECODE IFD_Swallow_ICC();
00200 RESPONSECODE IFD_Eject_ICC();
00201 RESPONSECODE IFD_Confiscate_ICC();
00202 RESPONSECODE IFD_Transmit_to_ICC(SCARD_IO_HEADER, PUCHAR, DWORD,
00203 PUCHAR, PDWORD, PSCARD_IO_HEADER);
00204 RESPONSECODE IFD_Is_ICC_Present();
00205 RESPONSECODE IFD_Is_ICC_Absent();
00206
00207 #ifdef __cplusplus
00208 }
00209 #endif
00210
00211 #endif