master
  1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6#ifndef _WINSCARD_H_
  7#define _WINSCARD_H_
  8
  9#include <_mingw_unicode.h>
 10#include <wtypes.h>
 11#include <winioctl.h>
 12#include "winsmcrd.h"
 13#ifndef SCARD_S_SUCCESS
 14#include "SCardErr.h"
 15#endif
 16
 17#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 18
 19#ifdef __cplusplus
 20extern "C" {
 21#endif
 22
 23#ifndef _LPCBYTE_DEFINED
 24#define _LPCBYTE_DEFINED
 25  typedef const BYTE *LPCBYTE;
 26#endif
 27#ifndef _LPCVOID_DEFINED
 28#define _LPCVOID_DEFINED
 29  typedef const VOID *LPCVOID;
 30#endif
 31
 32#ifndef WINSCARDAPI
 33#define WINSCARDAPI
 34#endif
 35#ifndef WINSCARDDATA
 36#define WINSCARDDATA __declspec(dllimport)
 37#endif
 38
 39  WINSCARDDATA extern const SCARD_IO_REQUEST g_rgSCardT0Pci,g_rgSCardT1Pci,g_rgSCardRawPci;
 40#define SCARD_PCI_T0 (&g_rgSCardT0Pci)
 41#define SCARD_PCI_T1 (&g_rgSCardT1Pci)
 42#define SCARD_PCI_RAW (&g_rgSCardRawPci)
 43
 44  typedef ULONG_PTR SCARDCONTEXT;
 45  typedef SCARDCONTEXT *PSCARDCONTEXT,*LPSCARDCONTEXT;
 46
 47  typedef ULONG_PTR SCARDHANDLE;
 48  typedef SCARDHANDLE *PSCARDHANDLE,*LPSCARDHANDLE;
 49
 50#define SCARD_AUTOALLOCATE (DWORD)(-1)
 51#define SCARD_SCOPE_USER 0
 52#define SCARD_SCOPE_TERMINAL 1
 53#define SCARD_SCOPE_SYSTEM 2
 54
 55  extern WINSCARDAPI LONG WINAPI SCardEstablishContext(DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2,LPSCARDCONTEXT phContext);
 56  extern WINSCARDAPI LONG WINAPI SCardReleaseContext(SCARDCONTEXT hContext);
 57  extern WINSCARDAPI LONG WINAPI SCardIsValidContext(SCARDCONTEXT hContext);
 58
 59#define SCARD_ALL_READERS TEXT("SCard$AllReaders\000")
 60#define SCARD_DEFAULT_READERS TEXT("SCard$DefaultReaders\000")
 61#define SCARD_LOCAL_READERS TEXT("SCard$LocalReaders\000")
 62#define SCARD_SYSTEM_READERS TEXT("SCard$SystemReaders\000")
 63
 64#define SCARD_PROVIDER_PRIMARY 1
 65#define SCARD_PROVIDER_CSP 2
 66
 67#define SCardListReaderGroups __MINGW_NAME_AW(SCardListReaderGroups)
 68#define SCardListReaders __MINGW_NAME_AW(SCardListReaders)
 69#define SCardListCards __MINGW_NAME_AW(SCardListCards)
 70#define SCardListInterfaces __MINGW_NAME_AW(SCardListInterfaces)
 71#define SCardGetProviderId __MINGW_NAME_AW(SCardGetProviderId)
 72#define SCardGetCardTypeProviderName __MINGW_NAME_AW(SCardGetCardTypeProviderName)
 73#define SCardIntroduceReaderGroup __MINGW_NAME_AW(SCardIntroduceReaderGroup)
 74#define SCardForgetReaderGroup __MINGW_NAME_AW(SCardForgetReaderGroup)
 75#define SCardIntroduceReader __MINGW_NAME_AW(SCardIntroduceReader)
 76#define SCardForgetReader __MINGW_NAME_AW(SCardForgetReader)
 77#define SCardAddReaderToGroup __MINGW_NAME_AW(SCardAddReaderToGroup)
 78#define SCardRemoveReaderFromGroup __MINGW_NAME_AW(SCardRemoveReaderFromGroup)
 79#define SCardIntroduceCardType __MINGW_NAME_AW(SCardIntroduceCardType)
 80#define SCardSetCardTypeProviderName __MINGW_NAME_AW(SCardSetCardTypeProviderName)
 81#define SCardForgetCardType __MINGW_NAME_AW(SCardForgetCardType)
 82
 83  extern WINSCARDAPI LONG WINAPI SCardListReaderGroupsA(SCARDCONTEXT hContext,LPSTR mszGroups,LPDWORD pcchGroups);
 84  extern WINSCARDAPI LONG WINAPI SCardListReaderGroupsW(SCARDCONTEXT hContext,LPWSTR mszGroups,LPDWORD pcchGroups);
 85  extern WINSCARDAPI LONG WINAPI SCardListReadersA(SCARDCONTEXT hContext,LPCSTR mszGroups,LPSTR mszReaders,LPDWORD pcchReaders);
 86  extern WINSCARDAPI LONG WINAPI SCardListReadersW(SCARDCONTEXT hContext,LPCWSTR mszGroups,LPWSTR mszReaders,LPDWORD pcchReaders);
 87  extern WINSCARDAPI LONG WINAPI SCardListCardsA(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPSTR mszCards,LPDWORD pcchCards);
 88  extern WINSCARDAPI LONG WINAPI SCardListCardsW(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPWSTR mszCards,LPDWORD pcchCards);
 89#define SCardListCardTypes SCardListCards
 90  extern WINSCARDAPI LONG WINAPI SCardListInterfacesA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces);
 91  extern WINSCARDAPI LONG WINAPI SCardListInterfacesW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces);
 92  extern WINSCARDAPI LONG WINAPI SCardGetProviderIdA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidProviderId);
 93  extern WINSCARDAPI LONG WINAPI SCardGetProviderIdW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidProviderId);
 94  extern WINSCARDAPI LONG WINAPI SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPSTR szProvider,LPDWORD pcchProvider);
 95  extern WINSCARDAPI LONG WINAPI SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPWSTR szProvider,LPDWORD pcchProvider);
 96  extern WINSCARDAPI LONG WINAPI SCardIntroduceReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName);
 97  extern WINSCARDAPI LONG WINAPI SCardIntroduceReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName);
 98  extern WINSCARDAPI LONG WINAPI SCardForgetReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName);
 99  extern WINSCARDAPI LONG WINAPI SCardForgetReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName);
100  extern WINSCARDAPI LONG WINAPI SCardIntroduceReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szDeviceName);
101  extern WINSCARDAPI LONG WINAPI SCardIntroduceReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szDeviceName);
102  extern WINSCARDAPI LONG WINAPI SCardForgetReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName);
103  extern WINSCARDAPI LONG WINAPI SCardForgetReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName);
104  extern WINSCARDAPI LONG WINAPI SCardAddReaderToGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName);
105  extern WINSCARDAPI LONG WINAPI SCardAddReaderToGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName);
106  extern WINSCARDAPI LONG WINAPI SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName);
107  extern WINSCARDAPI LONG WINAPI SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName);
108  extern WINSCARDAPI LONG WINAPI SCardIntroduceCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen);
109  extern WINSCARDAPI LONG WINAPI SCardIntroduceCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen);
110
111#define PCSCardIntroduceCardType(hContext,szCardName,pbAtr,pbAtrMask,cbAtrLen,pguidPrimaryProvider,rgguidInterfaces,dwInterfaceCount) SCardIntroduceCardType(hContext,szCardName,pguidPrimaryProvider,rgguidInterfaces,dwInterfaceCount,pbAtr,pbAtrMask,cbAtrLen)
112
113  extern WINSCARDAPI LONG WINAPI SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPCSTR szProvider);
114  extern WINSCARDAPI LONG WINAPI SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPCWSTR szProvider);
115  extern WINSCARDAPI LONG WINAPI SCardForgetCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName);
116  extern WINSCARDAPI LONG WINAPI SCardForgetCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName);
117  extern WINSCARDAPI LONG WINAPI SCardFreeMemory(SCARDCONTEXT hContext,LPCVOID pvMem);
118  extern WINSCARDAPI HANDLE WINAPI SCardAccessStartedEvent(void);
119  extern WINSCARDAPI void WINAPI SCardReleaseStartedEvent(void);
120
121  typedef struct {
122    LPCSTR szReader;
123    LPVOID pvUserData;
124    DWORD dwCurrentState;
125    DWORD dwEventState;
126    DWORD cbAtr;
127    BYTE rgbAtr[36];
128  } SCARD_READERSTATEA,*PSCARD_READERSTATEA,*LPSCARD_READERSTATEA;
129
130  typedef struct {
131    LPCWSTR szReader;
132    LPVOID pvUserData;
133    DWORD dwCurrentState;
134    DWORD dwEventState;
135    DWORD cbAtr;
136    BYTE rgbAtr[36];
137  } SCARD_READERSTATEW,*PSCARD_READERSTATEW,*LPSCARD_READERSTATEW;
138
139  __MINGW_TYPEDEF_AW(SCARD_READERSTATE)
140  __MINGW_TYPEDEF_AW(PSCARD_READERSTATE)
141  __MINGW_TYPEDEF_AW(LPSCARD_READERSTATE)
142
143#define SCardLocateCards __MINGW_NAME_AW(SCardLocateCards)
144#define SCardLocateCardsByATR __MINGW_NAME_AW(SCardLocateCardsByATR)
145#define SCardGetStatusChange __MINGW_NAME_AW(SCardGetStatusChange)
146#define SCardConnect __MINGW_NAME_AW(SCardConnect)
147#define SCardStatus __MINGW_NAME_AW(SCardStatus)
148
149#define SCARD_READERSTATE_A SCARD_READERSTATEA
150#define SCARD_READERSTATE_W SCARD_READERSTATEW
151#define PSCARD_READERSTATE_A PSCARD_READERSTATEA
152#define PSCARD_READERSTATE_W PSCARD_READERSTATEW
153#define LPSCARD_READERSTATE_A LPSCARD_READERSTATEA
154#define LPSCARD_READERSTATE_W LPSCARD_READERSTATEW
155
156#define SCARD_STATE_UNAWARE 0x00000000
157#define SCARD_STATE_IGNORE 0x00000001
158#define SCARD_STATE_CHANGED 0x00000002
159#define SCARD_STATE_UNKNOWN 0x00000004
160#define SCARD_STATE_UNAVAILABLE 0x00000008
161#define SCARD_STATE_EMPTY 0x00000010
162#define SCARD_STATE_PRESENT 0x00000020
163#define SCARD_STATE_ATRMATCH 0x00000040
164#define SCARD_STATE_EXCLUSIVE 0x00000080
165#define SCARD_STATE_INUSE 0x00000100
166#define SCARD_STATE_MUTE 0x00000200
167#define SCARD_STATE_UNPOWERED 0x00000400
168
169  extern WINSCARDAPI LONG WINAPI SCardLocateCardsA(SCARDCONTEXT hContext,LPCSTR mszCards,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders);
170  extern WINSCARDAPI LONG WINAPI SCardLocateCardsW(SCARDCONTEXT hContext,LPCWSTR mszCards,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders);
171
172  typedef struct _SCARD_ATRMASK {
173    DWORD cbAtr;
174    BYTE rgbAtr[36];
175    BYTE rgbMask[36];
176  } SCARD_ATRMASK,*PSCARD_ATRMASK,*LPSCARD_ATRMASK;
177
178  extern WINSCARDAPI LONG WINAPI SCardLocateCardsByATRA(SCARDCONTEXT hContext,LPSCARD_ATRMASK rgAtrMasks,DWORD cAtrs,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders);
179  extern WINSCARDAPI LONG WINAPI SCardLocateCardsByATRW(SCARDCONTEXT hContext,LPSCARD_ATRMASK rgAtrMasks,DWORD cAtrs,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders);
180  extern WINSCARDAPI LONG WINAPI SCardGetStatusChangeA(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders);
181  extern WINSCARDAPI LONG WINAPI SCardGetStatusChangeW(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders);
182  extern WINSCARDAPI LONG WINAPI SCardCancel(SCARDCONTEXT hContext);
183
184#define SCARD_SHARE_EXCLUSIVE 1
185#define SCARD_SHARE_SHARED 2
186#define SCARD_SHARE_DIRECT 3
187
188#define SCARD_LEAVE_CARD 0
189#define SCARD_RESET_CARD 1
190#define SCARD_UNPOWER_CARD 2
191#define SCARD_EJECT_CARD 3
192
193  extern WINSCARDAPI LONG WINAPI SCardConnectA(SCARDCONTEXT hContext,LPCSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol);
194  extern WINSCARDAPI LONG WINAPI SCardConnectW(SCARDCONTEXT hContext,LPCWSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol);
195  extern WINSCARDAPI LONG WINAPI SCardReconnect(SCARDHANDLE hCard,DWORD dwShareMode,DWORD dwPreferredProtocols,DWORD dwInitialization,LPDWORD pdwActiveProtocol);
196  extern WINSCARDAPI LONG WINAPI SCardDisconnect(SCARDHANDLE hCard,DWORD dwDisposition);
197  extern WINSCARDAPI LONG WINAPI SCardBeginTransaction(SCARDHANDLE hCard);
198  extern WINSCARDAPI LONG WINAPI SCardEndTransaction(SCARDHANDLE hCard,DWORD dwDisposition);
199  extern WINSCARDAPI LONG WINAPI SCardCancelTransaction(SCARDHANDLE hCard);
200  extern WINSCARDAPI LONG WINAPI SCardState(SCARDHANDLE hCard,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen);
201  extern WINSCARDAPI LONG WINAPI SCardStatusA(SCARDHANDLE hCard,LPSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen);
202  extern WINSCARDAPI LONG WINAPI SCardStatusW(SCARDHANDLE hCard,LPWSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen);
203  extern WINSCARDAPI LONG WINAPI SCardTransmit(SCARDHANDLE hCard,LPCSCARD_IO_REQUEST pioSendPci,LPCBYTE pbSendBuffer,DWORD cbSendLength,LPSCARD_IO_REQUEST pioRecvPci,LPBYTE pbRecvBuffer,LPDWORD pcbRecvLength);
204  extern WINSCARDAPI LONG WINAPI SCardControl(SCARDHANDLE hCard,DWORD dwControlCode,LPCVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned);
205  extern WINSCARDAPI LONG WINAPI SCardGetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPBYTE pbAttr,LPDWORD pcbAttrLen);
206
207#define SCardGetReaderCapabilities SCardGetAttrib
208
209  extern WINSCARDAPI LONG WINAPI SCardSetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPCBYTE pbAttr,DWORD cbAttrLen);
210
211#define SCardSetReaderCapabilities SCardSetAttrib
212
213#define SC_DLG_MINIMAL_UI 0x01
214#define SC_DLG_NO_UI 0x02
215#define SC_DLG_FORCE_UI 0x04
216
217#define SCERR_NOCARDNAME 0x4000
218#define SCERR_NOGUIDS 0x8000
219
220#define LPOCNCONNPROC __MINGW_NAME_AW(LPOCNCONNPROC)
221
222  typedef SCARDHANDLE (WINAPI *LPOCNCONNPROCA) (SCARDCONTEXT,LPSTR,LPSTR,PVOID);
223  typedef SCARDHANDLE (WINAPI *LPOCNCONNPROCW) (SCARDCONTEXT,LPWSTR,LPWSTR,PVOID);
224  typedef WINBOOL (WINAPI *LPOCNCHKPROC) (SCARDCONTEXT,SCARDHANDLE,PVOID);
225  typedef void (WINAPI *LPOCNDSCPROC) (SCARDCONTEXT,SCARDHANDLE,PVOID);
226
227  typedef struct {
228    DWORD dwStructSize;
229    LPSTR lpstrGroupNames;
230    DWORD nMaxGroupNames;
231    LPCGUID rgguidInterfaces;
232    DWORD cguidInterfaces;
233    LPSTR lpstrCardNames;
234    DWORD nMaxCardNames;
235    LPOCNCHKPROC lpfnCheck;
236    LPOCNCONNPROCA lpfnConnect;
237    LPOCNDSCPROC lpfnDisconnect;
238    LPVOID pvUserData;
239    DWORD dwShareMode;
240    DWORD dwPreferredProtocols;
241  } OPENCARD_SEARCH_CRITERIAA,*POPENCARD_SEARCH_CRITERIAA,*LPOPENCARD_SEARCH_CRITERIAA;
242
243  typedef struct {
244    DWORD dwStructSize;
245    LPWSTR lpstrGroupNames;
246    DWORD nMaxGroupNames;
247    LPCGUID rgguidInterfaces;
248    DWORD cguidInterfaces;
249    LPWSTR lpstrCardNames;
250    DWORD nMaxCardNames;
251    LPOCNCHKPROC lpfnCheck;
252    LPOCNCONNPROCW lpfnConnect;
253    LPOCNDSCPROC lpfnDisconnect;
254    LPVOID pvUserData;
255    DWORD dwShareMode;
256    DWORD dwPreferredProtocols;
257  } OPENCARD_SEARCH_CRITERIAW,*POPENCARD_SEARCH_CRITERIAW,*LPOPENCARD_SEARCH_CRITERIAW;
258
259  __MINGW_TYPEDEF_AW(OPENCARD_SEARCH_CRITERIA)
260  __MINGW_TYPEDEF_AW(POPENCARD_SEARCH_CRITERIA)
261  __MINGW_TYPEDEF_AW(LPOPENCARD_SEARCH_CRITERIA)
262
263  typedef struct {
264    DWORD dwStructSize;
265    SCARDCONTEXT hSCardContext;
266    HWND hwndOwner;
267    DWORD dwFlags;
268    LPCSTR lpstrTitle;
269    LPCSTR lpstrSearchDesc;
270    HICON hIcon;
271    POPENCARD_SEARCH_CRITERIAA pOpenCardSearchCriteria;
272    LPOCNCONNPROCA lpfnConnect;
273    LPVOID pvUserData;
274    DWORD dwShareMode;
275    DWORD dwPreferredProtocols;
276    LPSTR lpstrRdr;
277    DWORD nMaxRdr;
278    LPSTR lpstrCard;
279    DWORD nMaxCard;
280    DWORD dwActiveProtocol;
281    SCARDHANDLE hCardHandle;
282  } OPENCARDNAME_EXA,*POPENCARDNAME_EXA,*LPOPENCARDNAME_EXA;
283
284  typedef struct {
285    DWORD dwStructSize;
286    SCARDCONTEXT hSCardContext;
287    HWND hwndOwner;
288    DWORD dwFlags;
289    LPCWSTR lpstrTitle;
290    LPCWSTR lpstrSearchDesc;
291    HICON hIcon;
292    POPENCARD_SEARCH_CRITERIAW pOpenCardSearchCriteria;
293    LPOCNCONNPROCW lpfnConnect;
294    LPVOID pvUserData;
295    DWORD dwShareMode;
296    DWORD dwPreferredProtocols;
297    LPWSTR lpstrRdr;
298    DWORD nMaxRdr;
299    LPWSTR lpstrCard;
300    DWORD nMaxCard;
301    DWORD dwActiveProtocol;
302    SCARDHANDLE hCardHandle;
303  } OPENCARDNAME_EXW,*POPENCARDNAME_EXW,*LPOPENCARDNAME_EXW;
304
305  __MINGW_TYPEDEF_AW(OPENCARDNAME_EX)
306  __MINGW_TYPEDEF_AW(POPENCARDNAME_EX)
307  __MINGW_TYPEDEF_AW(LPOPENCARDNAME_EX)
308
309#define OPENCARDNAMEA_EX OPENCARDNAME_EXA
310#define OPENCARDNAMEW_EX OPENCARDNAME_EXW
311#define POPENCARDNAMEA_EX POPENCARDNAME_EXA
312#define POPENCARDNAMEW_EX POPENCARDNAME_EXW
313#define LPOPENCARDNAMEA_EX LPOPENCARDNAME_EXA
314#define LPOPENCARDNAMEW_EX LPOPENCARDNAME_EXW
315
316#define SCardUIDlgSelectCard __MINGW_NAME_AW(SCardUIDlgSelectCard)
317
318  extern WINSCARDAPI LONG WINAPI SCardUIDlgSelectCardA(LPOPENCARDNAMEA_EX);
319  extern WINSCARDAPI LONG WINAPI SCardUIDlgSelectCardW(LPOPENCARDNAMEW_EX);
320
321  typedef struct {
322    DWORD dwStructSize;
323    HWND hwndOwner;
324    SCARDCONTEXT hSCardContext;
325    LPSTR lpstrGroupNames;
326    DWORD nMaxGroupNames;
327    LPSTR lpstrCardNames;
328    DWORD nMaxCardNames;
329    LPCGUID rgguidInterfaces;
330    DWORD cguidInterfaces;
331    LPSTR lpstrRdr;
332    DWORD nMaxRdr;
333    LPSTR lpstrCard;
334    DWORD nMaxCard;
335    LPCSTR lpstrTitle;
336    DWORD dwFlags;
337    LPVOID pvUserData;
338    DWORD dwShareMode;
339    DWORD dwPreferredProtocols;
340    DWORD dwActiveProtocol;
341    LPOCNCONNPROCA lpfnConnect;
342    LPOCNCHKPROC lpfnCheck;
343    LPOCNDSCPROC lpfnDisconnect;
344    SCARDHANDLE hCardHandle;
345  } OPENCARDNAMEA,*POPENCARDNAMEA,*LPOPENCARDNAMEA;
346
347  typedef struct {
348    DWORD dwStructSize;
349    HWND hwndOwner;
350    SCARDCONTEXT hSCardContext;
351    LPWSTR lpstrGroupNames;
352    DWORD nMaxGroupNames;
353    LPWSTR lpstrCardNames;
354    DWORD nMaxCardNames;
355    LPCGUID rgguidInterfaces;
356    DWORD cguidInterfaces;
357    LPWSTR lpstrRdr;
358    DWORD nMaxRdr;
359    LPWSTR lpstrCard;
360    DWORD nMaxCard;
361    LPCWSTR lpstrTitle;
362    DWORD dwFlags;
363    LPVOID pvUserData;
364    DWORD dwShareMode;
365    DWORD dwPreferredProtocols;
366    DWORD dwActiveProtocol;
367    LPOCNCONNPROCW lpfnConnect;
368    LPOCNCHKPROC lpfnCheck;
369    LPOCNDSCPROC lpfnDisconnect;
370    SCARDHANDLE hCardHandle;
371  } OPENCARDNAMEW,*POPENCARDNAMEW,*LPOPENCARDNAMEW;
372
373  __MINGW_TYPEDEF_AW(OPENCARDNAME)
374  __MINGW_TYPEDEF_AW(POPENCARDNAME)
375  __MINGW_TYPEDEF_AW(LPOPENCARDNAME)
376
377#define OPENCARDNAME_A OPENCARDNAMEA
378#define OPENCARDNAME_W OPENCARDNAMEW
379#define POPENCARDNAME_A POPENCARDNAMEA
380#define POPENCARDNAME_W POPENCARDNAMEW
381#define LPOPENCARDNAME_A LPOPENCARDNAMEA
382#define LPOPENCARDNAME_W LPOPENCARDNAMEW
383
384#define GetOpenCardName __MINGW_NAME_AW(GetOpenCardName)
385
386  extern WINSCARDAPI LONG WINAPI GetOpenCardNameA(LPOPENCARDNAMEA);
387  extern WINSCARDAPI LONG WINAPI GetOpenCardNameW(LPOPENCARDNAMEW);
388  extern WINSCARDAPI LONG WINAPI SCardDlgExtendedError(void);
389
390#if (_WIN32_WINNT >= 0x0600)
391
392  extern WINSCARDAPI LONG WINAPI SCardGetTransmitCount(SCARDHANDLE hCard,LPDWORD pcTransmitCount);
393  extern WINSCARDAPI LONG WINAPI SCardReadCacheA(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPSTR LookupName,PBYTE Data,DWORD *DataLen);
394  extern WINSCARDAPI LONG WINAPI SCardReadCacheW(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPWSTR LookupName,PBYTE Data,DWORD *DataLen);
395
396#define SCardReadCache __MINGW_NAME_AW(SCardReadCache)
397
398  extern WINSCARDAPI LONG WINAPI SCardWriteCacheA(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPSTR LookupName,PBYTE Data,DWORD DataLen);
399  extern WINSCARDAPI LONG WINAPI SCardWriteCacheW(SCARDCONTEXT hContext,UUID *CardIdentifier,DWORD FreshnessCounter,LPWSTR LookupName,PBYTE Data,DWORD DataLen);
400
401#define SCardWriteCache __MINGW_NAME_AW(SCardWriteCache)
402
403#endif /*(_WIN32_WINNT >= 0x0600)*/
404
405#ifdef __cplusplus
406}
407#endif
408
409#endif
410
411#endif