[2/2] winscard: Add headers for the upcoming implementation of the winscard dll.

Francois Gouget fgouget at codeweavers.com
Tue May 15 06:51:44 CDT 2007


---

This second winscard patch adds the headers defining the winscard API. I 
have not reproduced the part about the exported variables because this 
works differently in Winelib and in Windows because we cannot export 
variables in Winelib. We can worry about them later if they are really 
needed.

With this patch, one can compile the stub version of the winscard dll (I 
will post that part to wine-devel next).


 include/Makefile.in |    2 +
 include/winscard.h  |  150 +++++++++++++++++++++++++++++++++++++++++++++++++++
 include/winsmcrd.h  |   37 +++++++++++++
 3 files changed, 189 insertions(+), 0 deletions(-)

diff --git a/include/Makefile.in b/include/Makefile.in
index d218856..7dc0cc3 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -352,6 +352,8 @@ SRCDIR_INCLUDES = \
 	winreg.h \
 	winres.h \
 	winresrc.h \
+	winscard.h \
+	winsmcrd.h \
 	winsock.h \
 	winsock2.h \
 	winspool.h \
diff --git a/include/winscard.h b/include/winscard.h
new file mode 100644
index 0000000..8da8e7f
--- /dev/null
+++ b/include/winscard.h
@@ -0,0 +1,150 @@
+/*
+ * Winscard definitions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINSCARD_H
+#define __WINE_WINSCARD_H
+
+#include <wtypes.h>
+#include <winioctl.h>
+#include <winsmcrd.h>
+#include <scarderr.h>
+
+#ifndef _LPCBYTE_DEFINED
+#define _LPCBYTE_DEFINED
+typedef const BYTE *LPCBYTE;
+#endif
+
+typedef ULONG_PTR SCARDCONTEXT, *PSCARDCONTEXT, *LPSCARDCONTEXT;
+typedef ULONG_PTR SCARDHANDLE,  *PSCARDHANDLE,  *LPSCARDHANDLE;
+
+typedef struct _SCARD_ATRMASK
+{
+    DWORD cbAtr;
+    BYTE  rgbAtr[36];
+    BYTE  rgbMask[36];
+} SCARD_ATRMASK, *PSCARD_ATRMASK, *LPSCARD_ATRMASK;
+
+typedef struct
+{
+    LPCSTR szReader;
+    LPVOID pvUserData;
+    DWORD  dwCurrentState;
+    DWORD  dwEventState;
+    DWORD  cbAtr;
+    BYTE   rgbAtr[36];
+} SCARD_READERSTATEA, *PSCARD_READERSTATEA, *LPSCARD_READERSTATEA;
+typedef struct
+{
+    LPCWSTR szReader;
+    LPVOID  pvUserData;
+    DWORD   dwCurrentState;
+    DWORD   dwEventState;
+    DWORD   cbAtr;
+    BYTE    rgbAtr[36];
+} SCARD_READERSTATEW, *PSCARD_READERSTATEW, *LPSCARD_READERSTATEW;
+DECL_WINELIB_TYPE_AW(SCARD_READERSTATE)
+DECL_WINELIB_TYPE_AW(PSCARD_READERSTATE)
+DECL_WINELIB_TYPE_AW(LPSCARD_READERSTATE)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HANDLE      WINAPI SCardAccessStartedEvent(void);
+LONG        WINAPI SCardAddReaderToGroupA(SCARDCONTEXT,LPCSTR,LPCSTR);
+LONG        WINAPI SCardAddReaderToGroupW(SCARDCONTEXT,LPCWSTR,LPCWSTR);
+#define     SCardAddReaderToGroup WINELIB_NAME_AW(SCardAddReaderToGroup)
+LONG        WINAPI SCardBeginTransaction(SCARDHANDLE);
+LONG        WINAPI SCardCancel(SCARDCONTEXT);
+LONG        WINAPI SCardConnectA(SCARDCONTEXT,LPCSTR,DWORD,DWORD,LPSCARDHANDLE,LPDWORD);
+LONG        WINAPI SCardConnectW(SCARDCONTEXT,LPCWSTR,DWORD,DWORD,LPSCARDHANDLE,LPDWORD);
+#define     SCardConnect WINELIB_NAME_AW(SCardConnect)
+LONG        WINAPI SCardControl(SCARDHANDLE,DWORD,LPCVOID,DWORD,LPVOID,DWORD,LPDWORD);
+LONG        WINAPI SCardDisconnect(SCARDHANDLE,DWORD);
+LONG        WINAPI SCardEndTransaction(SCARDHANDLE,DWORD);
+LONG        WINAPI SCardEstablishContext(DWORD,LPCVOID,LPCVOID,LPSCARDCONTEXT);
+LONG        WINAPI SCardForgetCardTypeA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardForgetCardTypeW(SCARDCONTEXT,LPCWSTR);
+#define     SCardForgetCardType WINELIB_NAME_AW(SCardForgetCardType)
+LONG        WINAPI SCardForgetReaderA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardForgetReaderW(SCARDCONTEXT,LPCWSTR);
+#define     SCardForgetReader WINELIB_NAME_AW(SCardForgetReader)
+LONG        WINAPI SCardForgetReaderGroupA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardForgetReaderGroupW(SCARDCONTEXT,LPCWSTR);
+#define     SCardForgetReaderGroup WINELIB_NAME_AW(SCardForgetReaderGroup)
+LONG        WINAPI SCardFreeMemory(SCARDCONTEXT,LPCVOID);
+LONG        WINAPI SCardGetAttrib(SCARDHANDLE,DWORD,LPBYTE,LPDWORD);
+LONG        WINAPI SCardGetCardTypeProviderNameA(SCARDCONTEXT,LPCSTR,DWORD,LPSTR,LPDWORD);
+LONG        WINAPI SCardGetCardTypeProviderNameW(SCARDCONTEXT,LPCWSTR,DWORD,LPWSTR,LPDWORD);
+#define     SCardGetCardTypeProviderName WINELIB_NAME_AW(SCardGetCardTypeProviderName)
+LONG        WINAPI SCardGetProviderIdA(SCARDCONTEXT,LPCSTR,LPGUID);
+LONG        WINAPI SCardGetProviderIdW(SCARDCONTEXT,LPCWSTR,LPGUID);
+#define     SCardGetProviderId WINELIB_NAME_AW(SCardGetProviderId)
+LONG        WINAPI SCardGetStatusChangeA(SCARDCONTEXT,DWORD,LPSCARD_READERSTATEA,DWORD);
+LONG        WINAPI SCardGetStatusChangeW(SCARDCONTEXT,DWORD,LPSCARD_READERSTATEW,DWORD);
+#define     SCardGetStatusChange WINELIB_NAME_AW(SCardGetStatusChange)
+LONG        WINAPI SCardIntroduceCardTypeA(SCARDCONTEXT,LPCSTR,LPCGUID,LPCGUID,DWORD,LPCBYTE,LPCBYTE,DWORD);
+LONG        WINAPI SCardIntroduceCardTypeW(SCARDCONTEXT,LPCWSTR,LPCGUID,LPCGUID,DWORD,LPCBYTE,LPCBYTE,DWORD);
+#define     SCardIntroduceCardType WINELIB_NAME_AW(SCardIntroduceCardType)
+LONG        WINAPI SCardIntroduceReaderA(SCARDCONTEXT,LPCSTR,LPCSTR);
+LONG        WINAPI SCardIntroduceReaderW(SCARDCONTEXT,LPCWSTR,LPCWSTR);
+#define     SCardIntroduceReader WINELIB_NAME_AW(SCardIntroduceReader)
+LONG        WINAPI SCardIntroduceReaderGroupA(SCARDCONTEXT,LPCSTR);
+LONG        WINAPI SCardIntroduceReaderGroupW(SCARDCONTEXT,LPCWSTR);
+#define     SCardIntroduceReaderGroup WINELIB_NAME_AW(SCardIntroduceReaderGroup)
+LONG        WINAPI SCardIsValidContext(SCARDCONTEXT);
+LONG        WINAPI SCardListCardsA(SCARDCONTEXT,LPCBYTE,LPCGUID,DWORD,LPSTR,LPDWORD);
+LONG        WINAPI SCardListCardsW(SCARDCONTEXT,LPCBYTE,LPCGUID,DWORD,LPWSTR,LPDWORD);
+#define     SCardListCards WINELIB_NAME_AW(SCardListCards)
+LONG        WINAPI SCardListInterfacesA(SCARDCONTEXT,LPCSTR,LPGUID,LPDWORD);
+LONG        WINAPI SCardListInterfacesW(SCARDCONTEXT,LPCWSTR,LPGUID,LPDWORD);
+#define     SCardListInterfaces WINELIB_NAME_AW(SCardListInterfaces)
+LONG        WINAPI SCardListReadersA(SCARDCONTEXT,LPCSTR,LPSTR,LPDWORD);
+LONG        WINAPI SCardListReadersW(SCARDCONTEXT,LPCWSTR,LPWSTR,LPDWORD);
+#define     SCardListReaders WINELIB_NAME_AW(SCardListReaders)
+LONG        WINAPI SCardListReaderGroupsA(SCARDCONTEXT,LPSTR,LPDWORD);
+LONG        WINAPI SCardListReaderGroupsW(SCARDCONTEXT,LPWSTR,LPDWORD);
+#define     SCardListReaderGroups WINELIB_NAME_AW(SCardListReaderGroups)
+LONG        WINAPI SCardLocateCardsA(SCARDCONTEXT,LPCSTR,LPSCARD_READERSTATEA,DWORD);
+LONG        WINAPI SCardLocateCardsW(SCARDCONTEXT,LPCWSTR,LPSCARD_READERSTATEW,DWORD);
+#define     SCardLocateCards WINELIB_NAME_AW(SCardLocateCards)
+LONG        WINAPI SCardLocateCardsByATRA(SCARDCONTEXT,LPSCARD_ATRMASK,DWORD,LPSCARD_READERSTATEA,DWORD);
+LONG        WINAPI SCardLocateCardsByATRW(SCARDCONTEXT,LPSCARD_ATRMASK,DWORD,LPSCARD_READERSTATEW,DWORD);
+#define     SCardLocateCardsByATR WINELIB_NAME_AW(SCardLocateCardsByATR)
+LONG        WINAPI SCardReconnect(SCARDHANDLE,DWORD,DWORD,DWORD,LPDWORD);
+LONG        WINAPI SCardReleaseContext(SCARDCONTEXT);
+void        WINAPI SCardReleaseStartedEvent(void);
+LONG        WINAPI SCardRemoveReaderFromGroupA(SCARDCONTEXT,LPCSTR,LPCSTR);
+LONG        WINAPI SCardRemoveReaderFromGroupW(SCARDCONTEXT,LPCWSTR,LPCWSTR);
+#define     SCardRemoveReaderFromGroup WINELIB_NAME_AW(SCardRemoveReaderFromGroup)
+LONG        WINAPI SCardSetAttrib(SCARDHANDLE,DWORD,LPCBYTE,DWORD);
+LONG        WINAPI SCardSetCardTypeProviderNameA(SCARDCONTEXT,LPCSTR,DWORD,LPCSTR);
+LONG        WINAPI SCardSetCardTypeProviderNameW(SCARDCONTEXT,LPCWSTR,DWORD,LPCWSTR);
+#define     SCardSetCardTypeProviderName WINELIB_NAME_AW(SCardSetCardTypeProviderName)
+LONG        WINAPI SCardState(SCARDHANDLE,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+LONG        WINAPI SCardStatusA(SCARDHANDLE,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+LONG        WINAPI SCardStatusW(SCARDHANDLE,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+#define     SCardStatus WINELIB_NAME_AW(SCardStatus)
+LONG        WINAPI SCardTransmit(SCARDHANDLE,LPCSCARD_IO_REQUEST,LPCBYTE,DWORD,LPSCARD_IO_REQUEST,LPBYTE,LPDWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINSCARD_H */
diff --git a/include/winsmcrd.h b/include/winsmcrd.h
new file mode 100644
index 0000000..60fdd3e
--- /dev/null
+++ b/include/winsmcrd.h
@@ -0,0 +1,37 @@
+/*
+ * Winscard definitions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_WINSMCRD_H
+#define __WINE_WINSMCRD_H
+
+#define SCARD_PROTOCOL_UNDEFINED        0x00000000
+#define SCARD_PROTOCOL_OPTIMAL          0x00000000
+#define SCARD_PROTOCOL_T0               0x00000001
+#define SCARD_PROTOCOL_T1               0x00000002
+#define SCARD_PROTOCOL_RAW              0x00010000
+#define SCARD_PROTOCOL_DEFAULT          0x80000000
+#define SCARD_PROTOCOL_Tx               (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
+
+typedef struct _SCARD_IO_REQUEST
+{
+    DWORD dwProtocol;
+    DWORD cbPciLength;
+} SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
+typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
+
+#endif  /* __WINE_WINSMCRD_H */
-- 
1.4.4.4




More information about the wine-patches mailing list