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 LPSTR Vendor_Name;
00033 LPSTR IFD_Type;
00034 DWORD IFD_Version;
00035 LPSTR 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 #define IFD_NO_SUCH_DEVICE 617
00144
00145 #ifndef RESPONSECODE_DEFINED_IN_WINTYPES_H
00146 typedef long RESPONSECODE;
00147 #endif
00148
00149
00150
00151
00152
00153
00154
00155
00156 #ifndef IFDHANDLERv2
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166 RESPONSECODE IFDHCreateChannelByName(DWORD, LPSTR);
00167 RESPONSECODE IFDHControl(DWORD, DWORD, PUCHAR, DWORD, PUCHAR,
00168 DWORD, LPDWORD);
00169 #else
00170
00171
00172
00173
00174
00175 RESPONSECODE IFDHControl(DWORD, PUCHAR, DWORD, PUCHAR, PDWORD);
00176
00177 #endif
00178
00179
00180
00181
00182 RESPONSECODE IFDHCreateChannel(DWORD, DWORD);
00183 RESPONSECODE IFDHCloseChannel(DWORD);
00184 RESPONSECODE IFDHGetCapabilities(DWORD, DWORD, PDWORD, PUCHAR);
00185 RESPONSECODE IFDHSetCapabilities(DWORD, DWORD, DWORD, PUCHAR);
00186 RESPONSECODE IFDHSetProtocolParameters(DWORD, DWORD, UCHAR,
00187 UCHAR, UCHAR, UCHAR);
00188 RESPONSECODE IFDHPowerICC(DWORD, DWORD, PUCHAR, PDWORD);
00189 RESPONSECODE IFDHTransmitToICC(DWORD, SCARD_IO_HEADER, PUCHAR,
00190 DWORD, PUCHAR, PDWORD, PSCARD_IO_HEADER);
00191 RESPONSECODE IFDHICCPresence(DWORD);
00192
00193
00194
00195
00196
00197 RESPONSECODE IO_Create_Channel(DWORD);
00198 RESPONSECODE IO_Close_Channel();
00199 RESPONSECODE IFD_Get_Capabilities(DWORD, PUCHAR);
00200 RESPONSECODE IFD_Set_Capabilities(DWORD, PUCHAR);
00201 RESPONSECODE IFD_Set_Protocol_Parameters(DWORD, UCHAR, UCHAR,
00202 UCHAR, UCHAR);
00203 RESPONSECODE IFD_Power_ICC(DWORD);
00204 RESPONSECODE IFD_Swallow_ICC();
00205 RESPONSECODE IFD_Eject_ICC();
00206 RESPONSECODE IFD_Confiscate_ICC();
00207 RESPONSECODE IFD_Transmit_to_ICC(SCARD_IO_HEADER, PUCHAR, DWORD,
00208 PUCHAR, PDWORD, PSCARD_IO_HEADER);
00209 RESPONSECODE IFD_Is_ICC_Present();
00210 RESPONSECODE IFD_Is_ICC_Absent();
00211
00212 #ifdef __cplusplus
00213 }
00214 #endif
00215
00216 #endif