Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenwinsmcrd.h
Go to the documentation of this file.
00001 /* 00002 * WinSmCrd.h 00003 * 00004 * SmartCard IOCTLs 00005 * 00006 * THIS SOFTWARE IS NOT COPYRIGHTED 00007 * 00008 * This source code is offered for use in the public domain. You may 00009 * use, modify or distribute it freely. 00010 * 00011 * This code is distributed in the hope that it will be useful but 00012 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00013 * DISCLAIMED. This includes but is not limited to warranties of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00015 * 00016 */ 00017 00018 #ifndef __WINSMCRD_H 00019 #define __WINSMCRD_H 00020 00021 #ifdef __cplusplus 00022 extern "C" { 00023 #endif 00024 00025 #ifdef _MSC_VER 00026 #pragma warning(push) 00027 #pragma warning(disable:4820) 00028 #endif 00029 00030 typedef struct _SCARD_IO_REQUEST 00031 { 00032 DWORD dwProtocol; 00033 DWORD cbPciLength; 00034 } SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST; 00035 typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST; 00036 00037 typedef struct _SCARD_T0_COMMAND 00038 { 00039 BYTE bCla; 00040 BYTE bIns; 00041 BYTE P1; 00042 BYTE P2; 00043 BYTE P3; 00044 } SCARD_T0_COMMAND, *PSCARD_T0_COMMAND, *LPSCARD_T0_COMMAND; 00045 00046 typedef struct _SCARD_T0_REQUEST 00047 { 00048 SCARD_IO_REQUEST ioRequest; 00049 BYTE bSw1; 00050 BYTE bSw2; 00051 union 00052 { 00053 SCARD_T0_COMMAND CmdBytes; 00054 BYTE rgbHeader[5]; 00055 } u; 00056 } SCARD_T0_REQUEST, *PSCARD_T0_REQUEST, *LPSCARD_T0_REQUEST; 00057 00058 typedef struct _SCARD_T1_REQUEST 00059 { 00060 SCARD_IO_REQUEST ioRequest; 00061 } SCARD_T1_REQUEST, *PSCARD_T1_REQUEST, *LPSCARD_T1_REQUEST; 00062 00063 #define FILE_DEVICE_SMARTCARD 49 00064 00065 #define SCARD_ATR_LENGTH (0x21) 00066 00067 #define SCARD_PROTOCOL_UNDEFINED (0x00000) 00068 #define SCARD_PROTOCOL_T0 (0x00001) 00069 #define SCARD_PROTOCOL_T1 (0x00002) 00070 #define SCARD_PROTOCOL_RAW (0x10000) 00071 00072 #define SCARD_PROTOCOL_Tx (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1) 00073 00074 #define SCARD_PROTOCOL_DEFAULT (0x80000000) 00075 #define SCARD_PROTOCOL_OPTIMAL (0x00000000) 00076 00077 #define SCARD_T0_HEADER_LENGTH (0x7) 00078 #define SCARD_T0_CMD_LENGTH (0x5) 00079 00080 #define SCARD_T1_PROLOGUE_LENGTH (0x03) 00081 #define SCARD_T1_EPILOGUE_LENGTH (0x02) 00082 #define SCARD_T1_MAX_IFS (0xFE) 00083 00084 #define SCARD_POWER_DOWN (0x0) 00085 #define SCARD_COLD_RESET (0x1) 00086 #define SCARD_WARM_RESET (0x2) 00087 00088 #define SCARD_UNKNOWN (0x0) 00089 #define SCARD_ABSENT (0x1) 00090 #define SCARD_PRESENT (0x2) 00091 #define SCARD_SWALLOWED (0x3) 00092 #define SCARD_POWERED (0x4) 00093 #define SCARD_NEGOTIABLE (0x5) 00094 #define SCARD_SPECIFIC (0x6) 00095 00096 #define IOCTL_SMARTCARD_POWER CTL_CODE(FILE_DEVICE_SMARTCARD, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) 00097 #define IOCTL_SMARTCARD_GET_ATTRIBUTE CTL_CODE(FILE_DEVICE_SMARTCARD, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) 00098 #define IOCTL_SMARTCARD_SET_ATTRIBUTE CTL_CODE(FILE_DEVICE_SMARTCARD, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) 00099 #define IOCTL_SMARTCARD_CONFISCATE CTL_CODE(FILE_DEVICE_SMARTCARD, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) 00100 #define IOCTL_SMARTCARD_TRANSMIT CTL_CODE(FILE_DEVICE_SMARTCARD, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) 00101 #define IOCTL_SMARTCARD_EJECT CTL_CODE(FILE_DEVICE_SMARTCARD, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) 00102 #define IOCTL_SMARTCARD_SWALLOW CTL_CODE(FILE_DEVICE_SMARTCARD, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) 00103 #define IOCTL_SMARTCARD_READ CTL_CODE(FILE_DEVICE_SMARTCARD, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) 00104 #define IOCTL_SMARTCARD_WRITE CTL_CODE(FILE_DEVICE_SMARTCARD, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) 00105 #define IOCTL_SMARTCARD_IS_PRESENT CTL_CODE(FILE_DEVICE_SMARTCARD, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) 00106 #define IOCTL_SMARTCARD_IS_ABSENT CTL_CODE(FILE_DEVICE_SMARTCARD, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) 00107 #define IOCTL_SMARTCARD_SET_PROTOCOL CTL_CODE(FILE_DEVICE_SMARTCARD, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) 00108 #define IOCTL_SMARTCARD_GET_STATE CTL_CODE(FILE_DEVICE_SMARTCARD, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) 00109 #define IOCTL_SMARTCARD_GET_LAST_ERROR CTL_CODE(FILE_DEVICE_SMARTCARD, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) 00110 #define IOCTL_SMARTCARD_GET_PERF_CNTR CTL_CODE(FILE_DEVICE_SMARTCARD, 16, METHOD_BUFFERED, FILE_ANY_ACCESS) 00111 00112 #define MAXIMUM_ATTR_STRING_LENGTH (0x10) 00113 #define MAXIMUM_SMARTCARD_READERS (0x0A) 00114 00115 #define SCARD_CLASS_VENDOR_INFO (0x0001) 00116 #define SCARD_CLASS_COMMUNICATIONS (0x0002) 00117 #define SCARD_CLASS_PROTOCOL (0x0003) 00118 #define SCARD_CLASS_POWER_MGMT (0x0004) 00119 #define SCARD_CLASS_SECURITY (0x0005) 00120 #define SCARD_CLASS_MECHANICAL (0x0006) 00121 #define SCARD_CLASS_VENDOR_DEFINED (0x0007) 00122 #define SCARD_CLASS_IFD_PROTOCOL (0x0008) 00123 #define SCARD_CLASS_ICC_STATE (0x0009) 00124 #define SCARD_CLASS_PERF (0x7FFE) 00125 #define SCARD_CLASS_SYSTEM (0x7FFF) 00126 00127 #define SCARD_READER_TYPE_VENDOR (0xF0) 00128 00129 #define SCARD_READER_TYPE_SERIAL (0x01) 00130 #define SCARD_READER_TYPE_PARALELL (0x02) 00131 #define SCARD_READER_TYPE_KEYBOARD (0x04) 00132 #define SCARD_READER_TYPE_SCSI (0x08) 00133 #define SCARD_READER_TYPE_IDE (0x10) 00134 #define SCARD_READER_TYPE_USB (0x20) 00135 #define SCARD_READER_TYPE_PCMCIA (0x40) 00136 00137 #define SCARD_READER_SWALLOWS (0x1) 00138 #define SCARD_READER_EJECTS (0x2) 00139 #define SCARD_READER_CONFISCATES (0x4) 00140 00141 #define SCARD_ATTR_VALUE(Class, Tag) \ 00142 (((ULONG)(Class) << 16) | (ULONG)(Tag)) 00143 00144 #define SCARD_ATTR_VENDOR_NAME SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0100) 00145 #define SCARD_ATTR_VENDOR_IFD_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0101) 00146 #define SCARD_ATTR_VENDOR_IFD_VERSION SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0102) 00147 #define SCARD_ATTR_VENDOR_IFD_SERIAL_NO SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0103) 00148 00149 #define SCARD_ATTR_CHANNEL_ID SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS, 0x0110) 00150 00151 #define SCARD_ATTR_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0120) 00152 #define SCARD_ATTR_ASYNC_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0120) 00153 #define SCARD_ATTR_DEFAULT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0121) 00154 #define SCARD_ATTR_MAX_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0122) 00155 #define SCARD_ATTR_DEFAULT_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0123) 00156 #define SCARD_ATTR_MAX_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0124) 00157 #define SCARD_ATTR_MAX_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0125) 00158 #define SCARD_ATTR_SYNC_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0126) 00159 00160 #define SCARD_ATTR_POWER_MGMT_SUPPORT SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT, 0x0131) 00161 00162 #define SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0140) 00163 #define SCARD_ATTR_USER_AUTH_INPUT_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0142) 00164 00165 #define SCARD_ATTR_CHARACTERISTICS SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL, 0x0150) 00166 00167 #define SCARD_ATTR_CURRENT_PROTOCOL_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0201) 00168 #define SCARD_ATTR_CURRENT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0202) 00169 #define SCARD_ATTR_CURRENT_F SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0203) 00170 #define SCARD_ATTR_CURRENT_D SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0204) 00171 #define SCARD_ATTR_CURRENT_N SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0205) 00172 #define SCARD_ATTR_CURRENT_W SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0206) 00173 #define SCARD_ATTR_CURRENT_IFSC SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0207) 00174 #define SCARD_ATTR_CURRENT_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0208) 00175 #define SCARD_ATTR_CURRENT_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0209) 00176 #define SCARD_ATTR_CURRENT_CWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020A) 00177 #define SCARD_ATTR_CURRENT_EBC_ENCODING SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020B) 00178 #define SCARD_ATTR_EXTENDED_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020C) 00179 00180 #define SCARD_ATTR_ICC_PRESENCE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0300) 00181 #define SCARD_ATTR_ICC_INTERFACE_STATUS SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0301) 00182 #define SCARD_ATTR_CURRENT_IO_STATE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0302) 00183 #define SCARD_ATTR_ATR_STRING SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0303) 00184 #define SCARD_ATTR_ICC_TYPE_PER_ATR SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0304) 00185 00186 #define SCARD_ATTR_ESC_RESET SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA000) 00187 #define SCARD_ATTR_ESC_CANCEL SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA003) 00188 #define SCARD_ATTR_ESC_AUTHREQUEST SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA005) 00189 #define SCARD_ATTR_MAXINPUT SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA007) 00190 00191 #define SCARD_ATTR_DEVICE_UNIT SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0001) 00192 #define SCARD_ATTR_DEVICE_IN_USE SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0002) 00193 #define SCARD_ATTR_DEVICE_FRIENDLY_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0003) 00194 #define SCARD_ATTR_DEVICE_SYSTEM_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0004) 00195 #define SCARD_ATTR_DEVICE_FRIENDLY_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0005) 00196 #define SCARD_ATTR_DEVICE_SYSTEM_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0006) 00197 #define SCARD_ATTR_SUPRESS_T1_IFS_REQUEST SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0007) 00198 00199 #define SCARD_PERF_NUM_TRANSMISSIONS SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0001) 00200 #define SCARD_PERF_BYTES_TRANSMITTED SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0002) 00201 #define SCARD_PERF_TRANSMISSION_TIME SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0003) 00202 00203 #ifdef UNICODE 00204 #define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_W 00205 #define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_W 00206 #else /* !UNICODE */ 00207 #define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_A 00208 #define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_A 00209 #endif /* UNICODE */ 00210 00211 #ifdef _MSC_VER 00212 #pragma warning(pop) 00213 #endif 00214 00215 #ifdef __cplusplus 00216 } 00217 #endif 00218 #endif /* __WINSMCRD_H */ 00219 00220 /* EOF */ Generated on Sun May 27 2012 04:32:47 for ReactOS by
1.7.6.1
|