From 5a3c9154cda8e1331ae21cd4eb58d133623ac34d Mon Sep 17 00:00:00 2001 From: "KJK::Hyperion" Date: Tue, 18 Jan 2005 22:36:39 +0000 Subject: [PATCH] Implemented TransmitFile (non-functional, depends on unimplemented features), added some missing definitions to mswsock.h svn path=/trunk/; revision=13126 --- reactos/lib/mswsock/Makefile | 4 +-- reactos/lib/mswsock/extensions.c | 54 ++++++++++++++++++++++++++++++++ reactos/lib/mswsock/stubs.c | 18 ----------- reactos/w32api/include/mswsock.h | 8 +++++ 4 files changed, 64 insertions(+), 20 deletions(-) create mode 100644 reactos/lib/mswsock/extensions.c diff --git a/reactos/lib/mswsock/Makefile b/reactos/lib/mswsock/Makefile index d71df74e68a..2a06f804fe2 100644 --- a/reactos/lib/mswsock/Makefile +++ b/reactos/lib/mswsock/Makefile @@ -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) diff --git a/reactos/lib/mswsock/extensions.c b/reactos/lib/mswsock/extensions.c new file mode 100644 index 00000000000..0e79d5e1e74 --- /dev/null +++ b/reactos/lib/mswsock/extensions.c @@ -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 + * REVISIONS: + */ + +#include +#include +#include + +/* + * @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 */ diff --git a/reactos/lib/mswsock/stubs.c b/reactos/lib/mswsock/stubs.c index 7fb4cb5fefd..dc910121f31 100644 --- a/reactos/lib/mswsock/stubs.c +++ b/reactos/lib/mswsock/stubs.c @@ -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 */ diff --git a/reactos/w32api/include/mswsock.h b/reactos/w32api/include/mswsock.h index 0cea0b84003..fa1e7307a18 100644 --- a/reactos/w32api/include/mswsock.h +++ b/reactos/w32api/include/mswsock.h @@ -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