winscard.h 18 KB

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