1 | /* |
2 | * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved. |
3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 | * |
5 | * This code is free software; you can redistribute it and/or modify it |
6 | * under the terms of the GNU General Public License version 2 only, as |
7 | * published by the Free Software Foundation. Oracle designates this |
8 | * particular file as subject to the "Classpath" exception as provided |
9 | * by Oracle in the LICENSE file that accompanied this code. |
10 | * |
11 | * This code is distributed in the hope that it will be useful, but WITHOUT |
12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
14 | * version 2 for more details (a copy is included in the LICENSE file that |
15 | * accompanied this code). |
16 | * |
17 | * You should have received a copy of the GNU General Public License version |
18 | * 2 along with this work; if not, write to the Free Software Foundation, |
19 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
20 | * |
21 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 | * or visit www.oracle.com if you need additional information or have any |
23 | * questions. |
24 | */ |
25 | |
26 | typedef LONG (*FPTR_SCardEstablishContext)(DWORD dwScope, |
27 | LPCVOID pvReserved1, |
28 | LPCVOID pvReserved2, |
29 | LPSCARDCONTEXT phContext); |
30 | |
31 | typedef LONG (*FPTR_SCardConnect)(SCARDCONTEXT hContext, |
32 | LPCSTR szReader, |
33 | DWORD dwShareMode, |
34 | DWORD dwPreferredProtocols, |
35 | LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol); |
36 | |
37 | typedef LONG (*FPTR_SCardDisconnect)(SCARDHANDLE hCard, DWORD dwDisposition); |
38 | |
39 | typedef LONG (*FPTR_SCardStatus)(SCARDHANDLE hCard, |
40 | LPSTR mszReaderNames, |
41 | LPDWORD pcchReaderLen, |
42 | LPDWORD pdwState, |
43 | LPDWORD pdwProtocol, |
44 | LPBYTE pbAtr, LPDWORD pcbAtrLen); |
45 | |
46 | typedef LONG (*FPTR_SCardGetStatusChange)(SCARDCONTEXT hContext, |
47 | DWORD dwTimeout, |
48 | SCARD_READERSTATE *rgReaderStates, DWORD cReaders); |
49 | |
50 | typedef LONG (*FPTR_SCardTransmit)(SCARDHANDLE hCard, |
51 | const SCARD_IO_REQUEST *pioSendPci, |
52 | LPCBYTE pbSendBuffer, |
53 | DWORD cbSendLength, |
54 | SCARD_IO_REQUEST *pioRecvPci, |
55 | LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength); |
56 | |
57 | typedef LONG (*FPTR_SCardListReaders)(SCARDCONTEXT hContext, |
58 | LPCSTR mszGroups, |
59 | LPSTR mszReaders, LPDWORD pcchReaders); |
60 | |
61 | typedef LONG (*FPTR_SCardBeginTransaction)(SCARDHANDLE hCard); |
62 | |
63 | typedef LONG (*FPTR_SCardEndTransaction)(SCARDHANDLE hCard, |
64 | DWORD dwDisposition); |
65 | |
66 | typedef LONG (*FPTR_SCardControl)(SCARDHANDLE hCard, DWORD dwControlCode, |
67 | LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, |
68 | DWORD pcbRecvLength, LPDWORD lpBytesReturned); |
69 | |
70 | #define CALL_SCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext) \ |
71 | ((scardEstablishContext)(dwScope, pvReserved1, pvReserved2, phContext)) |
72 | |
73 | #define CALL_SCardConnect(hContext, szReader, dwSharedMode, dwPreferredProtocols, phCard, pdwActiveProtocols) \ |
74 | ((scardConnect)(hContext, szReader, dwSharedMode, dwPreferredProtocols, phCard, pdwActiveProtocols)) |
75 | |
76 | #define CALL_SCardDisconnect(hCard, dwDisposition) \ |
77 | ((scardDisconnect)(hCard, dwDisposition)) |
78 | |
79 | #define CALL_SCardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen) \ |
80 | ((scardStatus)(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen)) |
81 | |
82 | #define CALL_SCardGetStatusChange(hContext, dwTimeout, rgReaderStates, cReaders) \ |
83 | ((scardGetStatusChange)(hContext, dwTimeout, rgReaderStates, cReaders)) |
84 | |
85 | #define CALL_SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, \ |
86 | pioRecvPci, pbRecvBuffer, pcbRecvLength) \ |
87 | ((scardTransmit)(hCard, pioSendPci, pbSendBuffer, cbSendLength, \ |
88 | pioRecvPci, pbRecvBuffer, pcbRecvLength)) |
89 | |
90 | #define CALL_SCardListReaders(hContext, mszGroups, mszReaders, pcchReaders) \ |
91 | ((scardListReaders)(hContext, mszGroups, mszReaders, pcchReaders)) |
92 | |
93 | #define CALL_SCardBeginTransaction(hCard) \ |
94 | ((scardBeginTransaction)(hCard)) |
95 | |
96 | #define CALL_SCardEndTransaction(hCard, dwDisposition) \ |
97 | ((scardEndTransaction)(hCard, dwDisposition)) |
98 | |
99 | #define CALL_SCardControl(hCard, dwControlCode, pbSendBuffer, cbSendLength, \ |
100 | pbRecvBuffer, pcbRecvLength, lpBytesReturned) \ |
101 | ((scardControl)(hCard, dwControlCode, pbSendBuffer, cbSendLength, \ |
102 | pbRecvBuffer, pcbRecvLength, lpBytesReturned)) |
103 | |
104 | extern FPTR_SCardEstablishContext scardEstablishContext; |
105 | extern FPTR_SCardConnect scardConnect; |
106 | extern FPTR_SCardDisconnect scardDisconnect; |
107 | extern FPTR_SCardStatus scardStatus; |
108 | extern FPTR_SCardGetStatusChange scardGetStatusChange; |
109 | extern FPTR_SCardTransmit scardTransmit; |
110 | extern FPTR_SCardListReaders scardListReaders; |
111 | extern FPTR_SCardBeginTransaction scardBeginTransaction; |
112 | extern FPTR_SCardEndTransaction scardEndTransaction; |
113 | extern FPTR_SCardControl scardControl; |
114 | |