6 * THIS SOFTWARE IS NOT COPYRIGHTED
8 * This source code is offered for use in the public domain. You may
9 * use, modify or distribute it freely.
11 * This code is distributed in the hope that it will be useful but
12 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
13 * DISCLAIMED. This includes but is not limited to warranties of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 #define SCARD_S_SUCCESS NO_ERROR
29 #define SCARD_F_INTERNAL_ERROR ((DWORD)0x80100001)
30 #define SCARD_E_CANCELLED ((DWORD)0x80100002)
31 #define SCARD_E_INVALID_HANDLE ((DWORD)0x80100003)
32 #define SCARD_E_INVALID_PARAMETER ((DWORD)0x80100004)
33 #define SCARD_E_INVALID_TARGET ((DWORD)0x80100005)
34 #define SCARD_E_NO_MEMORY ((DWORD)0x80100006)
35 #define SCARD_F_WAITED_TOO_LONG ((DWORD)0x80100007)
36 #define SCARD_E_INSUFFICIENT_BUFFER ((DWORD)0x80100008)
37 #define SCARD_E_UNKNOWN_READER ((DWORD)0x80100009)
38 #define SCARD_E_TIMEOUT ((DWORD)0x8010000A)
39 #define SCARD_E_SHARING_VIOLATION ((DWORD)0x8010000B)
40 #define SCARD_E_NO_SMARTCARD ((DWORD)0x8010000C)
41 #define SCARD_E_UNKNOWN_CARD ((DWORD)0x8010000D)
42 #define SCARD_E_CANT_DISPOSE ((DWORD)0x8010000E)
43 #define SCARD_E_PROTO_MISMATCH ((DWORD)0x8010000F)
44 #define SCARD_E_NOT_READY ((DWORD)0x80100010)
45 #define SCARD_E_INVALID_VALUE ((DWORD)0x80100011)
46 #define SCARD_E_SYSTEM_CANCELLED ((DWORD)0x80100012)
47 #define SCARD_F_COMM_ERROR ((DWORD)0x80100013)
48 #define SCARD_F_UNKNOWN_ERROR ((DWORD)0x80100014)
49 #define SCARD_E_INVALID_ATR ((DWORD)0x80100015)
50 #define SCARD_E_NOT_TRANSACTED ((DWORD)0x80100016)
51 #define SCARD_E_READER_UNAVAILABLE ((DWORD)0x80100017)
52 #define SCARD_P_SHUTDOWN ((DWORD)0x80100018)
53 #define SCARD_E_PCI_TOO_SMALL ((DWORD)0x80100019)
54 #define SCARD_E_READER_UNSUPPORTED ((DWORD)0x8010001A)
55 #define SCARD_E_DUPLICATE_READER ((DWORD)0x8010001B)
56 #define SCARD_E_CARD_UNSUPPORTED ((DWORD)0x8010001C)
57 #define SCARD_E_NO_SERVICE ((DWORD)0x8010001D)
58 #define SCARD_E_SERVICE_STOPPED ((DWORD)0x8010001E)
59 #define SCARD_E_UNEXPECTED ((DWORD)0x8010001F)
60 #define SCARD_E_ICC_INSTALLATION ((DWORD)0x80100020)
61 #define SCARD_E_ICC_CREATEORDER ((DWORD)0x80100021)
62 #define SCARD_E_UNSUPPORTED_FEATURE ((DWORD)0x80100022)
63 #define SCARD_E_DIR_NOT_FOUND ((DWORD)0x80100023)
64 #define SCARD_E_FILE_NOT_FOUND ((DWORD)0x80100024)
65 #define SCARD_E_NO_DIR ((DWORD)0x80100025)
66 #define SCARD_E_NO_FILE ((DWORD)0x80100026)
67 #define SCARD_E_NO_ACCESS ((DWORD)0x80100027)
68 #define SCARD_E_WRITE_TOO_MANY ((DWORD)0x80100028)
69 #define SCARD_E_BAD_SEEK ((DWORD)0x80100029)
70 #define SCARD_E_INVALID_CHV ((DWORD)0x8010002A)
71 #define SCARD_E_UNKNOWN_RES_MNG ((DWORD)0x8010002B)
72 #define SCARD_E_NO_SUCH_CERTIFICATE ((DWORD)0x8010002C)
73 #define SCARD_E_CERTIFICATE_UNAVAILABLE ((DWORD)0x8010002D)
74 #define SCARD_E_NO_READERS_AVAILABLE ((DWORD)0x8010002E)
75 #define SCARD_E_COMM_DATA_LOST ((DWORD)0x8010002F)
76 #define SCARD_E_NO_KEY_CONTAINER ((DWORD)0x80100030)
77 #define SCARD_W_UNSUPPORTED_CARD ((DWORD)0x80100065)
78 #define SCARD_W_UNRESPONSIVE_CARD ((DWORD)0x80100066)
79 #define SCARD_W_UNPOWERED_CARD ((DWORD)0x80100067)
80 #define SCARD_W_RESET_CARD ((DWORD)0x80100068)
81 #define SCARD_W_REMOVED_CARD ((DWORD)0x80100069)
82 #define SCARD_W_SECURITY_VIOLATION ((DWORD)0x8010006A)
83 #define SCARD_W_WRONG_CHV ((DWORD)0x8010006B)
84 #define SCARD_W_CHV_BLOCKED ((DWORD)0x8010006C)
85 #define SCARD_W_EOF ((DWORD)0x8010006D)
86 #define SCARD_W_CANCELLED_BY_USER ((DWORD)0x8010006E)
87 #define SCARD_W_CARD_NOT_AUTHENTICATED ((DWORD)0x8010006F)
89 #define SCARD_SHARE_EXCLUSIVE (0x1)
90 #define SCARD_SHARE_SHARED (0x2)
91 #define SCARD_SHARE_DIRECT (0x3)
93 #define SCARD_LEAVE_CARD (0x0)
94 #define SCARD_RESET_CARD (0x1)
95 #define SCARD_UNPOWER_CARD (0x2)
96 #define SCARD_EJECT_CARD (0x3)
98 #define SCARD_AUTOALLOCATE ((DWORD)-1)
99 #define SCARD_SCOPE_USER (0x0)
100 #define SCARD_SCOPE_TERMINAL (0x1)
101 #define SCARD_SCOPE_SYSTEM (0x2)
103 #define SCARD_PROVIDER_PRIMARY (0x1)
104 #define SCARD_PROVIDER_CSP (0x2)
106 typedef ULONG_PTR SCARDCONTEXT
, *PSCARDCONTEXT
, *LPSCARDCONTEXT
;
107 typedef ULONG_PTR SCARDHANDLE
, *PSCARDHANDLE
, *LPSCARDHANDLE
;
108 typedef const BYTE
*LPCBYTE
;
110 typedef struct _SCARD_READERSTATEA
114 DWORD dwCurrentState
;
118 } SCARD_READERSTATEA
, *PSCARD_READERSTATEA
, *LPSCARD_READERSTATEA
;
120 typedef struct _SCARD_READERSTATEW
124 DWORD dwCurrentState
;
128 } SCARD_READERSTATEW
, *PSCARD_READERSTATEW
, *LPSCARD_READERSTATEW
;
130 typedef struct _SCARD_ATRMASK
135 } SCARD_ATRMASK
, *PSCARD_ATRMASK
, *LPSCARD_ATRMASK
;
137 HANDLE WINAPI
SCardAccessStartedEvent(VOID
);
138 LONG WINAPI
SCardAddReaderToGroupA(SCARDCONTEXT
, LPCSTR
, LPCSTR
);
139 LONG WINAPI
SCardAddReaderToGroupW(SCARDCONTEXT
, LPCWSTR
, LPCWSTR
);
140 LONG WINAPI
SCardBeginTransaction(SCARDHANDLE
);
141 LONG WINAPI
SCardCancel(SCARDCONTEXT
);
142 LONG WINAPI
SCardConnectA(SCARDCONTEXT
, LPCSTR
, DWORD
, DWORD
, LPSCARDHANDLE
, LPDWORD
);
143 LONG WINAPI
SCardConnectW(SCARDCONTEXT
, LPCWSTR
, DWORD
, DWORD
, LPSCARDHANDLE
, LPDWORD
);
144 LONG WINAPI
SCardControl(SCARDHANDLE
, DWORD
, LPCVOID
, DWORD
, LPVOID
, DWORD
, LPDWORD
);
145 LONG WINAPI
SCardDisconnect(SCARDHANDLE
, DWORD
);
146 LONG WINAPI
SCardEndTransaction(SCARDHANDLE
, DWORD
);
147 LONG WINAPI
SCardEstablishContext(DWORD
, LPCVOID
, LPCVOID
, LPSCARDCONTEXT
);
148 LONG WINAPI
SCardForgetCardTypeA(SCARDCONTEXT
, LPCSTR
);
149 LONG WINAPI
SCardForgetCardTypeW(SCARDCONTEXT
, LPCWSTR
);
150 LONG WINAPI
SCardForgetReaderA(SCARDCONTEXT
, LPCSTR
);
151 LONG WINAPI
SCardForgetReaderW(SCARDCONTEXT
, LPCWSTR
);
152 LONG WINAPI
SCardForgetReaderGroupA(SCARDCONTEXT
, LPCSTR
);
153 LONG WINAPI
SCardForgetReaderGroupW(SCARDCONTEXT
, LPCWSTR
);
154 LONG WINAPI
SCardFreeMemory(SCARDCONTEXT
, LPCVOID
);
155 LONG WINAPI
SCardGetAttrib(SCARDHANDLE
, DWORD
, LPBYTE
, LPDWORD
);
156 LONG WINAPI
SCardGetCardTypeProviderNameA(SCARDCONTEXT
, LPCSTR
, DWORD
, LPSTR
, LPDWORD
);
157 LONG WINAPI
SCardGetCardTypeProviderNameW(SCARDCONTEXT
, LPCWSTR
, DWORD
, LPWSTR
, LPDWORD
);
158 LONG WINAPI
SCardGetProviderIdA(SCARDCONTEXT
, LPCSTR
, LPGUID
);
159 LONG WINAPI
SCardGetProviderIdW(SCARDCONTEXT
, LPCWSTR
, LPGUID
);
160 LONG WINAPI
SCardGetStatusChangeA(SCARDCONTEXT
, DWORD
, LPSCARD_READERSTATEA
, DWORD
);
161 LONG WINAPI
SCardGetStatusChangeW(SCARDCONTEXT
, DWORD
, LPSCARD_READERSTATEW
, DWORD
);
162 LONG WINAPI
SCardIntroduceCardTypeA(SCARDCONTEXT
, LPCSTR
, LPCGUID
, LPCGUID
, DWORD
, LPCBYTE
, LPCBYTE
, DWORD
);
163 LONG WINAPI
SCardIntroduceCardTypeW(SCARDCONTEXT
, LPCWSTR
, LPCGUID
, LPCGUID
, DWORD
, LPCBYTE
, LPCBYTE
, DWORD
);
164 LONG WINAPI
SCardIntroduceReaderA(SCARDCONTEXT
, LPCSTR
, LPCSTR
);
165 LONG WINAPI
SCardIntroduceReaderW(SCARDCONTEXT
, LPCWSTR
, LPCWSTR
);
166 LONG WINAPI
SCardIntroduceReaderGroupA(SCARDCONTEXT
, LPCSTR
);
167 LONG WINAPI
SCardIntroduceReaderGroupW(SCARDCONTEXT
, LPCWSTR
);
168 LONG WINAPI
SCardIsValidContext(SCARDCONTEXT
);
169 LONG WINAPI
SCardListCardsA(SCARDCONTEXT
, LPCBYTE
, LPCGUID
, DWORD
, LPCSTR
, LPDWORD
);
170 LONG WINAPI
SCardListCardsW(SCARDCONTEXT
, LPCBYTE
, LPCGUID
, DWORD
, LPCWSTR
, LPDWORD
);
171 LONG WINAPI
SCardListInterfacesA(SCARDCONTEXT
, LPCSTR
, LPGUID
, LPDWORD
);
172 LONG WINAPI
SCardListInterfacesW(SCARDCONTEXT
, LPCWSTR
, LPGUID
, LPDWORD
);
173 LONG WINAPI
SCardListReaderGroupsA(SCARDCONTEXT
, LPSTR
, LPDWORD
);
174 LONG WINAPI
SCardListReaderGroupsW(SCARDCONTEXT
, LPWSTR
, LPDWORD
);
175 LONG WINAPI
SCardListReadersA(SCARDCONTEXT
, LPCSTR
, LPSTR
, LPDWORD
);
176 LONG WINAPI
SCardListReadersW(SCARDCONTEXT
, LPCWSTR
, LPWSTR
, LPDWORD
);
177 LONG WINAPI
SCardLocateCardsA(SCARDCONTEXT
, LPCSTR
, LPSCARD_READERSTATEA
, DWORD
);
178 LONG WINAPI
SCardLocateCardsW(SCARDCONTEXT
, LPCWSTR
, LPSCARD_READERSTATEW
, DWORD
);
179 LONG WINAPI
SCardLocateCardsByATRA(SCARDCONTEXT
, LPSCARD_ATRMASK
, DWORD
, LPSCARD_READERSTATEA
, DWORD
);
180 LONG WINAPI
SCardLocateCardsByATRW(SCARDCONTEXT
, LPSCARD_ATRMASK
, DWORD
, LPSCARD_READERSTATEW
, DWORD
);
181 LONG WINAPI
SCardReconnect(SCARDHANDLE
, DWORD
, DWORD
, DWORD
, LPDWORD
);
182 LONG WINAPI
SCardReleaseContext(SCARDCONTEXT
);
183 VOID WINAPI
SCardReleaseStartedEvent(HANDLE
);
184 LONG WINAPI
SCardRemoveReaderFromGroupA(SCARDCONTEXT
, LPCSTR
, LPCSTR
);
185 LONG WINAPI
SCardRemoveReaderFromGroupW(SCARDCONTEXT
, LPCWSTR
, LPCWSTR
);
186 LONG WINAPI
SCardSetAttrib(SCARDHANDLE
, DWORD
, LPCBYTE
, DWORD
);
187 LONG WINAPI
SCardSetCardTypeProviderNameA(SCARDCONTEXT
, LPCSTR
, DWORD
, LPCSTR
);
188 LONG WINAPI
SCardSetCardTypeProviderNameW(SCARDCONTEXT
, LPCWSTR
, DWORD
, LPCWSTR
);
189 LONG WINAPI
SCardState(SCARDHANDLE
, LPDWORD
, LPDWORD
, LPBYTE
, LPDWORD
);
190 LONG WINAPI
SCardStatusA(SCARDHANDLE
, LPSTR
, LPDWORD
, LPDWORD
, LPDWORD
, LPBYTE
, LPDWORD
);
191 LONG WINAPI
SCardStatusW(SCARDHANDLE
, LPWSTR
, LPDWORD
, LPDWORD
, LPDWORD
, LPBYTE
, LPDWORD
);
192 LONG WINAPI
SCardTransmit(SCARDHANDLE
, LPCSCARD_IO_REQUEST
, LPCBYTE
, DWORD
, LPSCARD_IO_REQUEST
, LPBYTE
, LPDWORD
);
194 #ifndef _DISABLE_TIDENTS
197 typedef struct SCARD_READERSTATEW SCARD_READERSTATE
, *PSCARD_READERSTATE
, *LPSCARD_READERSTATE
;
198 #define SCardAddReaderToGroup SCardAddReaderToGroupW
199 #define SCardConnect SCardConnectW
200 #define SCardForgetCardType SCardForgetCardTypeW
201 #define SCardForgetReader SCardForgetReaderW
202 #define SCardForgetReaderGroup SCardForgetReaderGroupW
203 #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameW
204 #define SCardGetProviderId SCardGetProviderIdW
205 #define SCardGetStatusChange SCardGetStatusChangeW
206 #define SCardIntroduceCardType SCardIntroduceCardTypeW
207 #define SCardIntroduceReader SCardIntroduceReaderW
208 #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupW
209 #define SCardListCards SCardListCardsW
210 #define SCardListInterfaces SCardListInterfacesW
211 #define SCardListReaderGroups SCardListReaderGroupsW
212 #define SCardListReaders SCardListReadersW
213 #define SCardLocateCards SCardLocateCardsW
214 #define SCardLocateCardsByATR SCardLocateCardsByATRW
215 #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupW
216 #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameW
217 #define SCardStatus SCardStatusW
219 typedef struct SCARD_READERSTATEA SCARD_READERSTATE
, *PSCARD_READERSTATE
, *LPSCARD_READERSTATE
;
220 #define SCardAddReaderToGroup SCardAddReaderToGroupA
221 #define SCardConnect SCardConnectA
222 #define SCardForgetCardType SCardForgetCardTypeA
223 #define SCardForgetReader SCardForgetReaderA
224 #define SCardForgetReaderGroup SCardForgetReaderGroupA
225 #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameA
226 #define SCardGetProviderId SCardGetProviderIdA
227 #define SCardGetStatusChange SCardGetStatusChangeA
228 #define SCardIntroduceCardType SCardIntroduceCardTypeA
229 #define SCardIntroduceReader SCardIntroduceReaderA
230 #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupA
231 #define SCardListCards SCardListCardsA
232 #define SCardListInterfaces SCardListInterfacesA
233 #define SCardListReaderGroups SCardListReaderGroupsA
234 #define SCardListReaders SCardListReadersA
235 #define SCardLocateCards SCardLocateCardsA
236 #define SCardLocateCardsByATR SCardLocateCardsByATRA
237 #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupA
238 #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameA
239 #define SCardStatus SCardStatusA
242 #endif /* _DISABLE_TIDENTS */
244 extern const SCARD_IO_REQUEST g_rgSCardT0Pci
;
245 extern const SCARD_IO_REQUEST g_rgSCardT1Pci
;
246 extern const SCARD_IO_REQUEST g_rgSCardRawPci
;
251 #endif /* __WINSCARD_H */