Austin English : ws2_32: Add a stub for WSANSPIoctl.

Alexandre Julliard julliard at winehq.org
Thu Sep 9 13:56:52 CDT 2010


Module: wine
Branch: master
Commit: 4ada99aa83c5fc84bb77c5b5b14a9fa0c220b6d7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4ada99aa83c5fc84bb77c5b5b14a9fa0c220b6d7

Author: Austin English <austinenglish at gmail.com>
Date:   Thu Sep  9 11:32:56 2010 -0500

ws2_32: Add a stub for WSANSPIoctl.

---

 dlls/ws2_32/socket.c    |   13 +++++++++++++
 dlls/ws2_32/ws2_32.spec |    2 +-
 include/winsock2.h      |   33 +++++++++++++++++++++++++++++++++
 3 files changed, 47 insertions(+), 1 deletions(-)

diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 82d157c..0335d41 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -6020,3 +6020,16 @@ INT WINAPI WSCWriteProviderOrder( LPDWORD entry, DWORD number )
     FIXME("(%p 0x%08x) Stub!\n", entry, number);
     return 0;
 }
+
+/***********************************************************************
+ *              WSANSPIoctl                       (WS2_32.91)
+ */
+INT WINAPI WSANSPIoctl( HANDLE hLookup, DWORD dwControlCode, LPVOID lpvInBuffer,
+                        DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer,
+                        LPDWORD lpcbBytesReturned, LPWSACOMPLETION lpCompletion )
+{
+    FIXME("(%p, 0x%08x, %p, 0x%08x, %p, 0x%08x, %p, %p) Stub!\n", hLookup, dwControlCode,
+    lpvInBuffer, cbInBuffer, lpvOutBuffer, cbOutBuffer, lpcbBytesReturned, lpCompletion);
+    WSASetLastError(WSA_NOT_ENOUGH_MEMORY);
+    return SOCKET_ERROR;
+};
diff --git a/dlls/ws2_32/ws2_32.spec b/dlls/ws2_32/ws2_32.spec
index a77c215..537e7f3 100644
--- a/dlls/ws2_32/ws2_32.spec
+++ b/dlls/ws2_32/ws2_32.spec
@@ -85,7 +85,7 @@
 @ stdcall WSALookupServiceEnd(long)
 @ stdcall WSALookupServiceNextA(long long ptr ptr)
 @ stdcall WSALookupServiceNextW(long long ptr ptr)
-@ stub    WSANSPIoctl
+@ stdcall WSANSPIoctl(ptr long ptr long ptr long ptr ptr)
 @ stdcall WSANtohl(long long ptr)
 @ stdcall WSANtohs(long long ptr)
 @ stdcall WSAProviderConfigChange(ptr ptr ptr)
diff --git a/include/winsock2.h b/include/winsock2.h
index 5d5bd60..c346473 100644
--- a/include/winsock2.h
+++ b/include/winsock2.h
@@ -506,6 +506,37 @@ DECL_WINELIB_TYPE_AW(WSANAMESPACE_INFO)
 DECL_WINELIB_TYPE_AW(PWSANAMESPACE_INFO)
 DECL_WINELIB_TYPE_AW(LPWSANAMESPACE_INFO)
 
+typedef enum _WSACOMPLETIONTYPE {
+    NSP_NOTIFY_IMMEDIATELY = 0,
+    NSP_NOTIFY_HWND = 1,
+    NSP_NOTIFY_EVENT = 2,
+    NSP_NOTIFY_PORT = 3,
+    NSP_NOTIFY_APC = 4
+} WSACOMPLETIONTYPE, * PWSACOMPLETIONTYPE, * LPWSACOMPLETIONTYPE;
+
+typedef struct _WSACOMPLETION {
+    WSACOMPLETIONTYPE Type;
+    union {
+        struct {
+            HWND hWnd;
+            UINT uMsg;
+            WPARAM context;
+        } WindowMessage;
+        struct {
+            LPWSAOVERLAPPED lpOverlapped;
+        } Event;
+        struct {
+            LPWSAOVERLAPPED lpOverlapped;
+            LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
+        } Apc;
+        struct {
+            LPWSAOVERLAPPED lpOverlapped;
+            HANDLE hPort;
+            ULONG_PTR Key;
+        } Port;
+    } Parameters;
+} WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
+
 /*
  * Winsock Function Typedefs
  *
@@ -613,6 +644,7 @@ INT WINAPI WSALookupServiceEnd(HANDLE);
 INT WINAPI WSALookupServiceNextA(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETA);
 INT WINAPI WSALookupServiceNextW(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
 #define WSALookupServiceNext       WINELIB_NAME_AW(WSALookupServiceNext) 
+int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION);
 int WINAPI WSANtohl(SOCKET,ULONG,ULONG*);
 int WINAPI WSANtohs(SOCKET,WS(u_short),WS(u_short)*);
 INT WINAPI WSAProviderConfigChange(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
@@ -685,6 +717,7 @@ typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND(HANDLE);
 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETA);
 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
 #define LPFN_WSALOOKUPSERVICENEXT WINELIB_NAME_AW(LPFN_WSALOOKUPSERVICENEXT)
+typedef int (WINAPI *LPFN_WSANSPIoctl)(HANDLE, DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION);
 typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET,ULONG,ULONG*);
 typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET,WS(u_short),WS(u_short)*);
 typedef INT (WINAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);




More information about the wine-cvs mailing list