FreeRDP
Loading...
Searching...
No Matches
smartcard_windows.c
1
20#include <winpr/config.h>
21
22#include <winpr/crt.h>
23#include <winpr/library.h>
24#include <winpr/smartcard.h>
25
26#include "smartcard_windows.h"
27
28static HMODULE g_WinSCardModule = nullptr;
29
30static SCardApiFunctionTable Windows_SCardApiFunctionTable = {
31 0, /* dwVersion */
32 0, /* dwFlags */
33
34 nullptr, /* SCardEstablishContext */
35 nullptr, /* SCardReleaseContext */
36 nullptr, /* SCardIsValidContext */
37 nullptr, /* SCardListReaderGroupsA */
38 nullptr, /* SCardListReaderGroupsW */
39 nullptr, /* SCardListReadersA */
40 nullptr, /* SCardListReadersW */
41 nullptr, /* SCardListCardsA */
42 nullptr, /* SCardListCardsW */
43 nullptr, /* SCardListInterfacesA */
44 nullptr, /* SCardListInterfacesW */
45 nullptr, /* SCardGetProviderIdA */
46 nullptr, /* SCardGetProviderIdW */
47 nullptr, /* SCardGetCardTypeProviderNameA */
48 nullptr, /* SCardGetCardTypeProviderNameW */
49 nullptr, /* SCardIntroduceReaderGroupA */
50 nullptr, /* SCardIntroduceReaderGroupW */
51 nullptr, /* SCardForgetReaderGroupA */
52 nullptr, /* SCardForgetReaderGroupW */
53 nullptr, /* SCardIntroduceReaderA */
54 nullptr, /* SCardIntroduceReaderW */
55 nullptr, /* SCardForgetReaderA */
56 nullptr, /* SCardForgetReaderW */
57 nullptr, /* SCardAddReaderToGroupA */
58 nullptr, /* SCardAddReaderToGroupW */
59 nullptr, /* SCardRemoveReaderFromGroupA */
60 nullptr, /* SCardRemoveReaderFromGroupW */
61 nullptr, /* SCardIntroduceCardTypeA */
62 nullptr, /* SCardIntroduceCardTypeW */
63 nullptr, /* SCardSetCardTypeProviderNameA */
64 nullptr, /* SCardSetCardTypeProviderNameW */
65 nullptr, /* SCardForgetCardTypeA */
66 nullptr, /* SCardForgetCardTypeW */
67 nullptr, /* SCardFreeMemory */
68 nullptr, /* SCardAccessStartedEvent */
69 nullptr, /* SCardReleaseStartedEvent */
70 nullptr, /* SCardLocateCardsA */
71 nullptr, /* SCardLocateCardsW */
72 nullptr, /* SCardLocateCardsByATRA */
73 nullptr, /* SCardLocateCardsByATRW */
74 nullptr, /* SCardGetStatusChangeA */
75 nullptr, /* SCardGetStatusChangeW */
76 nullptr, /* SCardCancel */
77 nullptr, /* SCardConnectA */
78 nullptr, /* SCardConnectW */
79 nullptr, /* SCardReconnect */
80 nullptr, /* SCardDisconnect */
81 nullptr, /* SCardBeginTransaction */
82 nullptr, /* SCardEndTransaction */
83 nullptr, /* SCardCancelTransaction */
84 nullptr, /* SCardState */
85 nullptr, /* SCardStatusA */
86 nullptr, /* SCardStatusW */
87 nullptr, /* SCardTransmit */
88 nullptr, /* SCardGetTransmitCount */
89 nullptr, /* SCardControl */
90 nullptr, /* SCardGetAttrib */
91 nullptr, /* SCardSetAttrib */
92 nullptr, /* SCardUIDlgSelectCardA */
93 nullptr, /* SCardUIDlgSelectCardW */
94 nullptr, /* GetOpenCardNameA */
95 nullptr, /* GetOpenCardNameW */
96 nullptr, /* SCardDlgExtendedError */
97 nullptr, /* SCardReadCacheA */
98 nullptr, /* SCardReadCacheW */
99 nullptr, /* SCardWriteCacheA */
100 nullptr, /* SCardWriteCacheW */
101 nullptr, /* SCardGetReaderIconA */
102 nullptr, /* SCardGetReaderIconW */
103 nullptr, /* SCardGetDeviceTypeIdA */
104 nullptr, /* SCardGetDeviceTypeIdW */
105 nullptr, /* SCardGetReaderDeviceInstanceIdA */
106 nullptr, /* SCardGetReaderDeviceInstanceIdW */
107 nullptr, /* SCardListReadersWithDeviceInstanceIdA */
108 nullptr, /* SCardListReadersWithDeviceInstanceIdW */
109 nullptr /* SCardAudit */
110};
111
112const SCardApiFunctionTable* Windows_GetSCardApiFunctionTable(void)
113{
114 return &Windows_SCardApiFunctionTable;
115}
116
117int Windows_InitializeSCardApi(void)
118{
119 g_WinSCardModule = LoadLibraryA("WinSCard.dll");
120
121 if (!g_WinSCardModule)
122 return -1;
123
124 WinSCard_LoadApiTableFunctions(&Windows_SCardApiFunctionTable, g_WinSCardModule);
125 return 1;
126}