winscard.h

Go to the documentation of this file.
00001 /*
00002  * MUSCLE SmartCard Development ( http://www.linuxnet.com )
00003  *
00004  * Copyright (C) 1999-2003
00005  *  David Corcoran <corcoran@linuxnet.com>
00006  * Copyright (C) 2002-2009
00007  *  Ludovic Rousseau <ludovic.rousseau@free.fr>
00008  *
00009  * $Id: winscard.h 5134 2010-08-15 14:48:18Z rousseau $
00010  */
00011 
00017 #ifndef __winscard_h__
00018 #define __winscard_h__
00019 
00020 #include <pcsclite.h>
00021 
00022 #ifdef __cplusplus
00023 extern "C"
00024 {
00025 #endif
00026 
00027 #ifndef PCSC_API
00028 #define PCSC_API
00029 #endif
00030 
00031     PCSC_API LONG SCardEstablishContext(DWORD dwScope,
00032         /*@null@*/ LPCVOID pvReserved1, /*@null@*/ LPCVOID pvReserved2,
00033         /*@out@*/ LPSCARDCONTEXT phContext);
00034 
00035     PCSC_API LONG SCardReleaseContext(SCARDCONTEXT hContext);
00036 
00037     PCSC_API LONG SCardIsValidContext(SCARDCONTEXT hContext);
00038 
00039     PCSC_API LONG SCardSetTimeout(SCARDCONTEXT hContext, DWORD dwTimeout);
00040 
00041     PCSC_API LONG SCardConnect(SCARDCONTEXT hContext,
00042         LPCSTR szReader,
00043         DWORD dwShareMode,
00044         DWORD dwPreferredProtocols,
00045         /*@out@*/ LPSCARDHANDLE phCard, /*@out@*/ LPDWORD pdwActiveProtocol);
00046 
00047     PCSC_API LONG SCardReconnect(SCARDHANDLE hCard,
00048         DWORD dwShareMode,
00049         DWORD dwPreferredProtocols,
00050         DWORD dwInitialization, /*@out@*/ LPDWORD pdwActiveProtocol);
00051 
00052     PCSC_API LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition);
00053 
00054     PCSC_API LONG SCardBeginTransaction(SCARDHANDLE hCard);
00055 
00056     PCSC_API LONG SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition);
00057 
00058     PCSC_API LONG SCardCancelTransaction(SCARDHANDLE hCard);
00059 
00060     PCSC_API LONG SCardStatus(SCARDHANDLE hCard,
00061         /*@null@*/ /*@out@*/ LPSTR mszReaderName,
00062         /*@null@*/ /*@out@*/ LPDWORD pcchReaderLen,
00063         /*@null@*/ /*@out@*/ LPDWORD pdwState,
00064         /*@null@*/ /*@out@*/ LPDWORD pdwProtocol,
00065         /*@null@*/ /*@out@*/ LPBYTE pbAtr,
00066         /*@null@*/ /*@out@*/ LPDWORD pcbAtrLen);
00067 
00068     PCSC_API LONG SCardGetStatusChange(SCARDCONTEXT hContext,
00069         DWORD dwTimeout,
00070         LPSCARD_READERSTATE rgReaderStates, DWORD cReaders);
00071 
00072     PCSC_API LONG SCardControl(SCARDHANDLE hCard, DWORD dwControlCode,
00073         LPCVOID pbSendBuffer, DWORD cbSendLength,
00074         /*@out@*/ LPVOID pbRecvBuffer, DWORD cbRecvLength,
00075         LPDWORD lpBytesReturned);
00076 
00077     PCSC_API LONG SCardTransmit(SCARDHANDLE hCard,
00078         const SCARD_IO_REQUEST *pioSendPci,
00079         LPCBYTE pbSendBuffer, DWORD cbSendLength,
00080         /*@out@*/ SCARD_IO_REQUEST *pioRecvPci,
00081         /*@out@*/ LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength);
00082 
00083     PCSC_API LONG SCardListReaderGroups(SCARDCONTEXT hContext,
00084         /*@out@*/ LPSTR mszGroups, LPDWORD pcchGroups);
00085 
00086     PCSC_API LONG SCardListReaders(SCARDCONTEXT hContext,
00087         /*@null@*/ /*@out@*/ LPCSTR mszGroups,
00088         /*@null@*/ /*@out@*/ LPSTR mszReaders,
00089         /*@out@*/ LPDWORD pcchReaders);
00090 
00091     PCSC_API LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem);
00092 
00093     PCSC_API LONG SCardCancel(SCARDCONTEXT hContext);
00094 
00095     PCSC_API LONG SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId,
00096         /*@out@*/ LPBYTE pbAttr, LPDWORD pcbAttrLen);
00097 
00098     PCSC_API LONG SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId,
00099         LPCBYTE pbAttr, DWORD cbAttrLen);
00100 
00101 #ifdef __cplusplus
00102 }
00103 #endif
00104 
00105 #endif
00106