ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

winsmcrd.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.