mirror of
https://github.com/reactos/reactos.git
synced 2024-07-02 02:34:53 +00:00
Added WinSock 2 Helper DLL for TCP/IP (Stubs only)
svn path=/trunk/; revision=1361
This commit is contained in:
parent
b0a3240f8e
commit
2a734dfd02
6
reactos/drivers/net/wshtcpip/.cvsignore
Normal file
6
reactos/drivers/net/wshtcpip/.cvsignore
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
wshtcpip.a
|
||||||
|
wshtcpip.dll
|
||||||
|
wshtcpip.coff
|
||||||
|
base.tmp
|
||||||
|
junk.tmp
|
||||||
|
temp.exp
|
71
reactos/drivers/net/wshtcpip/debug.h
Normal file
71
reactos/drivers/net/wshtcpip/debug.h
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS WinSock Helper DLL for TCP/IP
|
||||||
|
* 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_ULTRA 0xFFFFFFFF
|
||||||
|
|
||||||
|
#ifdef DBG
|
||||||
|
|
||||||
|
extern DWORD DebugTraceLevel;
|
||||||
|
|
||||||
|
#define Get_DbgPrint(quote...) L##quote
|
||||||
|
|
||||||
|
#define WSH_DbgPrint(_t_, _x_) \
|
||||||
|
if (((DebugTraceLevel & NORMAL_MASK) >= _t_) || \
|
||||||
|
((DebugTraceLevel & _t_) > NORMAL_MASK)) { \
|
||||||
|
WCHAR _buffer[256]; \
|
||||||
|
swprintf(_buffer, L"(%s:%d)(%s) ", __FILE__, __LINE__, __FUNCTION__); \
|
||||||
|
OutputDebugStringW(_buffer); \
|
||||||
|
swprintf(_buffer, Get_DbgPrint _x_); \
|
||||||
|
OutputDebugStringW(_buffer); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef ASSERT
|
||||||
|
#undef ASSERT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NASSERT
|
||||||
|
#define ASSERT(x)
|
||||||
|
#else /* NASSERT */
|
||||||
|
#define ASSERT(x) if (!(x)) { WSH_DbgPrint(MIN_TRACE, ("Assertion "#x" failed at %s:%d\n", __FILE__, __LINE__)); KeBugCheck(0); }
|
||||||
|
#endif /* NASSERT */
|
||||||
|
|
||||||
|
#define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
|
||||||
|
|
||||||
|
#else /* DBG */
|
||||||
|
|
||||||
|
#define WSH_DbgPrint(_t_, _x_)
|
||||||
|
|
||||||
|
#define ASSERT_IRQL(x)
|
||||||
|
#define ASSERT(x)
|
||||||
|
|
||||||
|
#endif /* DBG */
|
||||||
|
|
||||||
|
|
||||||
|
#define assert(x) ASSERT(x)
|
||||||
|
#define assert_irql(x) ASSERT_IRQL(x)
|
||||||
|
|
||||||
|
|
||||||
|
#define UNIMPLEMENTED \
|
||||||
|
WSH_DbgPrint(MIN_TRACE, ("(%s:%d)(%s) is unimplemented, \
|
||||||
|
please try again later.\n", __FILE__, __LINE__, __FUNCTION__));
|
||||||
|
|
||||||
|
#define CHECKPOINT \
|
||||||
|
do { WSH_DbgPrint(MIN_TRACE, ("(%s:%d)\n", __FILE__, __LINE__)); } while(0);
|
||||||
|
|
||||||
|
#endif /* __DEBUG_H */
|
||||||
|
|
||||||
|
/* EOF */
|
90
reactos/drivers/net/wshtcpip/makefile
Normal file
90
reactos/drivers/net/wshtcpip/makefile
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
# Makefile for ReactOS WinSock Helper DLL for TCP/IP
|
||||||
|
|
||||||
|
PATH_TO_TOP = ../../..
|
||||||
|
|
||||||
|
BASE_CFLAGS = -I./ -I../../../include -DUNICODE
|
||||||
|
|
||||||
|
TARGETNAME=wshtcpip
|
||||||
|
|
||||||
|
MAIN_OBJECTS = $(TARGETNAME).o
|
||||||
|
|
||||||
|
RESOURCE_OBJECT = $(TARGETNAME).coff
|
||||||
|
|
||||||
|
OBJECTS = $(MAIN_OBJECTS) $(RESOURCE_OBJECT)
|
||||||
|
|
||||||
|
LIBS = ../../../lib/ntdll/ntdll.a \
|
||||||
|
../../../lib/kernel32/kernel32.a \
|
||||||
|
../../../lib/ws2_32/ws2_32.a
|
||||||
|
|
||||||
|
ifeq ($(DOSCLI),yes)
|
||||||
|
CLEAN_FILES = $(TARGETNAME).o $(TARGETNAME).a junk.tmp base.tmp temp.exp \
|
||||||
|
$(TARGETNAME).dll $(TARGETNAME).sym $(TARGETNAME).coff
|
||||||
|
else
|
||||||
|
CLEAN_FILES = $(TARGETNAME).o $(TARGETNAME).a junk.tmp base.tmp temp.exp \
|
||||||
|
$(TARGETNAME).dll $(TARGETNAME).sym $(TARGETNAME).coff
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: $(TARGETNAME).dll
|
||||||
|
|
||||||
|
$(TARGETNAME).coff: $(TARGETNAME).rc ../../../include/reactos/resource.h
|
||||||
|
|
||||||
|
$(TARGETNAME).dll: $(LIBS) $(OBJECTS) $(TARGETNAME).def
|
||||||
|
$(DLLTOOL) \
|
||||||
|
--dllname $(TARGETNAME).dll \
|
||||||
|
--def $(TARGETNAME).def \
|
||||||
|
--kill-at \
|
||||||
|
--output-lib $(TARGETNAME).a
|
||||||
|
$(CC) \
|
||||||
|
$(TARGETNAME).o \
|
||||||
|
$(LIBS) \
|
||||||
|
-specs=$(TARGETNAME)_specs \
|
||||||
|
-mdll \
|
||||||
|
-o junk.tmp \
|
||||||
|
-Wl,--base-file,base.tmp
|
||||||
|
- $(RM) junk.tmp
|
||||||
|
$(DLLTOOL) \
|
||||||
|
--dllname $(TARGETNAME).dll \
|
||||||
|
--base-file base.tmp \
|
||||||
|
--output-exp temp.exp \
|
||||||
|
--def $(TARGETNAME).edf
|
||||||
|
- $(RM) base.tmp
|
||||||
|
$(CC) \
|
||||||
|
$(OBJECTS) $(LIBS) \
|
||||||
|
-specs=$(TARGETNAME)_specs \
|
||||||
|
-mdll \
|
||||||
|
-o $(TARGETNAME).dll \
|
||||||
|
-Wl,--image-base,0x10000 \
|
||||||
|
-Wl,--file-alignment,0x1000 \
|
||||||
|
-Wl,--section-alignment,0x1000 \
|
||||||
|
-Wl,temp.exp
|
||||||
|
- $(RM) temp.exp
|
||||||
|
$(NM) --numeric-sort $(TARGETNAME).dll > $(TARGETNAME).sym
|
||||||
|
|
||||||
|
|
||||||
|
clean: $(CLEAN_FILES:%=%_clean)
|
||||||
|
|
||||||
|
$(CLEAN_FILES:%=%_clean): %_clean:
|
||||||
|
- $(RM) $*
|
||||||
|
|
||||||
|
.PHONY: clean $(CLEAN_FILES:%=%_clean)
|
||||||
|
|
||||||
|
install: $(FLOPPY_DIR)/dlls/$(TARGETNAME).dll
|
||||||
|
|
||||||
|
$(FLOPPY_DIR)/dlls/$(TARGETNAME).dll: $(TARGETNAME).dll
|
||||||
|
ifeq ($(DOSCLI),yes)
|
||||||
|
$(CP) $(TARGETNAME).dll $(FLOPPY_DIR)\dlls\$(TARGETNAME).dll
|
||||||
|
else
|
||||||
|
$(CP) $(TARGETNAME).dll $(FLOPPY_DIR)/dlls/$(TARGETNAME).dll
|
||||||
|
endif
|
||||||
|
|
||||||
|
dist: $(DIST_DIR)/dlls/$(TARGETNAME).dll
|
||||||
|
|
||||||
|
$(DIST_DIR)/dlls/$(TARGETNAME).dll: $(TARGETNAME).dll
|
||||||
|
ifeq ($(DOSCLI),yes)
|
||||||
|
$(CP) $(TARGETNAME).dll ..\..\$(DIST_DIR)\dlls\$(TARGETNAME).dll
|
||||||
|
else
|
||||||
|
$(CP) $(TARGETNAME).dll ../../$(DIST_DIR)/dlls/$(TARGETNAME).dll
|
||||||
|
endif
|
||||||
|
|
||||||
|
include ../../../rules.mak
|
||||||
|
|
382
reactos/drivers/net/wshtcpip/wshtcpip.c
Normal file
382
reactos/drivers/net/wshtcpip/wshtcpip.c
Normal file
|
@ -0,0 +1,382 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS WinSock Helper DLL for TCP/IP
|
||||||
|
* FILE: wshtcpip.c
|
||||||
|
* PURPOSE: DLL entry
|
||||||
|
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||||
|
* REVISIONS:
|
||||||
|
* CSH 01/09-2000 Created
|
||||||
|
*/
|
||||||
|
#include <wshtcpip.h>
|
||||||
|
|
||||||
|
#ifdef DBG
|
||||||
|
|
||||||
|
/* See debug.h for debug/trace constants */
|
||||||
|
DWORD DebugTraceLevel = MIN_TRACE;
|
||||||
|
|
||||||
|
#endif /* DBG */
|
||||||
|
|
||||||
|
/* To make the linker happy */
|
||||||
|
VOID STDCALL KeBugCheck (ULONG BugCheckCode) {}
|
||||||
|
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
EXPORT
|
||||||
|
DllMain(PVOID hInstDll,
|
||||||
|
ULONG dwReason,
|
||||||
|
PVOID Reserved)
|
||||||
|
{
|
||||||
|
OutputDebugString(_T("Hello from wshtcpip.dll\n"));
|
||||||
|
WSH_DbgPrint(MIN_TRACE, ("DllMain of wshtcpip.dll\n"));
|
||||||
|
|
||||||
|
switch (dwReason) {
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
/* Don't need thread attach notifications
|
||||||
|
so disable them to improve performance */
|
||||||
|
DisableThreadLibraryCalls(hInstDll);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DLL_THREAD_ATTACH:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DLL_THREAD_DETACH:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHAddressToString(
|
||||||
|
IN LPSOCKADDR Address,
|
||||||
|
IN INT AddressLength,
|
||||||
|
IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL,
|
||||||
|
OUT LPWSTR AddressString,
|
||||||
|
IN OUT LPDWORD AddressStringLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHEnumProtocols(
|
||||||
|
IN LPINT lpiProtocols OPTIONAL,
|
||||||
|
IN LPWSTR lpTransportKeyName,
|
||||||
|
IN OUT LPVOID lpProtocolBuffer,
|
||||||
|
IN OUT LPDWORD lpdwBufferLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHGetBroadcastSockaddr(
|
||||||
|
IN PVOID HelperDllSocketContext,
|
||||||
|
OUT PSOCKADDR Sockaddr,
|
||||||
|
OUT PINT SockaddrLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHGetProviderGuid(
|
||||||
|
IN LPWSTR ProviderName,
|
||||||
|
OUT LPGUID ProviderGuid)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHGetSockaddrType(
|
||||||
|
IN PSOCKADDR Sockaddr,
|
||||||
|
IN DWORD SockaddrLength,
|
||||||
|
OUT PSOCKADDR_INFO SockaddrInfo)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHGetSocketInformation(
|
||||||
|
IN PVOID HelperDllSocketContext,
|
||||||
|
IN SOCKET SocketHandle,
|
||||||
|
IN HANDLE TdiAddressObjectHandle,
|
||||||
|
IN HANDLE TdiConnectionObjectHandle,
|
||||||
|
IN INT Level,
|
||||||
|
IN INT OptionName,
|
||||||
|
OUT PCHAR OptionValue,
|
||||||
|
OUT INT OptionLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHGetWildcardSockaddr(
|
||||||
|
IN PVOID HelperDllSocketContext,
|
||||||
|
OUT PSOCKADDR Sockaddr,
|
||||||
|
OUT PINT SockaddrLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DWORD
|
||||||
|
EXPORT
|
||||||
|
WSHGetWinsockMapping(
|
||||||
|
OUT PWINSOCK_MAPPING Mapping,
|
||||||
|
IN DWORD MappingLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHGetWSAProtocolInfo(
|
||||||
|
IN LPWSTR ProviderName,
|
||||||
|
OUT LPWSAPROTOCOL_INFOW *ProtocolInfo,
|
||||||
|
OUT LPDWORD ProtocolInfoEntries)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHIoctl(
|
||||||
|
IN PVOID HelperDllSocketContext,
|
||||||
|
IN SOCKET SocketHandle,
|
||||||
|
IN HANDLE TdiAddressObjectHandle,
|
||||||
|
IN HANDLE TdiConnectionObjectHandle,
|
||||||
|
IN DWORD IoControlCode,
|
||||||
|
IN LPVOID InputBuffer,
|
||||||
|
IN DWORD InputBufferLength,
|
||||||
|
IN LPVOID OutputBuffer,
|
||||||
|
IN DWORD OutputBufferLength,
|
||||||
|
OUT LPDWORD NumberOfBytesReturned,
|
||||||
|
IN LPWSAOVERLAPPED Overlapped,
|
||||||
|
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine,
|
||||||
|
OUT LPBOOL NeedsCompletion)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHJoinLeaf(
|
||||||
|
IN PVOID HelperDllSocketContext,
|
||||||
|
IN SOCKET SocketHandle,
|
||||||
|
IN HANDLE TdiAddressObjectHandle,
|
||||||
|
IN HANDLE TdiConnectionObjectHandle,
|
||||||
|
IN PVOID LeafHelperDllSocketContext,
|
||||||
|
IN SOCKET LeafSocketHandle,
|
||||||
|
IN PSOCKADDR Sockaddr,
|
||||||
|
IN DWORD SockaddrLength,
|
||||||
|
IN LPWSABUF CallerData,
|
||||||
|
IN LPWSABUF CalleeData,
|
||||||
|
IN LPQOS SocketQOS,
|
||||||
|
IN LPQOS GroupQOS,
|
||||||
|
IN DWORD Flags)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHNotify(
|
||||||
|
IN PVOID HelperDllSocketContext,
|
||||||
|
IN SOCKET SocketHandle,
|
||||||
|
IN HANDLE TdiAddressObjectHandle,
|
||||||
|
IN HANDLE TdiConnectionObjectHandle,
|
||||||
|
IN DWORD NotifyEvent)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHOpenSocket(
|
||||||
|
IN OUT PINT AddressFamily,
|
||||||
|
IN OUT PINT SocketType,
|
||||||
|
IN OUT PINT Protocol,
|
||||||
|
OUT PUNICODE_STRING TransportDeviceName,
|
||||||
|
OUT PVOID HelperDllSocketContext,
|
||||||
|
OUT PDWORD NotificationEvents)
|
||||||
|
/*
|
||||||
|
* FUNCTION: Opens a socket
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
return WSHOpenSocket2(AddressFamily,
|
||||||
|
SocketType,
|
||||||
|
Protocol,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
TransportDeviceName,
|
||||||
|
HelperDllSocketContext,
|
||||||
|
NotificationEvents);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHOpenSocket2(
|
||||||
|
OUT PINT AddressFamily,
|
||||||
|
IN OUT PINT SocketType,
|
||||||
|
IN OUT PINT Protocol,
|
||||||
|
IN GROUP Group,
|
||||||
|
IN DWORD Flags,
|
||||||
|
OUT PUNICODE_STRING TransportDeviceName,
|
||||||
|
OUT PVOID *HelperDllSocketContext,
|
||||||
|
OUT PDWORD NotificationEvents)
|
||||||
|
/*
|
||||||
|
* FUNCTION: Opens a socket
|
||||||
|
* ARGUMENTS:
|
||||||
|
* AddressFamily = Address of buffer with address family (updated)
|
||||||
|
* SocketType = Address of buffer with type of socket (updated)
|
||||||
|
* Protocol = Address of buffer with protocol number (updated)
|
||||||
|
* Group = Socket group
|
||||||
|
* Flags = Socket flags
|
||||||
|
* TransportDeviceName = Address of buffer to place name of transport device
|
||||||
|
* HelperDllSocketContext = Address of buffer to place socket context pointer
|
||||||
|
* NotificationEvents = Address of buffer to place flags for event notification
|
||||||
|
* RETURNS:
|
||||||
|
* Status of operation
|
||||||
|
* NOTES:
|
||||||
|
* Mapping tripple is returned in an canonicalized form
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
PSOCKET_CONTEXT Context;
|
||||||
|
UNICODE_STRING String;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
/* FIXME: Raw IP only. Support UDP and TCP */
|
||||||
|
ASSERT(*SocketType == SOCK_RAW);
|
||||||
|
|
||||||
|
if (*Protocol < 0 || *Protocol > 255)
|
||||||
|
return WSAEINVAL;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&String, DD_RAW_IP_DEVICE_NAME);
|
||||||
|
|
||||||
|
RtlInitUnicodeString(TransportDeviceName, NULL);
|
||||||
|
|
||||||
|
TransportDeviceName->MaximumLength = String.Length + /* Transport device name */
|
||||||
|
(4 * sizeof(WCHAR) + /* Separator and protocol */
|
||||||
|
sizeof(UNICODE_NULL)); /* Terminating null */
|
||||||
|
|
||||||
|
TransportDeviceName->Buffer = HeapAlloc(
|
||||||
|
GetProcessHeap(),
|
||||||
|
0,
|
||||||
|
TransportDeviceName->MaximumLength);
|
||||||
|
|
||||||
|
if (!TransportDeviceName->Buffer)
|
||||||
|
return WSAENOBUFS;
|
||||||
|
|
||||||
|
/* Append the transport device name */
|
||||||
|
Status = RtlAppendUnicodeStringToString(TransportDeviceName, &String);
|
||||||
|
|
||||||
|
/* Append a separator */
|
||||||
|
TransportDeviceName->Buffer[TransportDeviceName->Length / sizeof(WCHAR)] = OBJ_NAME_PATH_SEPARATOR;
|
||||||
|
TransportDeviceName->Length += sizeof(WCHAR);
|
||||||
|
TransportDeviceName->Buffer[TransportDeviceName->Length / sizeof(WCHAR)] = UNICODE_NULL;
|
||||||
|
|
||||||
|
/* Append the protocol number */
|
||||||
|
String.Buffer = TransportDeviceName->Buffer + (TransportDeviceName->Length / sizeof(WCHAR));
|
||||||
|
String.Length = 0;
|
||||||
|
String.MaximumLength = TransportDeviceName->MaximumLength - TransportDeviceName->Length;
|
||||||
|
|
||||||
|
Status = RtlIntegerToUnicodeString((ULONG)*Protocol, 10, &String);
|
||||||
|
|
||||||
|
TransportDeviceName->Length += String.Length;
|
||||||
|
|
||||||
|
/* Setup a socket context area */
|
||||||
|
|
||||||
|
Context = HeapAlloc(GetProcessHeap(), 0, sizeof(SOCKET_CONTEXT));
|
||||||
|
if (!Context) {
|
||||||
|
RtlFreeUnicodeString(TransportDeviceName);
|
||||||
|
return WSAENOBUFS;
|
||||||
|
}
|
||||||
|
|
||||||
|
Context->AddressFamily = *AddressFamily;
|
||||||
|
Context->SocketType = *SocketType;
|
||||||
|
Context->Protocol = *Protocol;
|
||||||
|
Context->Flags = Flags;
|
||||||
|
|
||||||
|
*HelperDllSocketContext = Context;
|
||||||
|
|
||||||
|
return NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHSetSocketInformation(
|
||||||
|
IN PVOID HelperDllSocketContext,
|
||||||
|
IN SOCKET SocketHandle,
|
||||||
|
IN HANDLE TdiAddressObjectHandle,
|
||||||
|
IN HANDLE TdiConnectionObjectHandle,
|
||||||
|
IN INT Level,
|
||||||
|
IN INT OptionName,
|
||||||
|
IN PCHAR OptionValue,
|
||||||
|
IN INT OptionLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
INT
|
||||||
|
EXPORT
|
||||||
|
WSHStringToAddress(
|
||||||
|
IN LPWSTR AddressString,
|
||||||
|
IN DWORD AddressFamily,
|
||||||
|
IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL,
|
||||||
|
OUT LPSOCKADDR Address,
|
||||||
|
IN OUT LPDWORD AddressStringLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
23
reactos/drivers/net/wshtcpip/wshtcpip.def
Normal file
23
reactos/drivers/net/wshtcpip/wshtcpip.def
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
; WSHTCPIP.DLL - Windows Sockets Helper DLL for TCP/IP
|
||||||
|
|
||||||
|
LIBRARY wshtcpip.dll
|
||||||
|
|
||||||
|
EXPORTS
|
||||||
|
WSHAddressToString@20
|
||||||
|
WSHEnumProtocols@16
|
||||||
|
WSHGetBroadcastSockaddr@12
|
||||||
|
WSHGetProviderGuid@8
|
||||||
|
WSHGetSockaddrType@12
|
||||||
|
WSHGetSocketInformation@32
|
||||||
|
WSHGetWildcardSockaddr@12
|
||||||
|
WSHGetWinsockMapping@8
|
||||||
|
WSHGetWSAProtocolInfo@12
|
||||||
|
WSHIoctl@52
|
||||||
|
WSHJoinLeaf@52
|
||||||
|
WSHNotify@20
|
||||||
|
WSHOpenSocket@24
|
||||||
|
WSHOpenSocket2@32
|
||||||
|
WSHSetSocketInformation@32
|
||||||
|
WSHStringToAddress@20
|
||||||
|
|
||||||
|
; EOF
|
23
reactos/drivers/net/wshtcpip/wshtcpip.edf
Normal file
23
reactos/drivers/net/wshtcpip/wshtcpip.edf
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
; WSHTCPIP.DLL - Windows Sockets Helper DLL for TCP/IP
|
||||||
|
|
||||||
|
LIBRARY wshtcpip.dll
|
||||||
|
|
||||||
|
EXPORTS
|
||||||
|
WSHAddressToString=WSHAddressToString@20
|
||||||
|
WSHEnumProtocols=WSHEnumProtocols@16
|
||||||
|
WSHGetBroadcastSockaddr=WSHGetBroadcastSockaddr@12
|
||||||
|
WSHGetProviderGuid=WSHGetProviderGuid@8
|
||||||
|
WSHGetSockaddrType=WSHGetSockaddrType@12
|
||||||
|
WSHGetSocketInformation=WSHGetSocketInformation@32
|
||||||
|
WSHGetWildcardSockaddr=WSHGetWildcardSockaddr@12
|
||||||
|
WSHGetWinsockMapping=WSHGetWinsockMapping@8
|
||||||
|
WSHGetWSAProtocolInfo=WSHGetWSAProtocolInfo@12
|
||||||
|
WSHIoctl=WSHIoctl@52
|
||||||
|
WSHJoinLeaf=WSHJoinLeaf@52
|
||||||
|
WSHNotify=WSHNotify@20
|
||||||
|
WSHOpenSocket=WSHOpenSocket@24
|
||||||
|
WSHOpenSocket2=WSHOpenSocket2@32
|
||||||
|
WSHSetSocketInformation=WSHSetSocketInformation@32
|
||||||
|
WSHStringToAddress=WSHStringToAddress@20
|
||||||
|
|
||||||
|
; EOF
|
33
reactos/drivers/net/wshtcpip/wshtcpip.h
Normal file
33
reactos/drivers/net/wshtcpip/wshtcpip.h
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS WinSock Helper DLL for TCP/IP
|
||||||
|
* FILE: include/wshtcpip.h
|
||||||
|
* PURPOSE: WinSock Helper DLL for TCP/IP header
|
||||||
|
*/
|
||||||
|
#ifndef __WSHTCPIP_H
|
||||||
|
#define __WSHTCPIP_H
|
||||||
|
|
||||||
|
#include <wsahelp.h>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <ddk/ntddk.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#define EXPORT STDCALL
|
||||||
|
|
||||||
|
#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\')
|
||||||
|
|
||||||
|
#define DD_TCP_DEVICE_NAME L"\\Device\\Tcp"
|
||||||
|
#define DD_UDP_DEVICE_NAME L"\\Device\\Udp"
|
||||||
|
#define DD_RAW_IP_DEVICE_NAME L"\\Device\\RawIp"
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _SOCKET_CONTEXT {
|
||||||
|
INT AddressFamily;
|
||||||
|
INT SocketType;
|
||||||
|
INT Protocol;
|
||||||
|
DWORD Flags;
|
||||||
|
} SOCKET_CONTEXT, *PSOCKET_CONTEXT;
|
||||||
|
|
||||||
|
#endif /* __WSHTCPIP_H */
|
||||||
|
|
||||||
|
/* EOF */
|
39
reactos/drivers/net/wshtcpip/wshtcpip.rc
Normal file
39
reactos/drivers/net/wshtcpip/wshtcpip.rc
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#include <defines.h>
|
||||||
|
#include <reactos/resource.h>
|
||||||
|
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||||
|
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x40004L
|
||||||
|
FILETYPE 0x2L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||||
|
VALUE "FileDescription", "Windows Sockets 2 API\0"
|
||||||
|
VALUE "FileVersion", RES_STR_FILE_VERSION
|
||||||
|
VALUE "InternalName", "ws2_32\0"
|
||||||
|
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||||
|
VALUE "OriginalFilename", "ws2_32.dll\0"
|
||||||
|
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||||
|
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
|
78
reactos/drivers/net/wshtcpip/wshtcpip_specs
Normal file
78
reactos/drivers/net/wshtcpip/wshtcpip_specs
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
*asm:
|
||||||
|
|
||||||
|
|
||||||
|
*asm_final:
|
||||||
|
|
||||||
|
|
||||||
|
*cpp:
|
||||||
|
-remap %(cpp_cpu) %{posix:-D_POSIX_SOURCE}
|
||||||
|
|
||||||
|
*cc1:
|
||||||
|
%(cc1_spec)
|
||||||
|
|
||||||
|
*cc1plus:
|
||||||
|
|
||||||
|
|
||||||
|
*endfile:
|
||||||
|
|
||||||
|
|
||||||
|
*link:
|
||||||
|
%{mwindows:--subsystem windows} %{mdll:--dll -e _DllMain@12}
|
||||||
|
|
||||||
|
*lib:
|
||||||
|
|
||||||
|
|
||||||
|
*libgcc:
|
||||||
|
-lgcc
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
|
||||||
|
|
||||||
|
*switches_need_spaces:
|
||||||
|
|
||||||
|
|
||||||
|
*signed_char:
|
||||||
|
%{funsigned-char:-D__CHAR_UNSIGNED__}
|
||||||
|
|
||||||
|
*predefines:
|
||||||
|
-Di386 -D_WIN32 -DWIN32 -D__WIN32__ -D__MINGW32__ -DWINNT -D_X86_=1 -D__STDC__=1 -D__stdcall=__attribute__((__stdcall__)) -D_stdcall=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__)) -D__declspec(x)=__attribute__((x)) -Asystem(winnt) -Acpu(i386) -Amachine(i386)
|
||||||
|
|
||||||
|
*cross_compile:
|
||||||
|
1
|
||||||
|
|
||||||
|
*version:
|
||||||
|
egcs-2.91.57
|
||||||
|
|
||||||
|
*multilib:
|
||||||
|
. ;
|
||||||
|
|
||||||
|
*multilib_defaults:
|
||||||
|
|
||||||
|
|
||||||
|
*multilib_extra:
|
||||||
|
|
||||||
|
|
||||||
|
*multilib_matches:
|
||||||
|
|
||||||
|
|
||||||
|
*linker:
|
||||||
|
collect2
|
||||||
|
|
||||||
|
*cpp_486:
|
||||||
|
%{!ansi:-Di486} -D__i486 -D__i486__
|
||||||
|
|
||||||
|
*cpp_586:
|
||||||
|
%{!ansi:-Di586 -Dpentium} -D__i586 -D__i586__ -D__pentium -D__pentium__
|
||||||
|
|
||||||
|
*cpp_686:
|
||||||
|
%{!ansi:-Di686 -Dpentiumpro} -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__
|
||||||
|
|
||||||
|
*cpp_cpu_default:
|
||||||
|
%(cpp_586)
|
||||||
|
|
||||||
|
*cpp_cpu:
|
||||||
|
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__ %{mcpu=i486:%(cpp_486)} %{m486:%(cpp_486)} %{mpentium:%(cpp_586)} %{mcpu=pentium:%(cpp_586)} %{mpentiumpro:%(cpp_686)} %{mcpu=pentiumpro:%(cpp_686)} %{!mcpu*:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}
|
||||||
|
|
||||||
|
*cc1_cpu:
|
||||||
|
%{!mcpu*: %{m386:-mcpu=i386 -march=i386} %{mno-486:-mcpu=i386 -march=i386} %{m486:-mcpu=i486 -march=i486} %{mno-386:-mcpu=i486 -march=i486} %{mno-pentium:-mcpu=i486 -march=i486} %{mpentium:-mcpu=pentium} %{mno-pentiumpro:-mcpu=pentium} %{mpentiumpro:-mcpu=pentiumpro}}
|
||||||
|
|
Loading…
Reference in a new issue