2 * MUSCLE SmartCard Development ( http://www.linuxnet.com )
4 * Copyright (C) 1999-2003
5 * David Corcoran <corcoran@linuxnet.com>
6 * Ludovic Rousseau <ludovic.rousseau@free.fr>
8 * $Id: winscard.h 3260 2009-01-02 15:19:59Z rousseau $
13 * @brief This handles smartcard reader communications.
16 #ifndef __winscard_h__
17 #define __winscard_h__
30 PCSC_API LONG
SCardEstablishContext(DWORD dwScope
,
31 /*@null@*/ LPCVOID pvReserved1
, /*@null@*/ LPCVOID pvReserved2
,
32 /*@out@*/ LPSCARDCONTEXT phContext
);
34 PCSC_API LONG
SCardReleaseContext(SCARDCONTEXT hContext
);
36 PCSC_API LONG
SCardIsValidContext(SCARDCONTEXT hContext
);
38 PCSC_API LONG
SCardSetTimeout(SCARDCONTEXT hContext
, DWORD dwTimeout
);
40 PCSC_API LONG
SCardConnect(SCARDCONTEXT hContext
,
43 DWORD dwPreferredProtocols
,
44 /*@out@*/ LPSCARDHANDLE phCard
, /*@out@*/ LPDWORD pdwActiveProtocol
);
46 PCSC_API LONG
SCardReconnect(SCARDHANDLE hCard
,
48 DWORD dwPreferredProtocols
,
49 DWORD dwInitialization
, /*@out@*/ LPDWORD pdwActiveProtocol
);
51 PCSC_API LONG
SCardDisconnect(SCARDHANDLE hCard
, DWORD dwDisposition
);
53 PCSC_API LONG
SCardBeginTransaction(SCARDHANDLE hCard
);
55 PCSC_API LONG
SCardEndTransaction(SCARDHANDLE hCard
, DWORD dwDisposition
);
57 PCSC_API LONG
SCardCancelTransaction(SCARDHANDLE hCard
);
59 PCSC_API LONG
SCardStatus(SCARDHANDLE hCard
,
60 /*@null@*/ /*@out@*/ LPSTR mszReaderName
,
61 /*@null@*/ /*@out@*/ LPDWORD pcchReaderLen
,
62 /*@null@*/ /*@out@*/ LPDWORD pdwState
,
63 /*@null@*/ /*@out@*/ LPDWORD pdwProtocol
,
64 /*@null@*/ /*@out@*/ LPBYTE pbAtr
,
65 /*@null@*/ /*@out@*/ LPDWORD pcbAtrLen
);
67 PCSC_API LONG
SCardGetStatusChange(SCARDCONTEXT hContext
,
69 LPSCARD_READERSTATE_A rgReaderStates
, DWORD cReaders
);
71 PCSC_API LONG
SCardControl(SCARDHANDLE hCard
, DWORD dwControlCode
,
72 LPCVOID pbSendBuffer
, DWORD cbSendLength
,
73 /*@out@*/ LPVOID pbRecvBuffer
, DWORD cbRecvLength
,
74 LPDWORD lpBytesReturned
);
76 PCSC_API LONG
SCardTransmit(SCARDHANDLE hCard
,
77 LPCSCARD_IO_REQUEST pioSendPci
,
78 LPCBYTE pbSendBuffer
, DWORD cbSendLength
,
79 /*@out@*/ LPSCARD_IO_REQUEST pioRecvPci
,
80 /*@out@*/ LPBYTE pbRecvBuffer
, LPDWORD pcbRecvLength
);
82 PCSC_API LONG
SCardListReaderGroups(SCARDCONTEXT hContext
,
83 /*@out@*/ LPSTR mszGroups
, LPDWORD pcchGroups
);
85 PCSC_API LONG
SCardListReaders(SCARDCONTEXT hContext
,
86 /*@null@*/ /*@out@*/ LPCSTR mszGroups
,
87 /*@null@*/ /*@out@*/ LPSTR mszReaders
,
88 /*@out@*/ LPDWORD pcchReaders
);
90 PCSC_API LONG
SCardFreeMemory(SCARDCONTEXT hContext
, LPCVOID pvMem
);
92 PCSC_API LONG
SCardCancel(SCARDCONTEXT hContext
);
94 PCSC_API LONG
SCardGetAttrib(SCARDHANDLE hCard
, DWORD dwAttrId
,
95 /*@out@*/ LPBYTE pbAttr
, LPDWORD pcbAttrLen
);
97 PCSC_API LONG
SCardSetAttrib(SCARDHANDLE hCard
, DWORD dwAttrId
,
98 LPCBYTE pbAttr
, DWORD cbAttrLen
);