'**************************************************************************
' 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
14 août 2015 à 11:01