- Use wine debug output routines instead of blunt DbgPrint
This avoids the horrid "MSAFD: STATUS_XXX" which doesn't help.

svn path=/trunk/; revision=65355
This commit is contained in:
Jérôme Gardou 2014-11-10 13:06:48 +00:00
parent da318dabea
commit 2b4ca7374b
8 changed files with 150 additions and 213 deletions

View file

@ -1,6 +1,5 @@
include_directories( include_directories(
BEFORE include
${REACTOS_SOURCE_DIR}/include/reactos/drivers) ${REACTOS_SOURCE_DIR}/include/reactos/drivers)
spec2def(msafd.dll msafd.spec) spec2def(msafd.dll msafd.spec)
@ -19,6 +18,7 @@ add_library(msafd SHARED
${CMAKE_CURRENT_BINARY_DIR}/msafd.def) ${CMAKE_CURRENT_BINARY_DIR}/msafd.def)
set_module_type(msafd win32dll UNICODE) set_module_type(msafd win32dll UNICODE)
target_link_libraries(msafd wine)
add_importlibs(msafd advapi32 msvcrt kernel32 ntdll) add_importlibs(msafd advapi32 msvcrt kernel32 ntdll)
add_pch(msafd msafd.h SOURCE) add_pch(msafd msafd.h SOURCE)
add_cd_file(TARGET msafd DESTINATION reactos/system32 FOR all) add_cd_file(TARGET msafd DESTINATION reactos/system32 FOR all)

View file

@ -1,67 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Ancillary Function Driver DLL
* FILE: include/debug.h
* PURPOSE: Debugging support macros
* DEFINES: DBG - Enable debug output
* NASSERT - Disable assertions
*/
#ifndef __DEBUG_H
#define __DEBUG_H
#define NORMAL_MASK 0x000000FF
#define SPECIAL_MASK 0xFFFFFF00
#define MIN_TRACE 0x00000001
#define MID_TRACE 0x00000002
#define MAX_TRACE 0x00000003
#define DEBUG_CHECK 0x00000100
#define DEBUG_ULTRA 0xFFFFFFFF
#ifdef ASSERT
#undef ASSERT
#endif
#if DBG
extern DWORD DebugTraceLevel;
#define AFD_DbgPrint(_t_, _x_) \
if (((DebugTraceLevel & NORMAL_MASK) >= _t_) || \
((DebugTraceLevel & _t_) > NORMAL_MASK)) { \
DbgPrint("(%hS:%d)(%hS) ", __FILE__, __LINE__, __FUNCTION__); \
DbgPrint _x_; \
}
#ifdef NASSERT
#define ASSERT(x)
#else /* NASSERT */
#define ASSERT(x) if (!(x)) { AFD_DbgPrint(MIN_TRACE, ("Assertion "#x" failed at %s:%d\n", __FILE__, __LINE__)); ExitProcess(0); }
#endif /* NASSERT */
#else /* DBG */
#define AFD_DbgPrint(_t_, _x_)
#define ASSERT_IRQL(x)
#define ASSERT(x)
#endif /* DBG */
#ifdef assert
#undef assert
#endif
#define assert(x) ASSERT(x)
#define UNIMPLEMENTED \
AFD_DbgPrint(MIN_TRACE, ("is unimplemented, please try again later.\n"));
#define CHECKPOINT \
AFD_DbgPrint(DEBUG_CHECK, ("\n"));
#define CP CHECKPOINT
#endif /* __DEBUG_H */
/* EOF */

View file

@ -14,10 +14,8 @@
#include <winuser.h> #include <winuser.h>
#if DBG #include <wine/debug.h>
//DWORD DebugTraceLevel = DEBUG_ULTRA; WINE_DEFAULT_DEBUG_CHANNEL(msafd);
DWORD DebugTraceLevel = 0;
#endif /* DBG */
HANDLE GlobalHeap; HANDLE GlobalHeap;
WSPUPCALLTABLE Upcalls; WSPUPCALLTABLE Upcalls;
@ -71,9 +69,8 @@ WSPSocket(int AddressFamily,
LARGE_INTEGER GroupData; LARGE_INTEGER GroupData;
INT Status; INT Status;
AFD_DbgPrint(MAX_TRACE, ("Creating Socket, getting TDI Name\n")); TRACE("Creating Socket, getting TDI Name - AddressFamily (%d) SocketType (%d) Protocol (%d).\n",
AFD_DbgPrint(MAX_TRACE, ("AddressFamily (%d) SocketType (%d) Protocol (%d).\n", AddressFamily, SocketType, Protocol);
AddressFamily, SocketType, Protocol));
/* Get Helper Data and Transport */ /* Get Helper Data and Transport */
Status = SockGetTdiName (&AddressFamily, Status = SockGetTdiName (&AddressFamily,
@ -89,7 +86,7 @@ WSPSocket(int AddressFamily,
/* Check for error */ /* Check for error */
if (Status != NO_ERROR) if (Status != NO_ERROR)
{ {
AFD_DbgPrint(MID_TRACE,("SockGetTdiName: Status %x\n", Status)); ERR("SockGetTdiName: Status %x\n", Status);
goto error; goto error;
} }
@ -131,7 +128,7 @@ WSPSocket(int AddressFamily,
if( Socket->SharedData.SocketType == SOCK_DGRAM || if( Socket->SharedData.SocketType == SOCK_DGRAM ||
Socket->SharedData.SocketType == SOCK_RAW ) Socket->SharedData.SocketType == SOCK_RAW )
{ {
AFD_DbgPrint(MID_TRACE,("Connectionless socket\n")); TRACE("Connectionless socket\n");
Socket->SharedData.ServiceFlags1 |= XP1_CONNECTIONLESS; Socket->SharedData.ServiceFlags1 |= XP1_CONNECTIONLESS;
} }
@ -249,9 +246,9 @@ WSPSocket(int AddressFamily,
HeapFree(GlobalHeap, 0, EABuffer); HeapFree(GlobalHeap, 0, EABuffer);
if (Status != STATUS_SUCCESS) if (!NT_SUCCESS(Status))
{ {
AFD_DbgPrint(MIN_TRACE, ("Failed to open socket\n")); ERR("Failed to open socket. Status 0x%08x\n", Status);
HeapFree(GlobalHeap, 0, Socket); HeapFree(GlobalHeap, 0, Socket);
@ -295,12 +292,12 @@ WSPSocket(int AddressFamily,
Upcalls.lpWPUModifyIFSHandle(1, (SOCKET)Sock, lpErrno); Upcalls.lpWPUModifyIFSHandle(1, (SOCKET)Sock, lpErrno);
/* Return Socket Handle */ /* Return Socket Handle */
AFD_DbgPrint(MID_TRACE,("Success %x\n", Sock)); TRACE("Success %x\n", Sock);
return (SOCKET)Sock; return (SOCKET)Sock;
error: error:
AFD_DbgPrint(MID_TRACE,("Ending %x\n", Status)); ERR("Ending %x\n", Status);
if( Socket ) if( Socket )
HeapFree(GlobalHeap, 0, Socket); HeapFree(GlobalHeap, 0, Socket);
@ -334,56 +331,44 @@ TranslateNtStatusError(NTSTATUS Status)
case STATUS_BUFFER_TOO_SMALL: case STATUS_BUFFER_TOO_SMALL:
case STATUS_BUFFER_OVERFLOW: case STATUS_BUFFER_OVERFLOW:
DbgPrint("MSAFD: STATUS_BUFFER_TOO_SMALL/STATUS_BUFFER_OVERFLOW\n");
return WSAEMSGSIZE; return WSAEMSGSIZE;
case STATUS_NO_MEMORY: case STATUS_NO_MEMORY:
case STATUS_INSUFFICIENT_RESOURCES: case STATUS_INSUFFICIENT_RESOURCES:
DbgPrint("MSAFD: STATUS_NO_MEMORY/STATUS_INSUFFICIENT_RESOURCES\n");
return WSAENOBUFS; return WSAENOBUFS;
case STATUS_INVALID_CONNECTION: case STATUS_INVALID_CONNECTION:
DbgPrint("MSAFD: STATUS_INVALID_CONNECTION\n");
return WSAEAFNOSUPPORT; return WSAEAFNOSUPPORT;
case STATUS_INVALID_ADDRESS: case STATUS_INVALID_ADDRESS:
DbgPrint("MSAFD: STATUS_INVALID_ADDRESS\n");
return WSAEADDRNOTAVAIL; return WSAEADDRNOTAVAIL;
case STATUS_REMOTE_NOT_LISTENING: case STATUS_REMOTE_NOT_LISTENING:
DbgPrint("MSAFD: STATUS_REMOTE_NOT_LISTENING\n");
return WSAECONNREFUSED; return WSAECONNREFUSED;
case STATUS_NETWORK_UNREACHABLE: case STATUS_NETWORK_UNREACHABLE:
DbgPrint("MSAFD: STATUS_NETWORK_UNREACHABLE\n");
return WSAENETUNREACH; return WSAENETUNREACH;
case STATUS_INVALID_PARAMETER: case STATUS_INVALID_PARAMETER:
DbgPrint("MSAFD: STATUS_INVALID_PARAMETER\n");
return WSAEINVAL; return WSAEINVAL;
case STATUS_CANCELLED: case STATUS_CANCELLED:
DbgPrint("MSAFD: STATUS_CANCELLED\n");
return WSA_OPERATION_ABORTED; return WSA_OPERATION_ABORTED;
case STATUS_ADDRESS_ALREADY_EXISTS: case STATUS_ADDRESS_ALREADY_EXISTS:
DbgPrint("MSAFD: STATUS_ADDRESS_ALREADY_EXISTS\n");
return WSAEADDRINUSE; return WSAEADDRINUSE;
case STATUS_LOCAL_DISCONNECT: case STATUS_LOCAL_DISCONNECT:
DbgPrint("MSAFD: STATUS_LOCAL_DISCONNECT\n");
return WSAECONNABORTED; return WSAECONNABORTED;
case STATUS_REMOTE_DISCONNECT: case STATUS_REMOTE_DISCONNECT:
DbgPrint("MSAFD: STATUS_REMOTE_DISCONNECT\n");
return WSAECONNRESET; return WSAECONNRESET;
case STATUS_ACCESS_VIOLATION: case STATUS_ACCESS_VIOLATION:
DbgPrint("MSAFD: STATUS_ACCESS_VIOLATION\n");
return WSAEFAULT; return WSAEFAULT;
default: default:
DbgPrint("MSAFD: Unhandled NTSTATUS value: 0x%x\n", Status); ERR("MSAFD: Unhandled NTSTATUS value: 0x%x\n", Status);
return WSAENETDOWN; return WSAENETDOWN;
} }
} }
@ -417,8 +402,10 @@ WSPCloseSocket(IN SOCKET Handle,
FALSE); FALSE);
if(!NT_SUCCESS(Status)) if(!NT_SUCCESS(Status))
{
ERR("NtCreateEvent failed: 0x%08x", Status);
return SOCKET_ERROR; return SOCKET_ERROR;
}
/* Get the Socket Structure associate to this Socket*/ /* Get the Socket Structure associate to this Socket*/
Socket = GetSocketStructure(Handle); Socket = GetSocketStructure(Handle);
if (!Socket) if (!Socket)
@ -439,6 +426,7 @@ WSPCloseSocket(IN SOCKET Handle,
if (Status) if (Status)
{ {
if (lpErrno) *lpErrno = Status; if (lpErrno) *lpErrno = Status;
ERR("WSHNotify failed. Error 0x%#x", Status);
NtClose(SockEvent); NtClose(SockEvent);
return SOCKET_ERROR; return SOCKET_ERROR;
} }
@ -447,6 +435,7 @@ WSPCloseSocket(IN SOCKET Handle,
/* If a Close is already in Process, give up */ /* If a Close is already in Process, give up */
if (Socket->SharedData.State == SocketClosed) if (Socket->SharedData.State == SocketClosed)
{ {
WARN("Socket is closing.\n");
NtClose(SockEvent); NtClose(SockEvent);
*lpErrno = WSAENOTSOCK; *lpErrno = WSAENOTSOCK;
return SOCKET_ERROR; return SOCKET_ERROR;
@ -497,6 +486,7 @@ WSPCloseSocket(IN SOCKET Handle,
*/ */
if (Socket->SharedData.NonBlocking) if (Socket->SharedData.NonBlocking)
{ {
WARN("Would block!\n");
NtClose(SockEvent); NtClose(SockEvent);
Socket->SharedData.State = OldState; Socket->SharedData.State = OldState;
*lpErrno = WSAEWOULDBLOCK; *lpErrno = WSAEWOULDBLOCK;
@ -828,23 +818,21 @@ WSPSelect(IN int nfds,
if ( HandleCount == 0 ) if ( HandleCount == 0 )
{ {
AFD_DbgPrint(MAX_TRACE,("HandleCount: %u. Return SOCKET_ERROR\n", WARN("No handles! Returning SOCKET_ERROR\n", HandleCount);
HandleCount));
if (lpErrno) *lpErrno = WSAEINVAL; if (lpErrno) *lpErrno = WSAEINVAL;
return SOCKET_ERROR; return SOCKET_ERROR;
} }
PollBufferSize = sizeof(*PollInfo) + ((HandleCount - 1) * sizeof(AFD_HANDLE)); PollBufferSize = sizeof(*PollInfo) + ((HandleCount - 1) * sizeof(AFD_HANDLE));
AFD_DbgPrint(MID_TRACE,("HandleCount: %u BufferSize: %u\n", TRACE("HandleCount: %u BufferSize: %u\n", HandleCount, PollBufferSize);
HandleCount, PollBufferSize));
/* Convert Timeout to NT Format */ /* Convert Timeout to NT Format */
if (timeout == NULL) if (timeout == NULL)
{ {
Timeout.u.LowPart = -1; Timeout.u.LowPart = -1;
Timeout.u.HighPart = 0x7FFFFFFF; Timeout.u.HighPart = 0x7FFFFFFF;
AFD_DbgPrint(MAX_TRACE,("Infinite timeout\n")); TRACE("Infinite timeout\n");
} }
else else
{ {
@ -859,9 +847,9 @@ WSPSelect(IN int nfds,
if (lpErrno) *lpErrno = WSAEINVAL; if (lpErrno) *lpErrno = WSAEINVAL;
return SOCKET_ERROR; return SOCKET_ERROR;
} }
AFD_DbgPrint(MAX_TRACE,("Timeout: Orig %d.%06d kernel %d\n", TRACE("Timeout: Orig %d.%06d kernel %d\n",
timeout->tv_sec, timeout->tv_usec, timeout->tv_sec, timeout->tv_usec,
Timeout.u.LowPart)); Timeout.u.LowPart);
} }
Status = NtCreateEvent(&SockEvent, Status = NtCreateEvent(&SockEvent,
@ -871,7 +859,10 @@ WSPSelect(IN int nfds,
FALSE); FALSE);
if(!NT_SUCCESS(Status)) if(!NT_SUCCESS(Status))
{
ERR("NtCreateEvent failed, 0x%08x\n", Status);
return SOCKET_ERROR; return SOCKET_ERROR;
}
/* Allocate */ /* Allocate */
PollBuffer = HeapAlloc(GlobalHeap, 0, PollBufferSize); PollBuffer = HeapAlloc(GlobalHeap, 0, PollBufferSize);
@ -935,7 +926,7 @@ WSPSelect(IN int nfds,
PollInfo, PollInfo,
PollBufferSize); PollBufferSize);
AFD_DbgPrint(MID_TRACE,("DeviceIoControlFile => %x\n", Status)); TRACE("DeviceIoControlFile => %x\n", Status);
/* Wait for Completition */ /* Wait for Completition */
if (Status == STATUS_PENDING) if (Status == STATUS_PENDING)
@ -968,9 +959,9 @@ WSPSelect(IN int nfds,
case AFD_EVENT_ABORT: case AFD_EVENT_ABORT:
case AFD_EVENT_ACCEPT: case AFD_EVENT_ACCEPT:
case AFD_EVENT_CLOSE: case AFD_EVENT_CLOSE:
AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n", TRACE("Event %x on handle %x\n",
PollInfo->Handles[i].Events, PollInfo->Handles[i].Events,
PollInfo->Handles[i].Handle)); PollInfo->Handles[i].Handle);
if (! HandleCounted) if (! HandleCounted)
{ {
OutCount++; OutCount++;
@ -981,9 +972,9 @@ WSPSelect(IN int nfds,
break; break;
case AFD_EVENT_SEND: case AFD_EVENT_SEND:
case AFD_EVENT_CONNECT: case AFD_EVENT_CONNECT:
AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n", TRACE("Event %x on handle %x\n",
PollInfo->Handles[i].Events, PollInfo->Handles[i].Events,
PollInfo->Handles[i].Handle)); PollInfo->Handles[i].Handle);
if (! HandleCounted) if (! HandleCounted)
{ {
OutCount++; OutCount++;
@ -994,9 +985,9 @@ WSPSelect(IN int nfds,
break; break;
case AFD_EVENT_OOB_RECEIVE: case AFD_EVENT_OOB_RECEIVE:
case AFD_EVENT_CONNECT_FAIL: case AFD_EVENT_CONNECT_FAIL:
AFD_DbgPrint(MID_TRACE,("Event %x on handle %x\n", TRACE("Event %x on handle %x\n",
PollInfo->Handles[i].Events, PollInfo->Handles[i].Events,
PollInfo->Handles[i].Handle)); PollInfo->Handles[i].Handle);
if (! HandleCounted) if (! HandleCounted)
{ {
OutCount++; OutCount++;
@ -1024,10 +1015,10 @@ WSPSelect(IN int nfds,
*lpErrno = WSAEINVAL; *lpErrno = WSAEINVAL;
break; break;
} }
AFD_DbgPrint(MID_TRACE,("*lpErrno = %x\n", *lpErrno)); TRACE("*lpErrno = %x\n", *lpErrno);
} }
AFD_DbgPrint(MID_TRACE,("%d events\n", OutCount)); TRACE("%d events\n", OutCount);
return OutCount; return OutCount;
} }
@ -1402,7 +1393,7 @@ WSPAccept(SOCKET Handle,
/* Re-enable Async Event */ /* Re-enable Async Event */
SockReenableAsyncSelectEvent(Socket, FD_ACCEPT); SockReenableAsyncSelectEvent(Socket, FD_ACCEPT);
AFD_DbgPrint(MID_TRACE,("Socket %x\n", AcceptSocket)); TRACE("Socket %x\n", AcceptSocket);
if (Status == STATUS_SUCCESS && (Socket->HelperEvents & WSH_NOTIFY_ACCEPT)) if (Status == STATUS_SUCCESS && (Socket->HelperEvents & WSH_NOTIFY_ACCEPT))
{ {
@ -1457,7 +1448,7 @@ WSPConnect(SOCKET Handle,
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
return MsafdReturnWithErrno(Status, lpErrno, 0, NULL); return MsafdReturnWithErrno(Status, lpErrno, 0, NULL);
AFD_DbgPrint(MID_TRACE,("Called\n")); TRACE("Called\n");
/* Get the Socket Structure associate to this Socket*/ /* Get the Socket Structure associate to this Socket*/
Socket = GetSocketStructure(Handle); Socket = GetSocketStructure(Handle);
@ -1578,7 +1569,7 @@ WSPConnect(SOCKET Handle,
/* FIXME: Handle Async Connect */ /* FIXME: Handle Async Connect */
if (Socket->SharedData.NonBlocking) if (Socket->SharedData.NonBlocking)
{ {
AFD_DbgPrint(MIN_TRACE, ("Async Connect UNIMPLEMENTED!\n")); ERR("Async Connect UNIMPLEMENTED!\n");
} }
/* Send IOCTL */ /* Send IOCTL */
@ -1626,7 +1617,7 @@ WSPConnect(SOCKET Handle,
} }
} }
AFD_DbgPrint(MID_TRACE,("Ending\n")); TRACE("Ending\n");
notify: notify:
if (ConnectInfo) HeapFree(GetProcessHeap(), 0, ConnectInfo); if (ConnectInfo) HeapFree(GetProcessHeap(), 0, ConnectInfo);
@ -1692,7 +1683,7 @@ WSPShutdown(SOCKET Handle,
if( !NT_SUCCESS(Status) ) if( !NT_SUCCESS(Status) )
return -1; return -1;
AFD_DbgPrint(MID_TRACE,("Called\n")); TRACE("Called\n");
/* Get the Socket Structure associate to this Socket*/ /* Get the Socket Structure associate to this Socket*/
Socket = GetSocketStructure(Handle); Socket = GetSocketStructure(Handle);
@ -1742,7 +1733,7 @@ WSPShutdown(SOCKET Handle,
Status = IOSB.Status; Status = IOSB.Status;
} }
AFD_DbgPrint(MID_TRACE,("Ending\n")); TRACE("Ending\n");
NtClose( SockEvent ); NtClose( SockEvent );
@ -1834,9 +1825,9 @@ WSPGetSockName(IN SOCKET Handle,
SocketAddress->Address[0].Address, SocketAddress->Address[0].Address,
SocketAddress->Address[0].AddressLength); SocketAddress->Address[0].AddressLength);
*NameLength = Socket->SharedData.SizeOfLocalAddress; *NameLength = Socket->SharedData.SizeOfLocalAddress;
AFD_DbgPrint (MID_TRACE, ("NameLength %d Address: %x Port %x\n", TRACE("NameLength %d Address: %x Port %x\n",
*NameLength, ((struct sockaddr_in *)Name)->sin_addr.s_addr, *NameLength, ((struct sockaddr_in *)Name)->sin_addr.s_addr,
((struct sockaddr_in *)Name)->sin_port)); ((struct sockaddr_in *)Name)->sin_port);
HeapFree(GlobalHeap, 0, TdiAddress); HeapFree(GlobalHeap, 0, TdiAddress);
return 0; return 0;
} }
@ -1941,9 +1932,9 @@ WSPGetPeerName(IN SOCKET s,
SocketAddress->Address[0].Address, SocketAddress->Address[0].Address,
SocketAddress->Address[0].AddressLength); SocketAddress->Address[0].AddressLength);
*NameLength = Socket->SharedData.SizeOfRemoteAddress; *NameLength = Socket->SharedData.SizeOfRemoteAddress;
AFD_DbgPrint (MID_TRACE, ("NameLength %d Address: %x Port %x\n", TRACE("NameLength %d Address: %x Port %x\n",
*NameLength, ((struct sockaddr_in *)Name)->sin_addr.s_addr, *NameLength, ((struct sockaddr_in *)Name)->sin_addr.s_addr,
((struct sockaddr_in *)Name)->sin_port)); ((struct sockaddr_in *)Name)->sin_port);
HeapFree(GlobalHeap, 0, SocketAddress); HeapFree(GlobalHeap, 0, SocketAddress);
return 0; return 0;
} }
@ -2085,7 +2076,7 @@ WSPGetSockOpt(IN SOCKET Handle,
return SOCKET_ERROR; return SOCKET_ERROR;
} }
AFD_DbgPrint(MID_TRACE, ("Called\n")); TRACE("Called\n");
switch (Level) switch (Level)
{ {
@ -2292,7 +2283,7 @@ WSPSetSockOpt(
} }
/* TODO: The total per-socket buffer space reserved for sends */ /* TODO: The total per-socket buffer space reserved for sends */
AFD_DbgPrint(MIN_TRACE,("Setting send buf to %x is not implemented yet\n", optval)); ERR("Setting send buf to %x is not implemented yet\n", optval);
return 0; return 0;
case SO_SNDTIMEO: case SO_SNDTIMEO:
@ -2326,7 +2317,7 @@ WSPSetSockOpt(
default: default:
/* Obviously this is a hack */ /* Obviously this is a hack */
DbgPrint("MSAFD: Set unknown optname %x\n", optname); ERR("MSAFD: Set unknown optname %x\n", optname);
return 0; return 0;
} }
} }
@ -2365,7 +2356,7 @@ WSPStartup(IN WORD wVersionRequested,
{ {
NTSTATUS Status; NTSTATUS Status;
AFD_DbgPrint(MAX_TRACE, ("wVersionRequested (0x%X) \n", wVersionRequested)); ERR("wVersionRequested (0x%X) \n", wVersionRequested);
Status = NO_ERROR; Status = NO_ERROR;
Upcalls = UpcallTable; Upcalls = UpcallTable;
@ -2405,7 +2396,7 @@ WSPStartup(IN WORD wVersionRequested,
lpWSPData->wHighVersion = MAKEWORD(2, 2); lpWSPData->wHighVersion = MAKEWORD(2, 2);
} }
AFD_DbgPrint(MAX_TRACE, ("Status (%d).\n", Status)); TRACE("Status (%d).\n", Status);
return Status; return Status;
} }
@ -2423,8 +2414,7 @@ WSPAPI
WSPCleanup(OUT LPINT lpErrno) WSPCleanup(OUT LPINT lpErrno)
{ {
AFD_DbgPrint(MAX_TRACE, ("\n")); TRACE("Leaving.\n");
AFD_DbgPrint(MAX_TRACE, ("Leaving.\n"));
*lpErrno = NO_ERROR; *lpErrno = NO_ERROR;
return 0; return 0;
@ -2660,7 +2650,7 @@ BOOLEAN SockCreateOrReferenceAsyncThread(VOID)
2); // Allow 2 threads only 2); // Allow 2 threads only
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
AFD_DbgPrint(MID_TRACE,("Failed to create completion port\n")); ERR("Failed to create completion port: 0x%08x\n", Status);
return FALSE; return FALSE;
} }
/* Protect Handle */ /* Protect Handle */
@ -3093,7 +3083,7 @@ DllMain(HANDLE hInstDll,
{ {
case DLL_PROCESS_ATTACH: case DLL_PROCESS_ATTACH:
AFD_DbgPrint(MAX_TRACE, ("Loading MSAFD.DLL \n")); TRACE("Loading MSAFD.DLL \n");
/* Don't need thread attach notifications /* Don't need thread attach notifications
so disable them to improve performance */ so disable them to improve performance */
@ -3108,7 +3098,7 @@ DllMain(HANDLE hInstDll,
/* Initialize the lock that protects our socket list */ /* Initialize the lock that protects our socket list */
InitializeCriticalSection(&SocketListLock); InitializeCriticalSection(&SocketListLock);
AFD_DbgPrint(MAX_TRACE, ("MSAFD.DLL has been loaded\n")); TRACE("MSAFD.DLL has been loaded\n");
break; break;
@ -3126,7 +3116,7 @@ DllMain(HANDLE hInstDll,
break; break;
} }
AFD_DbgPrint(MAX_TRACE, ("DllMain of msafd.dll (leaving)\n")); TRACE("DllMain of msafd.dll (leaving)\n");
return TRUE; return TRUE;
} }

View file

@ -12,6 +12,9 @@
#include <msafd.h> #include <msafd.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(msafd);
int int
WSPAPI WSPAPI
WSPEventSelect( WSPEventSelect(
@ -103,7 +106,7 @@ WSPEventSelect(
NULL, NULL,
0); 0);
AFD_DbgPrint(MID_TRACE,("AFD: %x\n", Status)); TRACE("AFD: %x\n", Status);
/* Wait for return */ /* Wait for return */
if (Status == STATUS_PENDING) { if (Status == STATUS_PENDING) {
@ -111,20 +114,23 @@ WSPEventSelect(
Status = IOSB.Status; Status = IOSB.Status;
} }
AFD_DbgPrint(MID_TRACE,("Waited\n")); TRACE("Waited\n");
NtClose( SockEvent ); NtClose( SockEvent );
if (Status != STATUS_SUCCESS) if (Status != STATUS_SUCCESS)
{
ERR("Got status 0x%08x.\n", Status);
return MsafdReturnWithErrno(Status, lpErrno, 0, NULL); return MsafdReturnWithErrno(Status, lpErrno, 0, NULL);
}
AFD_DbgPrint(MID_TRACE,("Closed event\n")); TRACE("Closed event\n");
/* Set Socket Data*/ /* Set Socket Data*/
Socket->EventObject = hEventObject; Socket->EventObject = hEventObject;
Socket->NetworkEvents = lNetworkEvents; Socket->NetworkEvents = lNetworkEvents;
AFD_DbgPrint(MID_TRACE,("Leaving\n")); TRACE("Leaving\n");
return 0; return 0;
} }
@ -144,13 +150,13 @@ WSPEnumNetworkEvents(
NTSTATUS Status; NTSTATUS Status;
HANDLE SockEvent; HANDLE SockEvent;
AFD_DbgPrint(MID_TRACE,("Called (lpNetworkEvents %x)\n", lpNetworkEvents)); TRACE("Called (lpNetworkEvents %x)\n", lpNetworkEvents);
Status = NtCreateEvent( &SockEvent, EVENT_ALL_ACCESS, Status = NtCreateEvent( &SockEvent, EVENT_ALL_ACCESS,
NULL, 1, FALSE ); NULL, 1, FALSE );
if( !NT_SUCCESS(Status) ) { if( !NT_SUCCESS(Status) ) {
AFD_DbgPrint(MID_TRACE,("Could not make an event %x\n", Status)); ERR("Could not make an event %x\n", Status);
return -1; return -1;
} }
@ -177,7 +183,7 @@ WSPEnumNetworkEvents(
NULL, NULL,
0); 0);
AFD_DbgPrint(MID_TRACE,("AFD: %x\n", Status)); TRACE("AFD: %x\n", Status);
/* Wait for return */ /* Wait for return */
if (Status == STATUS_PENDING) { if (Status == STATUS_PENDING) {
@ -185,21 +191,21 @@ WSPEnumNetworkEvents(
Status = IOSB.Status; Status = IOSB.Status;
} }
AFD_DbgPrint(MID_TRACE,("Waited\n")); TRACE("Waited\n");
NtClose( SockEvent ); NtClose( SockEvent );
if (Status != STATUS_SUCCESS) if (Status != STATUS_SUCCESS)
{
ERR("Status 0x%08x", Status);
return MsafdReturnWithErrno(Status, lpErrno, 0, NULL); return MsafdReturnWithErrno(Status, lpErrno, 0, NULL);
}
AFD_DbgPrint(MID_TRACE,("Closed event\n")); TRACE("Closed event\n");
AFD_DbgPrint(MID_TRACE,("About to touch struct at %x (%d)\n", TRACE("About to touch struct at %x (%d)\n", lpNetworkEvents, sizeof(*lpNetworkEvents));
lpNetworkEvents, sizeof(*lpNetworkEvents)));
lpNetworkEvents->lNetworkEvents = 0; lpNetworkEvents->lNetworkEvents = 0;
AFD_DbgPrint(MID_TRACE,("Zeroed struct\n"));
/* Set Events to wait for */ /* Set Events to wait for */
if (EnumReq.PollEvents & AFD_EVENT_RECEIVE) { if (EnumReq.PollEvents & AFD_EVENT_RECEIVE) {
lpNetworkEvents->lNetworkEvents |= FD_READ; lpNetworkEvents->lNetworkEvents |= FD_READ;
@ -243,7 +249,7 @@ WSPEnumNetworkEvents(
lpNetworkEvents->iErrorCode[FD_GROUP_QOS_BIT] = TranslateNtStatusError(EnumReq.EventStatus[FD_GROUP_QOS_BIT]); lpNetworkEvents->iErrorCode[FD_GROUP_QOS_BIT] = TranslateNtStatusError(EnumReq.EventStatus[FD_GROUP_QOS_BIT]);
} }
AFD_DbgPrint(MID_TRACE,("Leaving\n")); TRACE("Leaving\n");
return MsafdReturnWithErrno(STATUS_SUCCESS, lpErrno, 0, NULL); return MsafdReturnWithErrno(STATUS_SUCCESS, lpErrno, 0, NULL);
} }

View file

@ -14,6 +14,9 @@
#include <winreg.h> #include <winreg.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(msafd);
CRITICAL_SECTION HelperDLLDatabaseLock; CRITICAL_SECTION HelperDLLDatabaseLock;
LIST_ENTRY HelperDLLDatabaseListHead; LIST_ENTRY HelperDLLDatabaseListHead;
@ -37,7 +40,8 @@ SockGetTdiName(
PLIST_ENTRY Helpers; PLIST_ENTRY Helpers;
INT Status; INT Status;
AFD_DbgPrint(MID_TRACE,("Called\n")); TRACE("AddressFamily %p, SocketType %p, Protocol %p, Group %u, Flags %lx, TransportName %wZ, HelperDllContext %p, HeplperDllData %p, Events %p\n",
AddressFamily, SocketType, Protocol, Group, Flags, TransportName, HelperDllContext, HelperDllData, Events);
/* Check in our Current Loaded Helpers */ /* Check in our Current Loaded Helpers */
for (Helpers = SockHelpersListHead.Flink; for (Helpers = SockHelpersListHead.Flink;
@ -86,7 +90,7 @@ SockGetTdiName(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Can't get transport list\n")); WARN("Can't get transport list\n");
return Status; return Status;
} }
@ -94,14 +98,14 @@ SockGetTdiName(
for (Transport = Transports; for (Transport = Transports;
*Transports != 0; *Transports != 0;
Transport += wcslen(Transport) + 1) { Transport += wcslen(Transport) + 1) {
AFD_DbgPrint(MID_TRACE, ("Transport: %S\n", Transports)); TRACE("Transport: %S\n", Transports);
/* See what mapping this Transport supports */ /* See what mapping this Transport supports */
Status = SockLoadTransportMapping(Transport, &Mapping); Status = SockLoadTransportMapping(Transport, &Mapping);
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Can't get mapping\n")); ERR("Can't get mapping for %S\n", Transports);
HeapFree(GlobalHeap, 0, Transports); HeapFree(GlobalHeap, 0, Transports);
return Status; return Status;
} }
@ -114,7 +118,7 @@ SockGetTdiName(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Can't load helper DLL\n")); ERR("Can't load helper DLL for Transport %S.\n", Transport);
HeapFree(GlobalHeap, 0, Transports); HeapFree(GlobalHeap, 0, Transports);
HeapFree(GlobalHeap, 0, Mapping); HeapFree(GlobalHeap, 0, Mapping);
return Status; return Status;
@ -166,14 +170,14 @@ SockLoadTransportMapping(
ULONG MappingSize; ULONG MappingSize;
LONG Status; LONG Status;
AFD_DbgPrint(MID_TRACE,("Called: TransportName %ws\n", TransportName)); TRACE("TransportName %ws\n", TransportName);
/* Allocate a Buffer */ /* Allocate a Buffer */
TransportKey = HeapAlloc(GlobalHeap, 0, (54 + wcslen(TransportName)) * sizeof(WCHAR)); TransportKey = HeapAlloc(GlobalHeap, 0, (54 + wcslen(TransportName)) * sizeof(WCHAR));
/* Check for error */ /* Check for error */
if (TransportKey == NULL) { if (TransportKey == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Buffer allocation failed\n")); ERR("Buffer allocation failed\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -190,7 +194,7 @@ SockLoadTransportMapping(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading transport mapping registry\n")); ERR("Error reading transport mapping registry\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -199,7 +203,7 @@ SockLoadTransportMapping(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading transport mapping registry\n")); ERR("Error reading transport mapping registry\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -208,7 +212,7 @@ SockLoadTransportMapping(
/* Check for error */ /* Check for error */
if (*Mapping == NULL) { if (*Mapping == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Buffer allocation failed\n")); ERR("Buffer allocation failed\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -217,7 +221,7 @@ SockLoadTransportMapping(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading transport mapping registry\n")); ERR("Error reading transport mapping registry\n");
HeapFree(GlobalHeap, 0, *Mapping); HeapFree(GlobalHeap, 0, *Mapping);
return WSAEINVAL; return WSAEINVAL;
} }
@ -235,7 +239,7 @@ SockLoadTransportList(
HKEY KeyHandle; HKEY KeyHandle;
LONG Status; LONG Status;
AFD_DbgPrint(MID_TRACE,("Called\n")); TRACE("Called\n");
/* Open the Transports Key */ /* Open the Transports Key */
Status = RegOpenKeyExW (HKEY_LOCAL_MACHINE, Status = RegOpenKeyExW (HKEY_LOCAL_MACHINE,
@ -246,7 +250,7 @@ SockLoadTransportList(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading transport list registry\n")); ERR("Error reading transport list registry\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -260,7 +264,7 @@ SockLoadTransportList(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading transport list registry\n")); ERR("Error reading transport list registry\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -269,7 +273,7 @@ SockLoadTransportList(
/* Check for error */ /* Check for error */
if (*TransportList == NULL) { if (*TransportList == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Buffer allocation failed\n")); ERR("Buffer allocation failed\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -283,7 +287,7 @@ SockLoadTransportList(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading transport list registry\n")); ERR("Error reading transport list registry\n");
HeapFree(GlobalHeap, 0, *TransportList); HeapFree(GlobalHeap, 0, *TransportList);
return WSAEINVAL; return WSAEINVAL;
} }
@ -312,7 +316,7 @@ SockLoadHelperDll(
/* Check for error */ /* Check for error */
if (HelperData == NULL) { if (HelperData == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Buffer allocation failed\n")); ERR("Buffer allocation failed\n");
return WSAEINVAL; return WSAEINVAL;
} }
@ -321,7 +325,7 @@ SockLoadHelperDll(
/* Check for error */ /* Check for error */
if (HelperKey == NULL) { if (HelperKey == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Buffer allocation failed\n")); ERR("Buffer allocation failed\n");
HeapFree(GlobalHeap, 0, HelperData); HeapFree(GlobalHeap, 0, HelperData);
return WSAEINVAL; return WSAEINVAL;
} }
@ -338,7 +342,7 @@ SockLoadHelperDll(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading helper DLL parameters\n")); ERR("Error reading helper DLL parameters\n");
HeapFree(GlobalHeap, 0, HelperData); HeapFree(GlobalHeap, 0, HelperData);
return WSAEINVAL; return WSAEINVAL;
} }
@ -380,7 +384,7 @@ SockLoadHelperDll(
/* Check for error */ /* Check for error */
if (HelperDllName == NULL) { if (HelperDllName == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Buffer allocation failed\n")); ERR("Buffer allocation failed\n");
HeapFree(GlobalHeap, 0, HelperData); HeapFree(GlobalHeap, 0, HelperData);
return WSAEINVAL; return WSAEINVAL;
} }
@ -389,7 +393,7 @@ SockLoadHelperDll(
/* Check for error */ /* Check for error */
if (FullHelperDllName == NULL) { if (FullHelperDllName == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Buffer allocation failed\n")); ERR("Buffer allocation failed\n");
HeapFree(GlobalHeap, 0, HelperDllName); HeapFree(GlobalHeap, 0, HelperDllName);
HeapFree(GlobalHeap, 0, HelperData); HeapFree(GlobalHeap, 0, HelperData);
return WSAEINVAL; return WSAEINVAL;
@ -406,7 +410,7 @@ SockLoadHelperDll(
/* Check for error */ /* Check for error */
if (Status) { if (Status) {
AFD_DbgPrint(MIN_TRACE, ("Error reading helper DLL parameters\n")); ERR("Error reading helper DLL parameters\n");
HeapFree(GlobalHeap, 0, FullHelperDllName); HeapFree(GlobalHeap, 0, FullHelperDllName);
HeapFree(GlobalHeap, 0, HelperDllName); HeapFree(GlobalHeap, 0, HelperDllName);
HeapFree(GlobalHeap, 0, HelperData); HeapFree(GlobalHeap, 0, HelperData);
@ -425,7 +429,7 @@ SockLoadHelperDll(
HeapFree(GlobalHeap, 0, FullHelperDllName); HeapFree(GlobalHeap, 0, FullHelperDllName);
if (HelperData->hInstance == NULL) { if (HelperData->hInstance == NULL) {
AFD_DbgPrint(MIN_TRACE, ("Error loading helper DLL\n")); ERR("Error loading helper DLL\n");
HeapFree(GlobalHeap, 0, HelperData); HeapFree(GlobalHeap, 0, HelperData);
return WSAEINVAL; return WSAEINVAL;
} }
@ -495,25 +499,25 @@ SockIsTripleInMapping(
/* The Windows version returns more detailed information on which of the 3 parameters failed...we should do this later */ /* The Windows version returns more detailed information on which of the 3 parameters failed...we should do this later */
ULONG Row; ULONG Row;
AFD_DbgPrint(MID_TRACE,("Called, Mapping rows = %d\n", Mapping->Rows)); TRACE("Called, Mapping rows = %d\n", Mapping->Rows);
/* Loop through Mapping to Find a matching one */ /* Loop through Mapping to Find a matching one */
for (Row = 0; Row < Mapping->Rows; Row++) { for (Row = 0; Row < Mapping->Rows; Row++) {
AFD_DbgPrint(MID_TRACE,("Examining: row %d: AF %d type %d proto %d\n", TRACE("Examining: row %d: AF %d type %d proto %d\n",
Row, Row,
(INT)Mapping->Mapping[Row].AddressFamily, (INT)Mapping->Mapping[Row].AddressFamily,
(INT)Mapping->Mapping[Row].SocketType, (INT)Mapping->Mapping[Row].SocketType,
(INT)Mapping->Mapping[Row].Protocol)); (INT)Mapping->Mapping[Row].Protocol);
/* Check of all three values Match */ /* Check of all three values Match */
if (((INT)Mapping->Mapping[Row].AddressFamily == AddressFamily) && if (((INT)Mapping->Mapping[Row].AddressFamily == AddressFamily) &&
((INT)Mapping->Mapping[Row].SocketType == SocketType) && ((INT)Mapping->Mapping[Row].SocketType == SocketType) &&
((INT)Mapping->Mapping[Row].Protocol == Protocol)) { ((INT)Mapping->Mapping[Row].Protocol == Protocol)) {
AFD_DbgPrint(MID_TRACE,("Found\n")); TRACE("Found\n");
return TRUE; return TRUE;
} }
} }
AFD_DbgPrint(MID_TRACE,("Not found\n")); WARN("Not found\n");
return FALSE; return FALSE;
} }

View file

@ -12,6 +12,9 @@
#include <msafd.h> #include <msafd.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(msafd);
INT INT
WSPAPI WSPAPI
WSPAsyncSelect(IN SOCKET Handle, WSPAsyncSelect(IN SOCKET Handle,
@ -113,7 +116,7 @@ WSPRecv(SOCKET Handle,
HANDLE SockEvent; HANDLE SockEvent;
PSOCKET_INFORMATION Socket; PSOCKET_INFORMATION Socket;
AFD_DbgPrint(MID_TRACE,("Called (%x)\n", Handle)); TRACE("Called (%x)\n", Handle);
/* Get the Socket Structure associate to this Socket*/ /* Get the Socket Structure associate to this Socket*/
Socket = GetSocketStructure(Handle); Socket = GetSocketStructure(Handle);
@ -215,7 +218,7 @@ WSPRecv(SOCKET Handle,
NtClose( SockEvent ); NtClose( SockEvent );
AFD_DbgPrint(MID_TRACE,("Status %x Information %d\n", Status, IOSB->Information)); TRACE("Status %x Information %d\n", Status, IOSB->Information);
/* Return the Flags */ /* Return the Flags */
*ReceiveFlags = 0; *ReceiveFlags = 0;
@ -448,7 +451,7 @@ WSPSend(SOCKET Handle,
if( !NT_SUCCESS(Status) ) if( !NT_SUCCESS(Status) )
return -1; return -1;
AFD_DbgPrint(MID_TRACE,("Called\n")); TRACE("Called\n");
/* Set up the Send Structure */ /* Set up the Send Structure */
SendInfo.BufferArray = (PAFD_WSABUF)lpBuffers; SendInfo.BufferArray = (PAFD_WSABUF)lpBuffers;
@ -524,14 +527,14 @@ WSPSend(SOCKET Handle,
if (Status == STATUS_PENDING) if (Status == STATUS_PENDING)
{ {
AFD_DbgPrint(MID_TRACE,("Leaving (Pending)\n")); TRACE("Leaving (Pending)\n");
return MsafdReturnWithErrno(Status, lpErrno, IOSB->Information, lpNumberOfBytesSent); return MsafdReturnWithErrno(Status, lpErrno, IOSB->Information, lpNumberOfBytesSent);
} }
/* Re-enable Async Event */ /* Re-enable Async Event */
SockReenableAsyncSelectEvent(Socket, FD_WRITE); SockReenableAsyncSelectEvent(Socket, FD_WRITE);
AFD_DbgPrint(MID_TRACE,("Leaving (Success, %d)\n", IOSB->Information)); TRACE("Leaving (Success, %d)\n", IOSB->Information);
return MsafdReturnWithErrno( Status, lpErrno, IOSB->Information, lpNumberOfBytesSent ); return MsafdReturnWithErrno( Status, lpErrno, IOSB->Information, lpNumberOfBytesSent );
} }
@ -710,7 +713,7 @@ WSPRecvDisconnect(IN SOCKET s,
OUT LPWSABUF lpInboundDisconnectData, OUT LPWSABUF lpInboundDisconnectData,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return 0; return 0;
} }
@ -722,7 +725,7 @@ WSPSendDisconnect(IN SOCKET s,
IN LPWSABUF lpOutboundDisconnectData, IN LPWSABUF lpOutboundDisconnectData,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return 0; return 0;
} }

View file

@ -10,6 +10,9 @@
#include <msafd.h> #include <msafd.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(msafd);
INT INT
WSPAPI WSPAPI
WSPAddressToString( WSPAddressToString(
@ -20,7 +23,7 @@ WSPAddressToString(
IN OUT LPDWORD lpdwAddressStringLength, IN OUT LPDWORD lpdwAddressStringLength,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return 0; return 0;
} }
@ -31,7 +34,7 @@ WSPAPI
WSPCancelBlockingCall( WSPCancelBlockingCall(
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return 0; return 0;
} }
@ -45,7 +48,7 @@ WSPDuplicateSocket(
OUT LPWSAPROTOCOL_INFOW lpProtocolInfo, OUT LPWSAPROTOCOL_INFOW lpProtocolInfo,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return 0; return 0;
} }
@ -61,7 +64,7 @@ WSPGetOverlappedResult(
OUT LPDWORD lpdwFlags, OUT LPDWORD lpdwFlags,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return FALSE; return FALSE;
} }
@ -75,7 +78,7 @@ WSPGetQOSByName(
OUT LPQOS lpQOS, OUT LPQOS lpQOS,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return FALSE; return FALSE;
} }
@ -94,7 +97,7 @@ WSPJoinLeaf(
IN DWORD dwFlags, IN DWORD dwFlags,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return (SOCKET)0; return (SOCKET)0;
} }
@ -109,7 +112,7 @@ WSPStringToAddress(
IN OUT LPINT lpAddressLength, IN OUT LPINT lpAddressLength,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
UNIMPLEMENTED UNIMPLEMENTED;
return 0; return 0;
} }

View file

@ -27,9 +27,7 @@
#include <wsahelp.h> #include <wsahelp.h>
#include <tdi.h> #include <tdi.h>
#include <afd/shared.h> #include <afd/shared.h>
#include <helpers.h> #include "include/helpers.h"
#include <debug.h>
extern HANDLE GlobalHeap; extern HANDLE GlobalHeap;
extern WSPUPCALLTABLE Upcalls; extern WSPUPCALLTABLE Upcalls;