winscard.h 4.4 KB
Newer Older
D
duke 已提交
1
/*
2
 * MUSCLE SmartCard Development ( https://pcsclite.apdu.fr/ )
D
duke 已提交
3 4
 *
 * Copyright (C) 1999-2003
5 6
 *  David Corcoran <corcoran@musclecard.com>
 * Copyright (C) 2002-2009
D
duke 已提交
7 8
 *  Ludovic Rousseau <ludovic.rousseau@free.fr>
 *
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
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * @file
 * @brief This handles smart card reader communications.
D
duke 已提交
36 37 38 39 40 41 42 43 44 45 46 47
 */

#ifndef __winscard_h__
#define __winscard_h__

#include <pcsclite.h>

#ifdef __cplusplus
extern "C"
{
#endif

48 49 50
#ifndef PCSC_API
#define PCSC_API
#endif
D
duke 已提交
51

52 53 54
      PCSC_API LONG SCardEstablishContext(DWORD dwScope,
            /*@null@*/ LPCVOID pvReserved1, /*@null@*/ LPCVOID pvReserved2,
            /*@out@*/ LPSCARDCONTEXT phContext);
D
duke 已提交
55

56
      PCSC_API LONG SCardReleaseContext(SCARDCONTEXT hContext);
D
duke 已提交
57

58
      PCSC_API LONG SCardIsValidContext(SCARDCONTEXT hContext);
D
duke 已提交
59

60 61 62 63 64
      PCSC_API LONG SCardConnect(SCARDCONTEXT hContext,
            LPCSTR szReader,
            DWORD dwShareMode,
            DWORD dwPreferredProtocols,
            /*@out@*/ LPSCARDHANDLE phCard, /*@out@*/ LPDWORD pdwActiveProtocol);
D
duke 已提交
65

66 67 68 69
      PCSC_API LONG SCardReconnect(SCARDHANDLE hCard,
            DWORD dwShareMode,
            DWORD dwPreferredProtocols,
            DWORD dwInitialization, /*@out@*/ LPDWORD pdwActiveProtocol);
D
duke 已提交
70

71
      PCSC_API LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition);
D
duke 已提交
72

73
      PCSC_API LONG SCardBeginTransaction(SCARDHANDLE hCard);
D
duke 已提交
74

75
      PCSC_API LONG SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition);
D
duke 已提交
76

77 78 79 80 81 82 83
      PCSC_API LONG SCardStatus(SCARDHANDLE hCard,
            /*@null@*/ /*@out@*/ LPSTR mszReaderName,
            /*@null@*/ /*@out@*/ LPDWORD pcchReaderLen,
            /*@null@*/ /*@out@*/ LPDWORD pdwState,
            /*@null@*/ /*@out@*/ LPDWORD pdwProtocol,
            /*@null@*/ /*@out@*/ LPBYTE pbAtr,
            /*@null@*/ /*@out@*/ LPDWORD pcbAtrLen);
D
duke 已提交
84

85 86 87
      PCSC_API LONG SCardGetStatusChange(SCARDCONTEXT hContext,
            DWORD dwTimeout,
            SCARD_READERSTATE *rgReaderStates, DWORD cReaders);
D
duke 已提交
88

89 90 91 92
      PCSC_API LONG SCardControl(SCARDHANDLE hCard, DWORD dwControlCode,
            LPCVOID pbSendBuffer, DWORD cbSendLength,
            /*@out@*/ LPVOID pbRecvBuffer, DWORD cbRecvLength,
            LPDWORD lpBytesReturned);
D
duke 已提交
93

94 95 96 97 98
      PCSC_API LONG SCardTransmit(SCARDHANDLE hCard,
            const SCARD_IO_REQUEST *pioSendPci,
            LPCBYTE pbSendBuffer, DWORD cbSendLength,
            /*@out@*/ SCARD_IO_REQUEST *pioRecvPci,
            /*@out@*/ LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength);
D
duke 已提交
99

100 101
      PCSC_API LONG SCardListReaderGroups(SCARDCONTEXT hContext,
            /*@out@*/ LPSTR mszGroups, LPDWORD pcchGroups);
D
duke 已提交
102

103 104 105 106
      PCSC_API LONG SCardListReaders(SCARDCONTEXT hContext,
            /*@null@*/ /*@out@*/ LPCSTR mszGroups,
            /*@null@*/ /*@out@*/ LPSTR mszReaders,
            /*@out@*/ LPDWORD pcchReaders);
D
duke 已提交
107

108
      PCSC_API LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem);
D
duke 已提交
109

110
      PCSC_API LONG SCardCancel(SCARDCONTEXT hContext);
D
duke 已提交
111

112 113
      PCSC_API LONG SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId,
            /*@out@*/ LPBYTE pbAttr, LPDWORD pcbAttrLen);
D
duke 已提交
114

115 116
      PCSC_API LONG SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId,
            LPCBYTE pbAttr, DWORD cbAttrLen);
D
duke 已提交
117 118 119 120 121 122

#ifdef __cplusplus
}
#endif

#endif
123