1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418
| '**************************************************************************
' winscard.dll Visual Basic Function Prototypes
'**************************************************************************
'SCardAccessStartedEvent
'http://msdn.microsoft.com/en-us/library/aa379466(VS.85).aspx
'HANDLE STDCALL SCardAccessStartedEvent(VOID)
Public Declare Function SCardAccessStartedEvent Lib "winscard.dll" () As Long
Public Type SCARD_READERSTATE
szReader As String
pvUserData As Long
dwCurrentState As Long
dwEventState As Long
cbAtr As Long
rgbAtr As Byte
End Type
'http://msdn.microsoft.com/en-us/library/aa922903.aspx
Public Type SCARD_ATRMASK
cbAtr As Long
rgbAtr As Byte
rgbMask As Byte
End Type
'http://msdn.microsoft.com/en-us/library/aa379807.aspx
Public Type SCARD_IO_REQUEST
dwProtocol As Long
dwPciLength As Long
End Type
'SCardAddReaderToGroup
'LONG STDCALL SCardAddReaderToGroupA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
Public Declare Function SCardAddReaderToGroup Lib "winscard.dll" Alias "SCardAddReaderToGroupA" ( _
ByVal hContext As Long, _
ByVal szReaderName As String, _
ByVal szGroupName As String _
) As Long
'SCardBeginTransaction
'LONG STDCALL SCardBeginTransaction(SCARDHANDLE(in))
Public Declare Function SCardBeginTransaction Lib "winscard.dll" ( _
ByVal hCard As Long _
) As Long
'SCardCancel
'LONG STDCALL SCardCancel(SCARDCONTEXT(in))
Public Declare Function SCardCancel Lib "winscard.dll" ( _
ByVal hContext As Long _
) As Long
'SCardConnect
'LONG STDCALL SCardConnectA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in), DWORD(in),
' LPSCARDHANDLE(out), LPDWORD(out))
Public Declare Function SCardConnect Lib "winscard.dll" Alias "SCardConnectA" ( _
ByVal hContext As Long, _
ByVal szReader As String, _
ByVal dwShareMode As Long, _
ByVal dwPreferredProtocols As Long, _
ByRef phCard As Long, _
ByRef pdwActiveProtocol As Long _
) As Long
'SCardControl
'LONG STDCALL SCardControl(SCARDHANDLE(in), DWORD(in), LPCVOID(in), DWORD(in),
' LPVOID(out), DWORD(in), LPDWORD(out))
Public Declare Function SCardControl Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByVal dwControlCode As Long, _
ByRef lpInBuffer As Long, _
ByVal nInBufferSize As Long, _
ByRef lpOutBuffer As Long, _
ByVal nOutBufferSize As Long, _
ByRef lpBytesReturned As Long _
) As Long
'SCardDisconnect
'LONG STDCALL SCardDisconnect(SCARDHANDLE(in), DWORD(in))
Public Declare Function SCardDisconnect Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByVal dwDisposition As Long _
) As Long
'SCardEndTransaction
'LONG STDCALL SCardEndTransaction(SCARDHANDLE(in), DWORD(in))
Public Declare Function SCardEndTransaction Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByVal dwDisposition As Long _
) As Long
'SCardEstablishContext
'LONG STDCALL SCardEstablishContext(DWORD(in), LPCVOID(in), LPCVOID(in),
' LPSCARDCONTEXT(out))
Public Declare Function SCardEstablishContext Lib "winscard.dll" ( _
ByVal dwScope As Long, _
ByVal pvReserved1 As Long, _
ByVal pvReserved2 As Long, _
ByRef phContext As Long _
) As Long
'SCardForgetCardType
'LONG STDCALL SCardForgetCardTypeA(SCARDCONTEXT(in), LPCSTR(in))
Public Declare Function SCardForgetCardType Lib "winscard.dll" Alias "SCardForgetCardTypeA" ( _
ByVal hContext As Long, _
ByVal szCardName As String _
) As Long
'SCardForgetReader
'LONG STDCALL SCardForgetReaderA(SCARDCONTEXT(in), LPCSTR(in))
Public Declare Function SCardForgetReader Lib "winscard.dll" Alias "SCardForgetReaderA" ( _
ByVal hContext As Long, _
ByVal szReaderName As String _
) As Long
'SCardForgetReaderGroup
'LONG STDCALL SCardForgetReaderGroupA(SCARDCONTEXT(in), LPCSTR(in))
Public Declare Function SCardForgetReaderGroup Lib "winscard.dll" Alias "SCardForgetReaderGroupA" ( _
ByVal hContext As Long, _
ByVal szGroupName As String _
) As Long
'SCardFreeMemory
'LONG STDCALL SCardFreeMemory(SCARDCONTEXT(in), LPCVOID(in))
Public Declare Function SCardFreeMemory Lib "winscard.dll" ( _
ByVal hContext As Long, _
ByVal pvMem As Long _
) As Long
'SCardGetAttrib
'LONG STDCALL SCardGetAttrib(SCARDHANDLE(in), DWORD(in), LPBYTE(out), LPDWORD(inout))
Public Declare Function SCardGetAttrib Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByVal dwAttrId As Long, _
ByRef pbAttr As ByteArray, _
ByRef pcbAttrLen As Long _
) As Long
'SCardGetCardTypeProviderName
'LONG STDCALL SCardGetCardTypeProviderNameA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in),
' LPSTR(out), LPDWORD(inout))
Public Declare Function SCardGetCardTypeProviderName Lib "winscard.dll" Alias "SCardGetCardTypeProviderNameA" ( _
ByVal hContext As Long, _
ByVal szCardName As String, _
ByVal dwProviderId As Long, _
ByVal szProvider As String, _
ByRef pcchProvider As Long _
) As Long
'SCardGetProviderId
'LONG STDCALL SCardGetProviderIdA(SCARDCONTEXT(in), LPCSTR(in), LPGUID(out))
Public Declare Function SCardGetProviderId Lib "winscard.dll" Alias "SCardGetProviderIdA" ( _
ByVal hContext As Long, _
ByVal szCard As String, _
ByRef pguidProviderId As GUID _
) As Long
'SCardGetStatusChange
'LONG STDCALL SCardGetStatusChangeA(SCARDCONTEXT(in), DWORD(in),
' LPSCARD_READERSTATEA(inout), DWORD(in))
Public Declare Function SCardGetStatusChange Lib "winscard.dll" Alias "SCardGetStatusChangeA" ( _
ByVal hContext As Long, _
ByVal dwTimeout As Long, _
ByRef rgReaderStates() As SCARD_READERSTATE, _
ByVal cReaders As Long _
) As Long
'SCardIntroduceCardType
'LONG STDCALL SCardIntroduceCardTypeA(SCARDCONTEXT(in), LPCSTR(in), LPCGUID(in),
' LPCGUID(in), DWORD(in), LPCBYTE(in), LPCBYTE(in), DWORD(in))
Public Declare Function SCardIntroduceCardType Lib "winscard.dll" Alias "SCardIntroduceCardTypeA" ( _
ByVal hContext As Long, _
ByVal szCardName As String, _
ByRef pguidPrimaryProvider As GUID, _
ByRef pguidInterfaces As GUID, _
ByVal dwInterfaceCount As Long, _
ByVal pbAtr As ByteArray, _
ByVal pbAtrMask As ByteArray, _
ByVal cbAtrLen As Long _
) As Long
'SCardIntroduceReader
'LONG STDCALL SCardIntroduceReaderA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
Public Declare Function SCardIntroduceReader Lib "winscard.dll" Alias "SCardIntroduceReaderA" ( _
ByVal hContext As Long, _
ByVal szReaderName As String, _
ByVal szDeviceName As String _
) As Long
'SCardIntroduceReaderGroup
'LONG STDCALL SCardIntroduceReaderGroupA(SCARDCONTEXT(in), LPCSTR(in))
Public Declare Function SCardIntroduceReaderGroup Lib "winscard.dll" Alias "SCardIntroduceReaderGroupA" ( _
ByVal hContext As Long, _
ByVal szGroupName As String _
) As Long
'SCardIsValidContext
'LONG STDCALL SCardIsValidContext(SCARDCONTEXT(in))
Public Declare Function SCardIsValidContext Lib "winscard.dll" ( _
ByVal hContext As Long _
) As Long
'SCardListCards
'LONG STDCALL SCardListCardsA(SCARDCONTEXT(in), LPCBYTE(in), LPCGUID(in), DWORD(in),
' LPCSTR(out), LPDWORD(inout))
Public Declare Function SCardListCards Lib "winscard.dll" Alias "SCardListCardsA" ( _
ByVal hContext As Long, _
ByVal pbAtr As ByteArray, _
ByVal rgguidInterfaces As Long, _
ByVal cguidInterfaceCount As Long, _
ByVal mszCards As String, _
ByRef pcchCards As Long _
) As Long
'SCardListInterfaces
'LONG STDCALL SCardListInterfacesA(SCARDCONTEXT(in), LPCSTR(in), LPGUID(out),
' LPDWORD(inout))
Public Declare Function SCardListInterfaces Lib "winscard.dll" Alias "SCardListInterfacesA" ( _
ByVal hContext As Long, _
ByVal szCard As String, _
ByRef pguidInterfaces As GUID, _
ByRef pcguidInterfaces As Long _
) As Long
'SCardListReaderGroups
'LONG STDCALL SCardListReaderGroupsA(SCARDCONTEXT(in), LPSTR(out), LPDWORD(inout))
Public Declare Function SCardListReaderGroups Lib "winscard.dll" Alias "SCardListReaderGroupsA" ( _
ByVal hContext As Long, _
ByVal mszGroups As String, _
ByRef pcchGroups As Long _
) As Long
'SCardListReaders
'LONG STDCALL SCardListReadersA(SCARDCONTEXT(in), LPCSTR(in), LPSTR(out), LPDWORD(inout))
Public Declare Function SCardListReaders Lib "winscard.dll" Alias "SCardListReadersA" ( _
ByVal hContext As Long, _
ByVal mszGroups As String, _
ByVal mszReaders As String, _
ByRef pcchReaders As Long _
) As Long
'SCardLocateCards
'LONG STDCALL SCardLocateCardsA(SCARDCONTEXT(in), LPCSTR(in),
' LPSCARD_READERSTATEA(inout), DWORD(in))
Public Declare Function SCardLocateCards Lib "winscard.dll" Alias "SCardLocateCardsA" ( _
ByVal hContext As Long, _
ByVal mszCards As String, _
ByRef rgReaderStates() As SCARD_READERSTATE, _
ByVal cReaders As Long _
) As Long
'SCardLocateCardsByATR
'LONG STDCALL SCardLocateCardsByATRA(SCARDCONTEXT(in), LPSCARD_ATRMASK(in), DWORD(in),
' LPSCARD_READERSTATEA(inout), DWORD(in))
Public Declare Function SCardLocateCardsByATR Lib "winscard.dll" Alias "SCardLocateCardsByATRA" ( _
ByVal hContext As Long, _
ByRef rgAtrMasks() As SCARD_ATRMASK, _
ByVal cAtrs As Long, _
ByRef rgReaderStates() As SCARD_READERSTATE, _
ByVal cReaders As Long _
) As Long
'SCardReconnect
'LONG STDCALL SCardReconnect(SCARDHANDLE(in), DWORD(in), DWORD(in), DWORD(in),
' LPDWORD(out))
Public Declare Function SCardReconnect Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByVal dwShareMode As Long, _
ByVal dwPreferredProtocols As Long, _
ByVal dwInitialization As Long, _
ByRef pdwActiveProtocol As Long _
) As Long
'SCardReleaseContext
'LONG STDCALL SCardReleaseContext(SCARDCONTEXT(in))
Public Declare Function SCardReleaseContext Lib "winscard.dll" ( _
ByVal hContext As Long _
) As Long
'SCardReleaseStartedEvent
'VOID STDCALL SCardReleaseStartedEvent(HANDLE(in))
Public Declare Sub SCardReleaseStartedEvent Lib "winscard.dll" ( _
ByVal hStartedEventHandle As Long _
)
'SCardRemoveReaderFromGroup
'LONG STDCALL SCardRemoveReaderFromGroupA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
Public Declare Function SCardRemoveReaderFromGroup Lib "winscard.dll" Alias "SCardRemoveReaderFromGroupA" ( _
ByVal hContext As Long, _
ByVal szReaderName As String, _
ByVal szGroupName As String _
) As Long
'SCardSetAttrib
'LONG STDCALL SCardSetAttrib(SCARDHANDLE(in), DWORD(in), LPCBYTE(in), DWORD(in))
Public Declare Function SCardSetAttrib Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByVal dwAttrId As Long, _
ByVal pbAttr As ByteArray, _
ByVal cbAttrLen As Long _
) As Long
'SCardSetCardTypeProviderName
'LONG STDCALL SCardSetCardTypeProviderNameA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in),
' LPCSTR(in))
Public Declare Function SCardSetCardTypeProviderName Lib "winscard.dll" Alias "SCardSetCardTypeProviderNameA" ( _
ByVal hContext As Long, _
ByVal szCardName As String, _
ByVal dwProviderId As Long, _
ByVal szProvider As String _
) As Long
'SCardState
'LONG STDCALL SCardState(SCARDHANDLE(in), LPDWORD(out), LPDWORD(out), LPBYTE(out),
' LPDWORD(out))
Public Declare Function SCardState Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByRef pdwState As Long, _
ByRef pdwProtocol As Long, _
ByRef pbAtr As ByteArray, _
ByRef pcbAtrLen As Long _
) As Long
'SCardStatus
'LONG STDCALL SCardStatusA(SCARDHANDLE(in), LPSTR(out), LPDWORD(inout), LPDWORD(out),
' LPDWORD(out), LPBYTE(out), LPDWORD(inout))
Public Declare Function SCardStatus Lib "winscard.dll" Alias "SCardStatusA" ( _
ByVal hCard As Long, _
ByVal szReaderName As String, _
ByRef pcchReaderLen As Long, _
ByRef pdwState As Long, _
ByRef pdwProtocol As Long, _
ByRef pbAtr As ByteArray, _
ByRef pcbAtrLen As Long _
) As Long
'SCardTransmit
'LONG STDCALL SCardTransmit(SCARDHANDLE(in), LPCSCARD_IO_REQUEST(in), LPCBYTE(in),
' DWORD(in), LPSCARD_IO_REQUEST(inout), LPBYTE(out), LPDWORD(inout))
Public Declare Function SCardTransmit Lib "winscard.dll" ( _
ByVal hCard As Long, _
ByRef pioSendPci As SCARD_IO_REQUEST, _
ByRef pbSendBuffer As Byte, _
ByVal cbSendLength As Long, _
ByRef pioRecvPci As SCARD_IO_REQUEST, _
ByRef pbRecvBuffer As Byte, _
ByRef pcbRecvLength As Long _
) As Long
Public Declare Function SCardTransmitLong Lib "winscard.dll" Alias "SCardTransmit" ( _
ByVal hCard As Long, _
ByRef pioSendPci As SCARD_IO_REQUEST, _
ByRef pbSendBuffer As Byte, _
ByVal cbSendLength As Long, _
ByVal pioRecvPci As Long, _
ByRef pbRecvBuffer As Byte, _
ByRef pcbRecvLength As Long _
) As Long
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function ReadBadge() As String
Dim hContext As Long
Dim hCard As Long
Dim retval As Long
Dim Scope As Long
Dim readers As String * 256
Dim groups As String * 256
Dim activeprotocol As Long
Dim readerlen As Long
Dim scard_protocol_t0_or_t1 As Long
Dim scard_share_shared As Long
Dim recvlen As Long
Dim bytArray() As Byte
Dim recvbuff(256) As ByteArray
Dim Smem As Integer
Dim i As Integer
Dim chaine_hexa As String
Dim scad_leave_card As Long
scard_protocol_t0_or_t1 = 0
scard_share_shared = 3
readerlen = 256
recvlen = 255
strHexa = ""
retval = SCardEstablishContext(Scope, 0, 0, hContext)
If retval <> 0 Then MsgBox "erreur SCardEstablishContext n." & CStr(retval)
retval = SCardListReaders(hContext, groups, readers, readerlen)
If retval <> 0 Then MsgBox "erreur SCardListReaders n. " & CStr(retval)
retval = SCardConnect(hContext, readers, scard_share_shared, scard_protocol_t0_or_t1, hCard, activeprotocol)
If retval <> 0 Then MsgBox "erreur SCardConnect n. " & CStr(retval)
retval = SCardStatus(hCard, readers, readerlen, 1, scard_protocol_t0_or_t1, recvbuff(0), recvlen)
If retval <> 0 Then MsgBox "Erreur SCardStatus n. " & CStr(retval)
bytArray = recvbuff(0).B
For i = 0 To recvlen - 1
chaine_hexa = bytArray(i)
strHexa = strHexa & " " & Format(decimal_en_hexadecimal(chaine_hexa), "00")
Next i
retval = SCardDisconnect(hCard, scad_leave_card)
If retval <> 0 Then MsgBox "erreur SCardDisconnect n. " & CStr(retval)
retval = SCardReleaseContext(hContext)
If retval <> 0 Then MsgBox "erreur SCardReleaseContext n. " & CStr(retval)
ReadBadge = Trim(strHexa)
End Function |
Partager