mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 03:05:40 +00:00
[MSWSOCK] Unstub AcceptEx and GetAcceptExSockaddrs. Note that real implementation in msafd is not available, so result will still be FALSE
svn path=/trunk/; revision=74731
This commit is contained in:
parent
cc95312078
commit
0c26c6fe3f
2 changed files with 106 additions and 59 deletions
|
@ -12,6 +12,9 @@
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#include <mswsock.h>
|
#include <mswsock.h>
|
||||||
|
|
||||||
|
LPFN_TRANSMITFILE pfnTransmitFile = NULL;
|
||||||
|
LPFN_GETACCEPTEXSOCKADDRS pfnGetAcceptExSockaddrs = NULL;
|
||||||
|
LPFN_ACCEPTEX pfnAcceptEx = NULL;
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -25,30 +28,111 @@ TransmitFile(SOCKET Socket,
|
||||||
LPTRANSMIT_FILE_BUFFERS TransmitBuffers,
|
LPTRANSMIT_FILE_BUFFERS TransmitBuffers,
|
||||||
DWORD Flags)
|
DWORD Flags)
|
||||||
{
|
{
|
||||||
static GUID TransmitFileGUID = WSAID_TRANSMITFILE;
|
GUID TransmitFileGUID = WSAID_TRANSMITFILE;
|
||||||
LPFN_TRANSMITFILE pfnTransmitFile;
|
DWORD cbBytesReturned;
|
||||||
DWORD cbBytesReturned;
|
|
||||||
|
|
||||||
if (WSAIoctl(Socket,
|
if (WSAIoctl(Socket,
|
||||||
SIO_GET_EXTENSION_FUNCTION_POINTER,
|
SIO_GET_EXTENSION_FUNCTION_POINTER,
|
||||||
&TransmitFileGUID,
|
&TransmitFileGUID,
|
||||||
sizeof(TransmitFileGUID),
|
sizeof(TransmitFileGUID),
|
||||||
&pfnTransmitFile,
|
&pfnTransmitFile,
|
||||||
sizeof(pfnTransmitFile),
|
sizeof(pfnTransmitFile),
|
||||||
&cbBytesReturned,
|
&cbBytesReturned,
|
||||||
NULL,
|
NULL,
|
||||||
NULL) == SOCKET_ERROR)
|
NULL) == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pfnTransmitFile(Socket,
|
return pfnTransmitFile(Socket,
|
||||||
File,
|
File,
|
||||||
NumberOfBytesToWrite,
|
NumberOfBytesToWrite,
|
||||||
NumberOfBytesPerSend,
|
NumberOfBytesPerSend,
|
||||||
Overlapped,
|
Overlapped,
|
||||||
TransmitBuffers,
|
TransmitBuffers,
|
||||||
Flags);
|
Flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
AcceptEx(SOCKET ListenSocket,
|
||||||
|
SOCKET AcceptSocket,
|
||||||
|
PVOID OutputBuffer,
|
||||||
|
DWORD ReceiveDataLength,
|
||||||
|
DWORD LocalAddressLength,
|
||||||
|
DWORD RemoteAddressLength,
|
||||||
|
LPDWORD BytesReceived,
|
||||||
|
LPOVERLAPPED Overlapped)
|
||||||
|
{
|
||||||
|
GUID AcceptExGUID = WSAID_ACCEPTEX;
|
||||||
|
GUID GetAcceptExSockaddrsGUID = WSAID_GETACCEPTEXSOCKADDRS;
|
||||||
|
DWORD cbBytesReturned;
|
||||||
|
|
||||||
|
if (WSAIoctl(ListenSocket,
|
||||||
|
SIO_GET_EXTENSION_FUNCTION_POINTER,
|
||||||
|
&AcceptExGUID,
|
||||||
|
sizeof(AcceptExGUID),
|
||||||
|
&pfnAcceptEx,
|
||||||
|
sizeof(pfnAcceptEx),
|
||||||
|
&cbBytesReturned,
|
||||||
|
NULL,
|
||||||
|
NULL) == SOCKET_ERROR)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WSAIoctl(ListenSocket,
|
||||||
|
SIO_GET_EXTENSION_FUNCTION_POINTER,
|
||||||
|
&GetAcceptExSockaddrsGUID,
|
||||||
|
sizeof(GetAcceptExSockaddrsGUID),
|
||||||
|
&pfnGetAcceptExSockaddrs,
|
||||||
|
sizeof(pfnGetAcceptExSockaddrs),
|
||||||
|
&cbBytesReturned,
|
||||||
|
NULL,
|
||||||
|
NULL) == SOCKET_ERROR)
|
||||||
|
{
|
||||||
|
pfnAcceptEx = NULL;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pfnAcceptEx(ListenSocket,
|
||||||
|
AcceptSocket,
|
||||||
|
OutputBuffer,
|
||||||
|
ReceiveDataLength,
|
||||||
|
LocalAddressLength,
|
||||||
|
RemoteAddressLength,
|
||||||
|
BytesReceived,
|
||||||
|
Overlapped);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
WINAPI
|
||||||
|
GetAcceptExSockaddrs(PVOID OutputBuffer,
|
||||||
|
DWORD ReceiveDataLength,
|
||||||
|
DWORD LocalAddressLength,
|
||||||
|
DWORD RemoteAddressLength,
|
||||||
|
LPSOCKADDR* LocalSockaddr,
|
||||||
|
LPINT LocalSockaddrLength,
|
||||||
|
LPSOCKADDR* RemoteSockaddr,
|
||||||
|
LPINT RemoteSockaddrLength)
|
||||||
|
{
|
||||||
|
if (pfnGetAcceptExSockaddrs)
|
||||||
|
{
|
||||||
|
pfnGetAcceptExSockaddrs(OutputBuffer,
|
||||||
|
ReceiveDataLength,
|
||||||
|
LocalAddressLength,
|
||||||
|
RemoteAddressLength,
|
||||||
|
LocalSockaddr,
|
||||||
|
LocalSockaddrLength,
|
||||||
|
RemoteSockaddr,
|
||||||
|
RemoteSockaddrLength);
|
||||||
|
}
|
||||||
|
}
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -21,25 +21,6 @@ typedef struct _NS_ROUTINE {
|
||||||
DWORD dwPriority;
|
DWORD dwPriority;
|
||||||
} NS_ROUTINE, *PNS_ROUTINE, * FAR LPNS_ROUTINE;
|
} NS_ROUTINE, *PNS_ROUTINE, * FAR LPNS_ROUTINE;
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
AcceptEx(SOCKET ListenSocket,
|
|
||||||
SOCKET AcceptSocket,
|
|
||||||
PVOID OutputBuffer,
|
|
||||||
DWORD ReceiveDataLength,
|
|
||||||
DWORD LocalAddressLength,
|
|
||||||
DWORD RemoteAddressLength,
|
|
||||||
LPDWORD BytesReceived,
|
|
||||||
LPOVERLAPPED Overlapped)
|
|
||||||
{
|
|
||||||
OutputDebugStringW(L"w32sock AcceptEx stub called\n");
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
|
@ -71,24 +52,6 @@ EnumProtocolsW(LPINT ProtocolCount,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
WINAPI
|
|
||||||
GetAcceptExSockaddrs(PVOID OutputBuffer,
|
|
||||||
DWORD ReceiveDataLength,
|
|
||||||
DWORD LocalAddressLength,
|
|
||||||
DWORD RemoteAddressLength,
|
|
||||||
LPSOCKADDR* LocalSockaddr,
|
|
||||||
LPINT LocalSockaddrLength,
|
|
||||||
LPSOCKADDR* RemoteSockaddr,
|
|
||||||
LPINT RemoteSockaddrLength)
|
|
||||||
{
|
|
||||||
OutputDebugStringW(L"w32sock GetAcceptExSockaddrs stub called\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue