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.
21 #pragma GCC system_header
30 #define SCARD_S_SUCCESS NO_ERROR
32 #define SCARD_F_INTERNAL_ERROR ((DWORD)0x80100001)
33 #define SCARD_E_CANCELLED ((DWORD)0x80100002)
34 #define SCARD_E_INVALID_HANDLE ((DWORD)0x80100003)
35 #define SCARD_E_INVALID_PARAMETER ((DWORD)0x80100004)
36 #define SCARD_E_INVALID_TARGET ((DWORD)0x80100005)
37 #define SCARD_E_NO_MEMORY ((DWORD)0x80100006)
38 #define SCARD_F_WAITED_TOO_LONG ((DWORD)0x80100007)
39 #define SCARD_E_INSUFFICIENT_BUFFER ((DWORD)0x80100008)
40 #define SCARD_E_UNKNOWN_READER ((DWORD)0x80100009)
41 #define SCARD_E_TIMEOUT ((DWORD)0x8010000A)
42 #define SCARD_E_SHARING_VIOLATION ((DWORD)0x8010000B)
43 #define SCARD_E_NO_SMARTCARD ((DWORD)0x8010000C)
44 #define SCARD_E_UNKNOWN_CARD ((DWORD)0x8010000D)
45 #define SCARD_E_CANT_DISPOSE ((DWORD)0x8010000E)
46 #define SCARD_E_PROTO_MISMATCH ((DWORD)0x8010000F)
47 #define SCARD_E_NOT_READY ((DWORD)0x80100010)
48 #define SCARD_E_INVALID_VALUE ((DWORD)0x80100011)
49 #define SCARD_E_SYSTEM_CANCELLED ((DWORD)0x80100012)
50 #define SCARD_F_COMM_ERROR ((DWORD)0x80100013)
51 #define SCARD_F_UNKNOWN_ERROR ((DWORD)0x80100014)
52 #define SCARD_E_INVALID_ATR ((DWORD)0x80100015)
53 #define SCARD_E_NOT_TRANSACTED ((DWORD)0x80100016)
54 #define SCARD_E_READER_UNAVAILABLE ((DWORD)0x80100017)
55 #define SCARD_P_SHUTDOWN ((DWORD)0x80100018)
56 #define SCARD_E_PCI_TOO_SMALL ((DWORD)0x80100019)
57 #define SCARD_E_READER_UNSUPPORTED ((DWORD)0x8010001A)
58 #define SCARD_E_DUPLICATE_READER ((DWORD)0x8010001B)
59 #define SCARD_E_CARD_UNSUPPORTED ((DWORD)0x8010001C)
60 #define SCARD_E_NO_SERVICE ((DWORD)0x8010001D)
61 #define SCARD_E_SERVICE_STOPPED ((DWORD)0x8010001E)
62 #define SCARD_E_UNEXPECTED ((DWORD)0x8010001F)
63 #define SCARD_E_ICC_INSTALLATION ((DWORD)0x80100020)
64 #define SCARD_E_ICC_CREATEORDER ((DWORD)0x80100021)
65 #define SCARD_E_UNSUPPORTED_FEATURE ((DWORD)0x80100022)
66 #define SCARD_E_DIR_NOT_FOUND ((DWORD)0x80100023)
67 #define SCARD_E_FILE_NOT_FOUND ((DWORD)0x80100024)
68 #define SCARD_E_NO_DIR ((DWORD)0x80100025)
69 #define SCARD_E_NO_FILE ((DWORD)0x80100026)
70 #define SCARD_E_NO_ACCESS ((DWORD)0x80100027)
71 #define SCARD_E_WRITE_TOO_MANY ((DWORD)0x80100028)
72 #define SCARD_E_BAD_SEEK ((DWORD)0x80100029)
73 #define SCARD_E_INVALID_CHV ((DWORD)0x8010002A)
74 #define SCARD_E_UNKNOWN_RES_MNG ((DWORD)0x8010002B)
75 #define SCARD_E_NO_SUCH_CERTIFICATE ((DWORD)0x8010002C)
76 #define SCARD_E_CERTIFICATE_UNAVAILABLE ((DWORD)0x8010002D)
77 #define SCARD_E_NO_READERS_AVAILABLE ((DWORD)0x8010002E)
78 #define SCARD_E_COMM_DATA_LOST ((DWORD)0x8010002F)
79 #define SCARD_E_NO_KEY_CONTAINER ((DWORD)0x80100030)
80 #define SCARD_W_UNSUPPORTED_CARD ((DWORD)0x80100065)
81 #define SCARD_W_UNRESPONSIVE_CARD ((DWORD)0x80100066)
82 #define SCARD_W_UNPOWERED_CARD ((DWORD)0x80100067)
83 #define SCARD_W_RESET_CARD ((DWORD)0x80100068)
84 #define SCARD_W_REMOVED_CARD ((DWORD)0x80100069)
85 #define SCARD_W_SECURITY_VIOLATION ((DWORD)0x8010006A)
86 #define SCARD_W_WRONG_CHV ((DWORD)0x8010006B)
87 #define SCARD_W_CHV_BLOCKED ((DWORD)0x8010006C)
88 #define SCARD_W_EOF ((DWORD)0x8010006D)
89 #define SCARD_W_CANCELLED_BY_USER ((DWORD)0x8010006E)
90 #define SCARD_W_CARD_NOT_AUTHENTICATED ((DWORD)0x8010006F)
92 #define SCARD_SHARE_EXCLUSIVE (0x1)
93 #define SCARD_SHARE_SHARED (0x2)
94 #define SCARD_SHARE_DIRECT (0x3)
96 #define SCARD_LEAVE_CARD (0x0)
97 #define SCARD_RESET_CARD (0x1)
98 #define SCARD_UNPOWER_CARD (0x2)
99 #define SCARD_EJECT_CARD (0x3)
101 #define SCARD_AUTOALLOCATE ((DWORD)-1)
102 #define SCARD_SCOPE_USER (0x0)
103 #define SCARD_SCOPE_TERMINAL (0x1)
104 #define SCARD_SCOPE_SYSTEM (0x2)
106 #define SCARD_PROVIDER_PRIMARY (0x1)
107 #define SCARD_PROVIDER_CSP (0x2)
109 typedef ULONG_PTR SCARDCONTEXT
, *PSCARDCONTEXT
, *LPSCARDCONTEXT
;
110 typedef ULONG_PTR SCARDHANDLE
, *PSCARDHANDLE
, *LPSCARDHANDLE
;
111 typedef const BYTE
*LPCBYTE
;
113 typedef struct _SCARD_READERSTATEA
117 DWORD dwCurrentState
;
121 } SCARD_READERSTATEA
, *PSCARD_READERSTATEA
, *LPSCARD_READERSTATEA
;
123 typedef struct _SCARD_READERSTATEW
127 DWORD dwCurrentState
;
131 } SCARD_READERSTATEW
, *PSCARD_READERSTATEW
, *LPSCARD_READERSTATEW
;
133 typedef struct _SCARD_ATRMASK
138 } SCARD_ATRMASK
, *PSCARD_ATRMASK
, *LPSCARD_ATRMASK
;
140 HANDLE STDCALL
SCardAccessStartedEvent(VOID
);
141 LONG STDCALL
SCardAddReaderToGroupA(SCARDCONTEXT
, LPCSTR
, LPCSTR
);
142 LONG STDCALL
SCardAddReaderToGroupW(SCARDCONTEXT
, LPCWSTR
, LPCWSTR
);
143 LONG STDCALL
SCardBeginTransaction(SCARDHANDLE
);
144 LONG STDCALL
SCardCancel(SCARDCONTEXT
);
145 LONG STDCALL
SCardConnectA(SCARDCONTEXT
, LPCSTR
, DWORD
, DWORD
, LPSCARDHANDLE
, LPDWORD
);
146 LONG STDCALL
SCardConnectW(SCARDCONTEXT
, LPCWSTR
, DWORD
, DWORD
, LPSCARDHANDLE
, LPDWORD
);
147 LONG STDCALL
SCardControl(SCARDHANDLE
, DWORD
, LPCVOID
, DWORD
, LPVOID
, DWORD
, LPDWORD
);
148 LONG STDCALL
SCardDisconnect(SCARDHANDLE
, DWORD
);
149 LONG STDCALL
SCardEndTransaction(SCARDHANDLE
, DWORD
);
150 LONG STDCALL
SCardEstablishContext(DWORD
, LPCVOID
, LPCVOID
, LPSCARDCONTEXT
);
151 LONG STDCALL
SCardForgetCardTypeA(SCARDCONTEXT
, LPCSTR
);
152 LONG STDCALL
SCardForgetCardTypeW(SCARDCONTEXT
, LPCWSTR
);
153 LONG STDCALL
SCardForgetReaderA(SCARDCONTEXT
, LPCSTR
);
154 LONG STDCALL
SCardForgetReaderW(SCARDCONTEXT
, LPCWSTR
);
155 LONG STDCALL
SCardForgetReaderGroupA(SCARDCONTEXT
, LPCSTR
);
156 LONG STDCALL
SCardForgetReaderGroupW(SCARDCONTEXT
, LPCWSTR
);
157 LONG STDCALL
SCardFreeMemory(SCARDCONTEXT
, LPCVOID
);
158 LONG STDCALL
SCardGetAttrib(SCARDHANDLE
, DWORD
, LPBYTE
, LPDWORD
);
159 LONG STDCALL
SCardGetCardTypeProviderNameA(SCARDCONTEXT
, LPCSTR
, DWORD
, LPSTR
, LPDWORD
);
160 LONG STDCALL
SCardGetCardTypeProviderNameW(SCARDCONTEXT
, LPCWSTR
, DWORD
, LPWSTR
, LPDWORD
);
161 LONG STDCALL
SCardGetProviderIdA(SCARDCONTEXT
, LPCSTR
, LPGUID
);
162 LONG STDCALL
SCardGetProviderIdW(SCARDCONTEXT
, LPCWSTR
, LPGUID
);
163 LONG STDCALL
SCardGetStatusChangeA(SCARDCONTEXT
, DWORD
, LPSCARD_READERSTATEA
, DWORD
);
164 LONG STDCALL
SCardGetStatusChangeW(SCARDCONTEXT
, DWORD
, LPSCARD_READERSTATEW
, DWORD
);
165 LONG STDCALL
SCardIntroduceCardTypeA(SCARDCONTEXT
, LPCSTR
, LPCGUID
, LPCGUID
, DWORD
, LPCBYTE
, LPCBYTE
, DWORD
);
166 LONG STDCALL
SCardIntroduceCardTypeW(SCARDCONTEXT
, LPCWSTR
, LPCGUID
, LPCGUID
, DWORD
, LPCBYTE
, LPCBYTE
, DWORD
);
167 LONG STDCALL
SCardIntroduceReaderA(SCARDCONTEXT
, LPCSTR
, LPCSTR
);
168 LONG STDCALL
SCardIntroduceReaderW(SCARDCONTEXT
, LPCWSTR
, LPCWSTR
);
169 LONG STDCALL
SCardIntroduceReaderGroupA(SCARDCONTEXT
, LPCSTR
);
170 LONG STDCALL
SCardIntroduceReaderGroupW(SCARDCONTEXT
, LPCWSTR
);
171 LONG STDCALL
SCardIsValidContext(SCARDCONTEXT
);
172 LONG STDCALL
SCardListCardsA(SCARDCONTEXT
, LPCBYTE
, LPCGUID
, DWORD
, LPCSTR
, LPDWORD
);
173 LONG STDCALL
SCardListCardsW(SCARDCONTEXT
, LPCBYTE
, LPCGUID
, DWORD
, LPCWSTR
, LPDWORD
);
174 LONG STDCALL
SCardListInterfacesA(SCARDCONTEXT
, LPCSTR
, LPGUID
, LPDWORD
);
175 LONG STDCALL
SCardListInterfacesW(SCARDCONTEXT
, LPCWSTR
, LPGUID
, LPDWORD
);
176 LONG STDCALL
SCardListReaderGroupsA(SCARDCONTEXT
, LPSTR
, LPDWORD
);
177 LONG STDCALL
SCardListReaderGroupsW(SCARDCONTEXT
, LPWSTR
, LPDWORD
);
178 LONG STDCALL
SCardListReadersA(SCARDCONTEXT
, LPCSTR
, LPSTR
, LPDWORD
);
179 LONG STDCALL
SCardListReadersW(SCARDCONTEXT
, LPCWSTR
, LPWSTR
, LPDWORD
);
180 LONG STDCALL
SCardLocateCardsA(SCARDCONTEXT
, LPCSTR
, LPSCARD_READERSTATEA
, DWORD
);
181 LONG STDCALL
SCardLocateCardsW(SCARDCONTEXT
, LPCWSTR
, LPSCARD_READERSTATEW
, DWORD
);
182 LONG STDCALL
SCardLocateCardsByATRA(SCARDCONTEXT
, LPSCARD_ATRMASK
, DWORD
, LPSCARD_READERSTATEA
, DWORD
);
183 LONG STDCALL
SCardLocateCardsByATRW(SCARDCONTEXT
, LPSCARD_ATRMASK
, DWORD
, LPSCARD_READERSTATEW
, DWORD
);
184 LONG STDCALL
SCardReconnect(SCARDHANDLE
, DWORD
, DWORD
, DWORD
, LPDWORD
);
185 LONG STDCALL
SCardReleaseContext(SCARDCONTEXT
);
186 VOID STDCALL
SCardReleaseStartedEvent(HANDLE
);
187 LONG STDCALL
SCardRemoveReaderFromGroupA(SCARDCONTEXT
, LPCSTR
, LPCSTR
);
188 LONG STDCALL
SCardRemoveReaderFromGroupW(SCARDCONTEXT
, LPCWSTR
, LPCWSTR
);
189 LONG STDCALL
SCardSetAttrib(SCARDHANDLE
, DWORD
, LPCBYTE
, DWORD
);
190 LONG STDCALL
SCardSetCardTypeProviderNameA(SCARDCONTEXT
, LPCSTR
, DWORD
, LPCSTR
);
191 LONG STDCALL
SCardSetCardTypeProviderNameW(SCARDCONTEXT
, LPCWSTR
, DWORD
, LPCWSTR
);
192 LONG STDCALL
SCardState(SCARDHANDLE
, LPDWORD
, LPDWORD
, LPBYTE
, LPDWORD
);
193 LONG STDCALL
SCardStatusA(SCARDHANDLE
, LPSTR
, LPDWORD
, LPDWORD
, LPDWORD
, LPBYTE
, LPDWORD
);
194 LONG STDCALL
SCardStatusW(SCARDHANDLE
, LPWSTR
, LPDWORD
, LPDWORD
, LPDWORD
, LPBYTE
, LPDWORD
);
195 LONG STDCALL
SCardTransmit(SCARDHANDLE
, LPCSCARD_IO_REQUEST
, LPCBYTE
, DWORD
, LPSCARD_IO_REQUEST
, LPBYTE
, LPDWORD
);
197 #ifndef _DISABLE_TIDENTS
200 typedef struct SCARD_READERSTATEW SCARD_READERSTATE
, *PSCARD_READERSTATE
, *LPSCARD_READERSTATE
;
201 #define SCardAddReaderToGroup SCardAddReaderToGroupW
202 #define SCardConnect SCardConnectW
203 #define SCardForgetCardType SCardForgetCardTypeW
204 #define SCardForgetReader SCardForgetReaderW
205 #define SCardForgetReaderGroup SCardForgetReaderGroupW
206 #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameW
207 #define SCardGetProviderId SCardGetProviderIdW
208 #define SCardGetStatusChange SCardGetStatusChangeW
209 #define SCardIntroduceCardType SCardIntroduceCardTypeW
210 #define SCardIntroduceReader SCardIntroduceReaderW
211 #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupW
212 #define SCardListCards SCardListCardsW
213 #define SCardListInterfaces SCardListInterfacesW
214 #define SCardListReaderGroups SCardListReaderGroupsW
215 #define SCardListReaders SCardListReadersW
216 #define SCardLocateCards SCardLocateCardsW
217 #define SCardLocateCardsByATR SCardLocateCardsByATRW
218 #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupW
219 #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameW
220 #define SCardStatus SCardStatusW
222 typedef struct SCARD_READERSTATEA SCARD_READERSTATE
, *PSCARD_READERSTATE
, *LPSCARD_READERSTATE
;
223 #define SCardAddReaderToGroup SCardAddReaderToGroupA
224 #define SCardConnect SCardConnectA
225 #define SCardForgetCardType SCardForgetCardTypeA
226 #define SCardForgetReader SCardForgetReaderA
227 #define SCardForgetReaderGroup SCardForgetReaderGroupA
228 #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameA
229 #define SCardGetProviderId SCardGetProviderIdA
230 #define SCardGetStatusChange SCardGetStatusChangeA
231 #define SCardIntroduceCardType SCardIntroduceCardTypeA
232 #define SCardIntroduceReader SCardIntroduceReaderA
233 #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupA
234 #define SCardListCards SCardListCardsA
235 #define SCardListInterfaces SCardListInterfacesA
236 #define SCardListReaderGroups SCardListReaderGroupsA
237 #define SCardListReaders SCardListReadersA
238 #define SCardLocateCards SCardLocateCardsA
239 #define SCardLocateCardsByATR SCardLocateCardsByATRA
240 #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupA
241 #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameA
242 #define SCardStatus SCardStatusA
245 #endif /* _DISABLE_TIDENTS */
247 extern const SCARD_IO_REQUEST g_rgSCardT0Pci
;
248 extern const SCARD_IO_REQUEST g_rgSCardT1Pci
;
249 extern const SCARD_IO_REQUEST g_rgSCardRawPci
;
254 #endif /* __WINSCARD_H */