| 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 |
| 20 | extern "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 |