Implemented TransmitFile (non-functional, depends on unimplemented features), added some missing definitions to mswsock.h

svn path=/trunk/; revision=13126
This commit is contained in:
KJK::Hyperion 2005-01-18 22:36:39 +00:00
parent 1454ac7d81
commit 5a3c9154cd
4 changed files with 64 additions and 20 deletions

View file

@ -20,9 +20,9 @@ TARGET_CFLAGS = \
TARGET_LFLAGS = -nostartfiles -nostdlib
TARGET_SDKLIBS = kernel32.a
TARGET_SDKLIBS = kernel32.a ws2_32.a
TARGET_OBJECTS = stubs.o
TARGET_OBJECTS = stubs.o extensions.o
TARGET_CLEAN = $(DEP_FILES)

View file

@ -0,0 +1,54 @@
/* $Id: stubs.c 12852 2005-01-06 13:58:04Z mf $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock DLL
* FILE: stubs.c
* PURPOSE: WSAIoctl wrappers for Microsoft extensions to Winsock
* PROGRAMMERS: KJK::Hyperion <hackbunny@reactos.com>
* REVISIONS:
*/
#include <windows.h>
#include <winsock2.h>
#include <mswsock.h>
/*
* @implemented
*/
BOOL
STDCALL
TransmitFile(SOCKET Socket,
HANDLE File,
DWORD NumberOfBytesToWrite,
DWORD NumberOfBytesPerSend,
LPOVERLAPPED Overlapped,
LPTRANSMIT_FILE_BUFFERS TransmitBuffers,
DWORD Flags)
{
static GUID TransmitFileGUID = WSAID_TRANSMITFILE;
LPFN_TRANSMITFILE pfnTransmitFile;
DWORD cbBytesReturned;
if (WSAIoctl(Socket,
SIO_GET_EXTENSION_FUNCTION_POINTER,
&TransmitFileGUID,
sizeof(TransmitFileGUID),
&pfnTransmitFile,
sizeof(pfnTransmitFile),
&cbBytesReturned,
NULL,
NULL) == SOCKET_ERROR)
{
return FALSE;
}
return pfnTransmitFile(Socket,
File,
NumberOfBytesToWrite,
NumberOfBytesPerSend,
Overlapped,
TransmitBuffers,
Flags);
}
/* EOF */

View file

@ -252,24 +252,6 @@ SetServiceW(DWORD NameSpace,
}
/*
* @unimplemented
*/
BOOL
STDCALL
TransmitFile(SOCKET Socket,
HANDLE File,
DWORD NumberOfBytesToWrite,
DWORD NumberOfBytesPerSend,
LPOVERLAPPED Overlapped,
LPTRANSMIT_FILE_BUFFERS TransmitBuffers,
DWORD Flags)
{
OutputDebugStringW(L"w32sock TransmitFile stub called\n");
return FALSE;
}
/*
* @unimplemented
*/

View file

@ -54,6 +54,14 @@ BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_
BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
#define WSAID_ACCEPTEX { 0xB5367DF0, 0xCBAC, 0x11CF, { 0x95, 0xCA, 0x00, 0x80, 0x5F, 0x48, 0xA1, 0x92 } }
#define WSAID_TRANSMITFILE { 0xB5367DF1, 0xCBAC, 0x11CF, { 0x95, 0xCA, 0x00, 0x80, 0x5F, 0x48, 0xA1, 0x92 } }
#define WSAID_GETACCEPTEXSOCKADDRS { 0xB5367DF2, 0xCBAC, 0x11CF, { 0x95, 0xCA, 0x00, 0x80, 0x5F, 0x48, 0xA1, 0x92 } }
typedef BOOL (PASCAL *LPFN_TRANSMITFILE)(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
typedef BOOL (PASCAL *LPFN_ACCEPTEX)(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
typedef VOID (PASCAL *LPFN_GETACCEPTEXSOCKADDRS)(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
#ifdef _WINSOCK2_H /* These require the winsock2 interface. */
#define TP_ELEMENT_FILE 1