Added WinSock 2 DLL Stubs

svn path=/trunk/; revision=1362
This commit is contained in:
Casper Hornstrup 2000-09-17 09:36:01 +00:00
parent 2a734dfd02
commit ab2b4e0924
16 changed files with 2745 additions and 0 deletions

View file

@ -0,0 +1,6 @@
ws2_32.a
ws2_32.dll
ws2_32.coff
base.tmp
junk.tmp
temp.exp

View file

@ -0,0 +1,48 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: include/catalog.h
* PURPOSE: Service Provider Catalog definitions
*/
#ifndef __CATALOG_H
#define __CATALOG_H
#include <ws2_32.h>
#include <wsahelp.h>
typedef struct _CATALOG_ENTRY {
LIST_ENTRY ListEntry;
CRITICAL_SECTION Lock;
WCHAR LibraryName[MAX_PATH];
HMODULE hModule;
PWINSOCK_MAPPING Mapping;
LPWSPSTARTUP WSPStartup;
WSPDATA WSPData;
WSPPROC_TABLE ProcTable;
} CATALOG_ENTRY, *PCATALOG_ENTRY;
extern LIST_ENTRY Catalog;
PCATALOG_ENTRY CreateCatalogEntry(
LPWSTR LibraryName);
INT DestroyCatalogEntry(
PCATALOG_ENTRY Provider);
PCATALOG_ENTRY LocateProvider(
LPWSAPROTOCOL_INFOW lpProtocolInfo);
INT LoadProvider(
PCATALOG_ENTRY Provider,
LPWSAPROTOCOL_INFOW lpProtocolInfo);
INT UnloadProvider(
PCATALOG_ENTRY Provider);
VOID CreateCatalog(VOID);
VOID DestroyCatalog(VOID);
#endif /* __CATALOG_H */
/* EOF */

View file

@ -0,0 +1,70 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 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_ULTRA 0xFFFFFFFF
#ifdef DBG
extern DWORD DebugTraceLevel;
#define Get_DbgPrint(quote...) L##quote
#define WS_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)) { WS_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 WS_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 \
WS_DbgPrint(MIN_TRACE, ("is unimplemented, please try again later.\n"));
#define CHECKPOINT \
do { WS_DbgPrint(MIN_TRACE, ("\n")); } while(0);
#endif /* __DEBUG_H */
/* EOF */

View file

@ -0,0 +1,114 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: include/upcall.h
* PURPOSE: Upcall function defintions
*/
#ifndef __UPCALL_H
#define __UPCALL_H
#include <ws2_32.h>
BOOL
WSPAPI
WPUCloseEvent(
IN WSAEVENT hEvent,
OUT LPINT lpErrno);
INT
WSPAPI
WPUCloseSocketHandle(
IN SOCKET s,
OUT LPINT lpErrno);
INT
WSPAPI
WPUCloseThread(
IN LPWSATHREADID lpThreadId,
OUT LPINT lpErrno);
WSAEVENT
WSPAPI
WPUCreateEvent(
OUT LPINT lpErrno);
SOCKET
WSPAPI
WPUCreateSocketHandle(
IN DWORD dwCatalogEntryId,
IN DWORD dwContext,
OUT LPINT lpErrno);
SOCKET
WSPAPI
WPUFDIsSet(
IN SOCKET s,
IN LPFD_SET set);
INT
WSPAPI
WPUGetProviderPath(
IN LPGUID lpProviderId,
OUT LPWSTR lpszProviderDllPath,
IN OUT LPINT lpProviderDllPathLen,
OUT LPINT lpErrno);
SOCKET
WSPAPI
WPUModifyIFSHandle(
IN DWORD dwCatalogEntryId,
IN SOCKET ProposedHandle,
OUT LPINT lpErrno);
INT
WSPAPI
WPUOpenCurrentThread(
OUT LPWSATHREADID lpThreadId,
OUT LPINT lpErrno);
BOOL
WSPAPI
WPUPostMessage(
IN HWND hWnd,
IN UINT Msg,
IN WPARAM wParam,
IN LPARAM lParam);
INT
WSPAPI
WPUQueryBlockingCallback(
IN DWORD dwCatalogEntryId,
OUT LPBLOCKINGCALLBACK FAR* lplpfnCallback,
OUT LPDWORD lpdwContext,
OUT LPINT lpErrno);
INT
WSPAPI
WPUQuerySocketHandleContext(
IN SOCKET s,
OUT LPDWORD lpContext,
OUT LPINT lpErrno);
INT
WSPAPI
WPUQueueApc(
IN LPWSATHREADID lpThreadId,
IN LPWSAUSERAPC lpfnUserApc,
IN DWORD dwContext,
OUT LPINT lpErrno);
BOOL
WSPAPI
WPUResetEvent(
IN WSAEVENT hEvent,
OUT LPINT lpErrno);
BOOL
WSPAPI
WPUSetEvent(
IN WSAEVENT hEvent,
OUT LPINT lpErrno);
#endif /* __UPCALL_H */
/* EOF */

View file

@ -0,0 +1,40 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: include/ws2_32.h
* PURPOSE: WinSock 2 DLL header
*/
#ifndef __WS2_32_H
#define __WS2_32_H
#include <ddk/ntddk.h>
#include <winsock2.h>
#include <ws2spi.h>
#include <windows.h>
#include <debug.h>
/* Exported by ntdll.dll, but where is the prototype? */
unsigned long strtoul(const char *nptr, char **endptr, int base);
#define EXPORT STDCALL
extern HANDLE GlobalHeap;
extern WSPUPCALLTABLE UpcallTable;
typedef struct _WINSOCK_THREAD_BLOCK {
INT LastErrorValue; /* Error value from last function that failed */
BOOL Initialized; /* TRUE if WSAStartup() has been successfully called */
} WINSOCK_THREAD_BLOCK, *PWINSOCK_THREAD_BLOCK;
/* Macros */
#define WSAINITIALIZED (((PWINSOCK_THREAD_BLOCK)NtCurrentTeb()->WinSockData)->Initialized)
#define WSASETINITIALIZED (((PWINSOCK_THREAD_BLOCK)NtCurrentTeb()->WinSockData)->Initialized = TRUE)
#endif /* __WS2_32_H */
/* EOF */

View file

@ -0,0 +1,98 @@
# Makefile for ReactOS WinSock 2 DLL
PATH_TO_TOP = ../..
BASE_CFLAGS = -Iinclude -I../../include -DUNICODE
TARGETNAME=ws2_32
MISC_OBJECTS = misc/dllmain.o misc/catalog.o misc/event.o misc/ns.o \
misc/stubs.o misc/upcall.o
RESOURCE_OBJECT = $(TARGETNAME).coff
OBJECTS = $(MISC_OBJECTS) $(RESOURCE_OBJECT)
LIBS = ../ntdll/ntdll.a \
../kernel32/kernel32.a \
../advapi32/advapi32.a
ifeq ($(DOSCLI),yes)
CLEAN_FILES = misc\*.o \
$(TARGETNAME).o $(TARGETNAME).a junk.tmp base.tmp temp.exp \
$(TARGETNAME).dll $(TARGETNAME).sym $(TARGETNAME).coff
else
CLEAN_FILES = misc/*.o \
$(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).a: $(OBJECTS)
$(LD) -r $(OBJECTS) -o $(TARGETNAME).a
$(TARGETNAME).dll: $(LIBS) $(OBJECTS) $(TARGETNAME).def
$(LD) -r $(OBJECTS) -o $(TARGETNAME).o
$(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) \
$(TARGETNAME).o \
$(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

View file

@ -0,0 +1,193 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: misc/catalog.c
* PURPOSE: Service Provider Catalog
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 01/09-2000 Created
*/
#include <ws2_32.h>
#include <catalog.h>
LIST_ENTRY CatalogListHead;
CRITICAL_SECTION CatalogLock;
PCATALOG_ENTRY CreateCatalogEntry(
LPWSTR LibraryName)
{
PCATALOG_ENTRY Provider;
Provider = HeapAlloc(GlobalHeap, 0, sizeof(CATALOG_ENTRY));
if (!Provider)
return NULL;
InitializeCriticalSection(&Provider->Lock);
Provider->hModule = (HMODULE)INVALID_HANDLE_VALUE;
lstrcpyW(Provider->LibraryName, LibraryName);
Provider->Mapping = NULL;
EnterCriticalSection(&CatalogLock);
InsertTailList(&CatalogListHead, &Provider->ListEntry);
LeaveCriticalSection(&CatalogLock);
return Provider;
}
INT DestroyCatalogEntry(
PCATALOG_ENTRY Provider)
{
INT Status;
EnterCriticalSection(&CatalogLock);
RemoveEntryList(&Provider->ListEntry);
LeaveCriticalSection(&CatalogLock);
HeapFree(GlobalHeap, 0, Provider->Mapping);
if (Provider->hModule != (HMODULE)INVALID_HANDLE_VALUE) {
Status = UnloadProvider(Provider);
} else {
Status = NO_ERROR;
}
DeleteCriticalSection(&Provider->Lock);
HeapFree(GlobalHeap, 0, Provider);
return Status;
}
PCATALOG_ENTRY LocateProvider(
LPWSAPROTOCOL_INFOW lpProtocolInfo)
{
PLIST_ENTRY CurrentEntry;
PCATALOG_ENTRY Provider;
UINT i;
EnterCriticalSection(&CatalogLock);
CurrentEntry = CatalogListHead.Flink;
while (CurrentEntry != &CatalogListHead) {
Provider = CONTAINING_RECORD(CurrentEntry,
CATALOG_ENTRY,
ListEntry);
for (i = 0; i < Provider->Mapping->Rows; i++) {
if ((lpProtocolInfo->iAddressFamily == Provider->Mapping->Mapping[i].AddressFamily) &&
(lpProtocolInfo->iSocketType == Provider->Mapping->Mapping[i].SocketType) &&
((lpProtocolInfo->iProtocol == Provider->Mapping->Mapping[i].Protocol) ||
(lpProtocolInfo->iSocketType == SOCK_RAW))) {
LeaveCriticalSection(&CatalogLock);
return Provider;
}
}
CurrentEntry = CurrentEntry->Flink;
}
LeaveCriticalSection(&CatalogLock);
return NULL;
}
INT LoadProvider(
PCATALOG_ENTRY Provider,
LPWSAPROTOCOL_INFOW lpProtocolInfo)
{
INT Status = NO_ERROR;
WS_DbgPrint(MIN_TRACE, ("Loading provider...\n"));
if (Provider->hModule == (HMODULE)INVALID_HANDLE_VALUE) {
/* DLL is not loaded so load it now */
Provider->hModule = LoadLibrary(Provider->LibraryName);
if (Provider->hModule != (HMODULE)INVALID_HANDLE_VALUE) {
Provider->WSPStartup = (LPWSPSTARTUP)GetProcAddress(Provider->hModule,
"WSPStartup");
if (Provider->WSPStartup) {
Status = WSPStartup(MAKEWORD(2, 2),
&Provider->WSPData,
lpProtocolInfo,
UpcallTable,
&Provider->ProcTable);
} else
Status = ERROR_BAD_PROVIDER;
} else
Status = ERROR_DLL_NOT_FOUND;
} else
Status = NO_ERROR;
WS_DbgPrint(MIN_TRACE, ("Status %d\n", Status));
return Status;
}
INT UnloadProvider(
PCATALOG_ENTRY Provider)
{
INT Status = NO_ERROR;
if (Provider->hModule != (HMODULE)INVALID_HANDLE_VALUE) {
Provider->ProcTable.lpWSPCleanup(&Status);
if (!FreeLibrary(Provider->hModule))
Status = GetLastError();
Provider->hModule = (HMODULE)INVALID_HANDLE_VALUE;
}
return Status;
}
VOID CreateCatalog(VOID)
{
PCATALOG_ENTRY Provider;
InitializeCriticalSection(&CatalogLock);
InitializeListHead(&CatalogListHead);
/* FIXME: Read service provider catalog from registry */
#if 1
Provider = CreateCatalogEntry(L"msafd.dll");
if (!Provider)
return;
Provider->Mapping = HeapAlloc(GlobalHeap, 0, sizeof(WINSOCK_MAPPING) + 3 * sizeof(DWORD));
if (!Provider->Mapping)
return;
Provider->Mapping->Rows = 1;
Provider->Mapping->Columns = 3;
Provider->Mapping->Mapping[0].AddressFamily = AF_INET;
Provider->Mapping->Mapping[0].SocketType = SOCK_RAW;
Provider->Mapping->Mapping[0].Protocol = 0;
#endif
}
VOID DestroyCatalog(VOID)
{
PLIST_ENTRY CurrentEntry;
PCATALOG_ENTRY Provider;
CurrentEntry = CatalogListHead.Flink;
while (CurrentEntry != &CatalogListHead) {
Provider = CONTAINING_RECORD(CurrentEntry,
CATALOG_ENTRY,
ListEntry);
DestroyCatalogEntry(Provider);
CurrentEntry = CurrentEntry->Flink;
}
DeleteCriticalSection(&CatalogLock);
}
/* EOF */

View file

@ -0,0 +1,272 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: misc/dllmain.c
* PURPOSE: DLL entry point
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 01/09-2000 Created
*/
#include <ws2_32.h>
#include <catalog.h>
#include <upcall.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) {}
HANDLE GlobalHeap;
WSPUPCALLTABLE UpcallTable;
INT
EXPORT
WSAGetLastError(VOID)
{
PWINSOCK_THREAD_BLOCK p = NtCurrentTeb()->WinSockData;
if (p) {
return p->LastErrorValue;
} else {
/* FIXME: What error code should we use here? Can this even happen? */
return ERROR_BAD_ENVIRONMENT;
}
}
VOID
EXPORT
WSASetLastError(
IN INT iError)
{
PWINSOCK_THREAD_BLOCK p = NtCurrentTeb()->WinSockData;
if (p)
p->LastErrorValue = iError;
}
INT
EXPORT
WSAStartup(
IN WORD wVersionRequested,
OUT LPWSADATA lpWSAData)
{
WS_DbgPrint(MIN_TRACE, ("WSAStartup of ws2_32.dll\n"));
lpWSAData->wVersion = wVersionRequested;
lpWSAData->wHighVersion = 2;
lstrcpyA(lpWSAData->szDescription, "WinSock 2.0");
lstrcpyA(lpWSAData->szSystemStatus, "Running");
lpWSAData->iMaxSockets = 0;
lpWSAData->iMaxUdpDg = 0;
lpWSAData->lpVendorInfo = NULL;
WSASETINITIALIZED;
return NO_ERROR;
}
INT
EXPORT
WSACleanup(VOID)
{
WS_DbgPrint(MIN_TRACE, ("WSACleanup of ws2_32.dll\n"));
if (!WSAINITIALIZED) {
WSASetLastError(WSANOTINITIALISED);
return WSANOTINITIALISED;
}
return NO_ERROR;
}
SOCKET
EXPORT
WSASocketA(
IN INT af,
IN INT type,
IN INT protocol,
IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
IN GROUP g,
IN DWORD dwFlags)
/*
* FUNCTION: Creates a new socket
*/
{
WSAPROTOCOL_INFOW ProtocolInfoW;
LPWSAPROTOCOL_INFOW p;
UNICODE_STRING StringU;
ANSI_STRING StringA;
if (lpProtocolInfo) {
memcpy(&ProtocolInfoW,
lpProtocolInfo,
sizeof(WSAPROTOCOL_INFOA) -
sizeof(CHAR) * (WSAPROTOCOL_LEN + 1));
RtlInitAnsiString(&StringA, (LPSTR)lpProtocolInfo->szProtocol);
RtlInitUnicodeString(&StringU, (LPWSTR)&ProtocolInfoW.szProtocol);
RtlAnsiStringToUnicodeString(&StringU,
&StringA,
FALSE);
p = &ProtocolInfoW;
} else {
p = NULL;
}
return WSASocketW(af,
type,
protocol,
p,
g,
dwFlags);
}
SOCKET
EXPORT
WSASocketW(
IN INT af,
IN INT type,
IN INT protocol,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
IN GROUP g,
IN DWORD dwFlags)
/*
* FUNCTION: Creates a new socket
* ARGUMENTS:
* af = Address family
* type = Socket type
* protocol = Protocol type
* lpProtocolInfo = Pointer to protocol information
* g = Reserved
* dwFlags = Socket flags
* RETURNS:
* Created socket, or INVALID_SOCKET if it could not be created
*/
{
INT Status;
SOCKET Socket;
PCATALOG_ENTRY Provider;
WSAPROTOCOL_INFOW ProtocolInfo;
if (!WSAINITIALIZED) {
WSASetLastError(WSANOTINITIALISED);
return INVALID_SOCKET;
}
if (!lpProtocolInfo) {
lpProtocolInfo = &ProtocolInfo;
ZeroMemory(&ProtocolInfo, sizeof(WSAPROTOCOL_INFOW));
ProtocolInfo.iAddressFamily = af;
ProtocolInfo.iSocketType = type;
ProtocolInfo.iProtocol = protocol;
}
Provider = LocateProvider(lpProtocolInfo);
if (!Provider) {
WSASetLastError(WSAEAFNOSUPPORT);
return INVALID_SOCKET;
}
Status = LoadProvider(Provider, lpProtocolInfo);
if (Status != NO_ERROR) {
WSASetLastError(Status);
return INVALID_SOCKET;
}
Socket = Provider->ProcTable.lpWSPSocket(af,
type,
protocol,
lpProtocolInfo,
g,
dwFlags,
&Status);
if (Status != NO_ERROR) {
WSASetLastError(Status);
return INVALID_SOCKET;
}
return Socket;
}
BOOL
STDCALL
DllMain(PVOID hInstDll,
ULONG dwReason,
PVOID Reserved)
{
WS_DbgPrint(MIN_TRACE, ("DllMain of ws2_32.dll\n"));
#if 0
switch (dwReason) {
case DLL_PROCESS_ATTACH:
GlobalHeap = HeapCreate(0, 0, 0);
if (!GlobalHeap)
return FALSE;
if (ReadCatalog() != NO_ERROR)
return FALSE;
UpcallTable.lpWPUCloseEvent = WPUCloseEvent;
UpcallTable.lpWPUCloseSocketHandle = WPUCloseSocketHandle;
UpcallTable.lpWPUCreateEvent = WPUCreateEvent;
UpcallTable.lpWPUCreateSocketHandle = WPUCreateSocketHandle;
UpcallTable.lpWPUFDIsSet = WPUFDIsSet;
UpcallTable.lpWPUGetProviderPath = WPUGetProviderPath;
UpcallTable.lpWPUModifyIFSHandle = WPUModifyIFSHandle;
UpcallTable.lpWPUPostMessage = WPUPostMessage;
UpcallTable.lpWPUQueryBlockingCallback = WPUQueryBlockingCallback;
UpcallTable.lpWPUQuerySocketHandleContext = WPUQuerySocketHandleContext;
UpcallTable.lpWPUQueueApc = WPUQueueApc;
UpcallTable.lpWPUResetEvent = WPUResetEvent;
UpcallTable.lpWPUSetEvent = WPUSetEvent;
UpcallTable.lpWPUOpenCurrentThread = WPUOpenCurrentThread;
UpcallTable.lpWPUCloseThread = WPUCloseThread;
break;
case DLL_THREAD_ATTACH: {
PWINSOCK_THREAD_BLOCK p;
p = HeapAlloc(GlobalHeap, 0, sizeof(WINSOCK_THREAD_BLOCK));
if (p) {
p->LastErrorValue = NO_ERROR;
p->Initialized = FALSE;
NtCurrentTeb()->WinSockData = p;
}
break;
}
case DLL_THREAD_DETACH: {
PWINSOCK_THREAD_BLOCK p = NtCurrentTeb()->WinSockData;
if (p)
HeapFree(GlobalHeap, 0, p);
break;
}
case DLL_PROCESS_DETACH:
DestroyCatalog();
HeapDestroy(GlobalHeap);
break;
}
#endif
return TRUE;
}
/* EOF */

View file

@ -0,0 +1,69 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: misc/event.c
* PURPOSE: Event handling
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 01/09-2000 Created
*/
#include <ws2_32.h>
BOOL
EXPORT
WSACloseEvent(
IN WSAEVENT hEvent)
{
UNIMPLEMENTED
return FALSE;
}
WSAEVENT
EXPORT
WSACreateEvent(VOID)
{
UNIMPLEMENTED
return (WSAEVENT)0;
}
BOOL
EXPORT
WSAResetEvent(
IN WSAEVENT hEvent)
{
UNIMPLEMENTED
return FALSE;
}
BOOL
EXPORT
WSASetEvent(
IN WSAEVENT hEvent)
{
UNIMPLEMENTED
return FALSE;
}
DWORD
EXPORT
WSAWaitForMultipleEvents(
IN DWORD cEvents,
IN CONST WSAEVENT FAR* lphEvents,
IN BOOL fWaitAll,
IN DWORD dwTimeout,
IN BOOL fAlertable)
{
UNIMPLEMENTED
return 0;
}
/* EOF */

View file

@ -0,0 +1,504 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: misc/ns.c
* PURPOSE: Namespace APIs
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 01/09-2000 Created
*/
#include <ws2_32.h>
/* Name resolution APIs */
INT
EXPORT
WSAAddressToStringA(
IN LPSOCKADDR lpsaAddress,
IN DWORD dwAddressLength,
IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
OUT LPSTR lpszAddressString,
IN OUT LPDWORD lpdwAddressStringLength)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAAddressToStringW(
IN LPSOCKADDR lpsaAddress,
IN DWORD dwAddressLength,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
OUT LPWSTR lpszAddressString,
IN OUT LPDWORD lpdwAddressStringLength)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAEnumNameSpaceProvidersA(
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSANAMESPACE_INFOA lpnspBuffer)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAEnumNameSpaceProvidersW(
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSANAMESPACE_INFOW lpnspBuffer)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAGetServiceClassInfoA(
IN LPGUID lpProviderId,
IN LPGUID lpServiceClassId,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSASERVICECLASSINFOA lpServiceClassInfo)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAGetServiceClassInfoW(
IN LPGUID lpProviderId,
IN LPGUID lpServiceClassId,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSASERVICECLASSINFOW lpServiceClassInfo)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAGetServiceClassNameByClassIdA(
IN LPGUID lpServiceClassId,
OUT LPSTR lpszServiceClassName,
IN OUT LPDWORD lpdwBufferLength)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAGetServiceClassNameByClassIdW(
IN LPGUID lpServiceClassId,
OUT LPWSTR lpszServiceClassName,
IN OUT LPDWORD lpdwBufferLength)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAInstallServiceClassA(
IN LPWSASERVICECLASSINFOA lpServiceClassInfo)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAInstallServiceClassW(
IN LPWSASERVICECLASSINFOW lpServiceClassInfo)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSALookupServiceBeginA(
IN LPWSAQUERYSETA lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSALookupServiceBeginW(
IN LPWSAQUERYSETW lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSALookupServiceEnd(
IN HANDLE hLookup)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSALookupServiceNextA(
IN HANDLE hLookup,
IN DWORD dwControlFlags,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSAQUERYSETA lpqsResults)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSALookupServiceNextW(
IN HANDLE hLookup,
IN DWORD dwControlFlags,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSAQUERYSETW lpqsResults)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSARemoveServiceClass(
IN LPGUID lpServiceClassId)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSASetServiceA(
IN LPWSAQUERYSETA lpqsRegInfo,
IN WSAESETSERVICEOP essOperation,
IN DWORD dwControlFlags)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSASetServiceW(
IN LPWSAQUERYSETW lpqsRegInfo,
IN WSAESETSERVICEOP essOperation,
IN DWORD dwControlFlags)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAStringToAddressA(
IN LPSTR AddressString,
IN INT AddressFamily,
IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
OUT LPSOCKADDR lpAddress,
IN OUT LPINT lpAddressLength)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAStringToAddressW(
IN LPWSTR AddressString,
IN INT AddressFamily,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
OUT LPSOCKADDR lpAddress,
IN OUT LPINT lpAddressLength)
{
UNIMPLEMENTED
return 0;
}
/* WinSock 1.1 compatible name resolution APIs */
LPHOSTENT
EXPORT
gethostbyaddr(
IN CONST CHAR FAR* addr,
IN INT len,
IN INT type)
{
UNIMPLEMENTED
return (LPHOSTENT)NULL;
}
LPHOSTENT
EXPORT
gethostbyname(
IN CONST CHAR FAR* name)
{
UNIMPLEMENTED
return (LPHOSTENT)NULL;
}
INT
EXPORT
gethostname(
OUT CHAR FAR* name,
IN INT namelen)
{
UNIMPLEMENTED
return 0;
}
LPPROTOENT
EXPORT
getprotobyname(
IN CONST CHAR FAR* name)
{
UNIMPLEMENTED
return (LPPROTOENT)NULL;
}
LPPROTOENT
EXPORT
getprotobynumber(
IN INT number)
{
UNIMPLEMENTED
return (LPPROTOENT)NULL;
}
LPSERVENT
EXPORT
getservbyname(
IN CONST CHAR FAR* name,
IN CONST CHAR FAR* proto)
{
UNIMPLEMENTED
return (LPSERVENT)NULL;
}
LPSERVENT
EXPORT
getservbyport(
IN INT port,
IN CONST CHAR FAR* proto)
{
UNIMPLEMENTED
return (LPSERVENT)NULL;
}
ULONG
EXPORT
inet_addr(
IN CONST CHAR FAR* cp)
/*
* FUNCTION: Converts a string containing an IPv4 address to an unsigned long
* ARGUMENTS:
* cp = Pointer to string with address to convert
* RETURNS:
* Binary representation of IPv4 address, or INADDR_NONE
*/
{
UINT i;
PCHAR p;
ULONG u = 0;
/* FIXME: Little endian version only */
p = (PCHAR)cp;
if (strlen(p) == 0)
return INADDR_NONE;
if (strcmp(p, " ") == 0)
return 0;
for (i = 3; i >= 0; i--) {
u += (strtoul(p, &p, 0) << (i * 8));
if (strlen(p) == 0)
return u;
if (p[0] != '.')
return INADDR_NONE;
p++;
}
return u;
}
CHAR FAR*
EXPORT
inet_ntoa(
IN IN_ADDR in)
{
UNIMPLEMENTED
return (CHAR FAR*)NULL;
}
HANDLE
EXPORT
WSAAsyncGetHostByAddr(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* addr,
IN INT len,
IN INT type,
OUT CHAR FAR* buf,
IN INT buflen)
{
UNIMPLEMENTED
return (HANDLE)0;
}
HANDLE
EXPORT
WSAAsyncGetHostByName(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* name,
OUT CHAR FAR* buf,
IN INT buflen)
{
UNIMPLEMENTED
return (HANDLE)0;
}
HANDLE
EXPORT
WSAAsyncGetProtoByName(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* name,
OUT CHAR FAR* buf,
IN INT buflen)
{
UNIMPLEMENTED
return (HANDLE)0;
}
HANDLE
EXPORT
WSAAsyncGetProtoByNumber(
IN HWND hWnd,
IN UINT wMsg,
IN INT number,
OUT CHAR FAR* buf,
IN INT buflen)
{
UNIMPLEMENTED
return (HANDLE)0;
}
HANDLE
EXPORT
WSAAsyncGetServByName(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* name,
IN CONST CHAR FAR* proto,
OUT CHAR FAR* buf,
IN INT buflen)
{
UNIMPLEMENTED
return (HANDLE)0;
}
HANDLE
EXPORT
WSAAsyncGetServByPort(
IN HWND hWnd,
IN UINT wMsg,
IN INT port,
IN CONST CHAR FAR* proto,
OUT CHAR FAR* buf,
IN INT buflen)
{
UNIMPLEMENTED
return (HANDLE)0;
}
/* EOF */

View file

@ -0,0 +1,780 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: misc/stubs.c
* PURPOSE: Stubs
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 01/09-2000 Created
*/
#include <ws2_32.h>
SOCKET
EXPORT
accept(
IN SOCKET s,
OUT LPSOCKADDR addr,
OUT INT FAR* addrlen)
{
UNIMPLEMENTED
return INVALID_SOCKET;
}
INT
EXPORT
bind(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
closesocket(
IN SOCKET s)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
connect(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
getpeername(
IN SOCKET s,
OUT LPSOCKADDR name,
IN OUT INT FAR* namelen)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
getsockname(
IN SOCKET s,
OUT LPSOCKADDR name,
IN OUT INT FAR* namelen)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
getsockopt(
IN SOCKET s,
IN INT level,
IN INT optname,
OUT CHAR FAR* optval,
IN OUT INT FAR* optlen)
{
UNIMPLEMENTED
return 0;
}
ULONG
EXPORT
htonl(
IN ULONG hostlong)
{
UNIMPLEMENTED
return 0;
}
USHORT
EXPORT
htons(
IN USHORT hostshort)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
ioctlsocket(
IN SOCKET s,
IN LONG cmd,
IN OUT ULONG FAR* argp)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
listen(
IN SOCKET s,
IN INT backlog)
{
UNIMPLEMENTED
return 0;
}
ULONG
EXPORT
ntohl(
IN ULONG netlong)
{
UNIMPLEMENTED
return 0;
}
USHORT
EXPORT
ntohs(
IN USHORT netshort)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
recv(
IN SOCKET s,
OUT CHAR FAR* buf,
IN INT len,
IN INT flags)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
recvfrom(
IN SOCKET s,
OUT CHAR FAR* buf,
IN INT len,
IN INT flags,
OUT LPSOCKADDR from,
IN OUT INT FAR* fromlen)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
select(
IN INT nfds,
IN OUT LPFD_SET readfds,
IN OUT LPFD_SET writefds,
IN OUT LPFD_SET exceptfds,
IN CONST LPTIMEVAL timeout)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
send(
IN SOCKET s,
IN CONST CHAR FAR* buf,
IN INT len,
IN INT flags)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
sendto(
IN SOCKET s,
IN CONST CHAR FAR* buf,
IN INT len,
IN INT flags,
IN CONST LPSOCKADDR to,
IN INT tolen)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
setsockopt(
IN SOCKET s,
IN INT level,
IN INT optname,
IN CONST CHAR FAR* optval,
IN INT optlen)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
shutdown(
IN SOCKET s,
IN INT how)
{
UNIMPLEMENTED
return 0;
}
SOCKET
EXPORT
socket(
IN INT af,
IN INT type,
IN INT protocol)
{
UNIMPLEMENTED
return INVALID_SOCKET;
}
SOCKET
EXPORT
WSAAccept(
IN SOCKET s,
OUT LPSOCKADDR addr,
IN OUT LPINT addrlen,
IN LPCONDITIONPROC lpfnCondition,
IN DWORD dwCallbackData)
{
UNIMPLEMENTED
return INVALID_SOCKET;
}
INT
EXPORT
WSAAsyncSelect(
IN SOCKET s,
IN HWND hWnd,
IN UINT wMsg,
IN LONG lEvent)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSACancelBlockingCall(VOID)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAConnect(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen,
IN LPWSABUF lpCallerData,
OUT LPWSABUF lpCalleeData,
IN LPQOS lpSQOS,
IN LPQOS lpGQOS)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSADuplicateSocketA(
IN SOCKET s,
IN DWORD dwProcessId,
OUT LPWSAPROTOCOL_INFOA lpProtocolInfo)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSADuplicateSocketW(
IN SOCKET s,
IN DWORD dwProcessId,
OUT LPWSAPROTOCOL_INFOW lpProtocolInfo)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAEnumNetworkEvents(
IN SOCKET s,
IN WSAEVENT hEventObject,
OUT LPWSANETWORKEVENTS lpNetworkEvents)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAEnumProtocolsA(
IN LPINT lpiProtocols,
OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer,
IN OUT LPDWORD lpdwBufferLength)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAEnumProtocolsW(
IN LPINT lpiProtocols,
OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
IN OUT LPDWORD lpdwBufferLength)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAEventSelect(
IN SOCKET s,
IN WSAEVENT hEventObject,
IN LONG lNetworkEvents)
{
UNIMPLEMENTED
return 0;
}
BOOL
EXPORT
WSAGetOverlappedResult(
IN SOCKET s,
IN LPWSAOVERLAPPED lpOverlapped,
OUT LPDWORD lpcbTransfer,
IN BOOL fWait,
OUT LPDWORD lpdwFlags)
{
UNIMPLEMENTED
return 0;
}
BOOL
EXPORT
WSAGetQOSByName(
IN SOCKET s,
IN OUT LPWSABUF lpQOSName,
OUT LPQOS lpQOS)
{
UNIMPLEMENTED
return FALSE;
}
INT
EXPORT
WSAHtonl(
IN SOCKET s,
IN ULONG hostLONG,
OUT ULONG FAR* lpnetlong)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAHtons(
IN SOCKET s,
IN USHORT hostshort,
OUT USHORT FAR* lpnetshort)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAIoctl(
IN SOCKET s,
IN DWORD dwIoControlCode,
IN LPVOID lpvInBuffer,
IN DWORD cbInBuffer,
OUT LPVOID lpvOutBuffer,
IN DWORD cbOutBuffer,
OUT LPDWORD lpcbBytesReturned,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
UNIMPLEMENTED
return 0;
}
BOOL
EXPORT
WSAIsBlocking(VOID)
{
UNIMPLEMENTED
return FALSE;
}
SOCKET
EXPORT
WSAJoinLeaf(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen,
IN LPWSABUF lpCallerData,
OUT LPWSABUF lpCalleeData,
IN LPQOS lpSQOS,
IN LPQOS lpGQOS,
IN DWORD dwFlags)
{
UNIMPLEMENTED
return INVALID_SOCKET;
}
INT
EXPORT
WSANtohl(
IN SOCKET s,
IN ULONG netlong,
OUT ULONG FAR* lphostlong)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSANtohs(
IN SOCKET s,
IN USHORT netshort,
OUT USHORT FAR* lphostshort)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSARecv(
IN SOCKET s,
IN OUT LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesRecvd,
IN OUT LPDWORD lpFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSARecvDisconnect(
IN SOCKET s,
OUT LPWSABUF lpInboundDisconnectData)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSARecvFrom(
IN SOCKET s,
IN OUT LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesRecvd,
IN OUT LPDWORD lpFlags,
OUT LPSOCKADDR lpFrom,
IN OUT LPINT lpFromlen,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSASend(
IN SOCKET s,
IN LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesSent,
IN DWORD dwFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSASendDisconnect(
IN SOCKET s,
IN LPWSABUF lpOutboundDisconnectData)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSASendTo(
IN SOCKET s,
IN LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesSent,
IN DWORD dwFlags,
IN CONST LPSOCKADDR lpTo,
IN INT iToLen,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
UNIMPLEMENTED
return 0;
}
FARPROC
EXPORT
WSASetBlockingHook(
IN FARPROC lpBlockFunc)
{
UNIMPLEMENTED
return (FARPROC)0;
}
INT
EXPORT
WSAUnhookBlockingHook(VOID)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSAProviderConfigChange(
IN OUT LPHANDLE lpNotificationHandle,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSACancelAsyncRequest(
IN HANDLE hAsyncTaskHandle)
{
UNIMPLEMENTED
return 0;
}
INT
#if 0
PASCAL FAR
#else
EXPORT
#endif
__WSAFDIsSet(SOCKET s, LPFD_SET set)
{
UNIMPLEMENTED
return 0;
}
/* WinSock Service Provider support functions */
INT
EXPORT
WPUCompleteOverlappedRequest(
IN SOCKET s,
IN LPWSAOVERLAPPED lpOverlapped,
IN DWORD dwError,
IN DWORD cbTransferred,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSPStartup(
IN WORD wVersionRequested,
OUT LPWSPDATA lpWSPData,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
IN WSPUPCALLTABLE UpcallTable,
OUT LPWSPPROC_TABLE lpProcTable)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCDeinstallProvider(
IN LPGUID lpProviderId,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCEnumProtocols(
IN LPINT lpiProtocols,
OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
IN OUT LPDWORD lpdwBufferLength,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCGetProviderPath(
IN LPGUID lpProviderId,
OUT LPWSTR lpszProviderDllPath,
IN OUT LPINT lpProviderDllPathLen,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCInstallProvider(
IN CONST LPGUID lpProviderId,
IN CONST LPWSTR lpszProviderDllPath,
IN CONST LPWSAPROTOCOL_INFOW lpProtocolInfoList,
IN DWORD dwNumberOfEntries,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCEnableNSProvider(
IN LPGUID lpProviderId,
IN BOOL fEnable)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCInstallNameSpace(
IN LPWSTR lpszIdentifier,
IN LPWSTR lpszPathName,
IN DWORD dwNameSpace,
IN DWORD dwVersion,
IN LPGUID lpProviderId)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCUnInstallNameSpace(
IN LPGUID lpProviderId)
{
UNIMPLEMENTED
return 0;
}
INT
EXPORT
WSCWriteProviderOrder(
IN LPDWORD lpwdCatalogEntryId,
IN DWORD dwNumberOfEntries)
{
UNIMPLEMENTED
return 0;
}
/* EOF */

View file

@ -0,0 +1,202 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS WinSock 2 DLL
* FILE: misc/upcall.c
* PURPOSE: Upcall functions
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 01/09-2000 Created
*/
#include <ws2_32.h>
BOOL
WSPAPI
WPUCloseEvent(
IN WSAEVENT hEvent,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return FALSE;
}
INT
WSPAPI
WPUCloseSocketHandle(
IN SOCKET s,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
WSPAPI
WPUCloseThread(
IN LPWSATHREADID lpThreadId,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
WSAEVENT
WSPAPI
WPUCreateEvent(
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return (WSAEVENT)0;
}
SOCKET
WSPAPI
WPUCreateSocketHandle(
IN DWORD dwCatalogEntryId,
IN DWORD dwContext,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return (SOCKET)0;
}
SOCKET
WSPAPI
WPUFDIsSet(
IN SOCKET s,
IN LPFD_SET set)
{
UNIMPLEMENTED
return (SOCKET)0;
}
INT
WSPAPI
WPUGetProviderPath(
IN LPGUID lpProviderId,
OUT LPWSTR lpszProviderDllPath,
IN OUT LPINT lpProviderDllPathLen,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
SOCKET
WSPAPI
WPUModifyIFSHandle(
IN DWORD dwCatalogEntryId,
IN SOCKET ProposedHandle,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return (SOCKET)0;
}
INT
WSPAPI
WPUOpenCurrentThread(
OUT LPWSATHREADID lpThreadId,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
BOOL
WSPAPI
WPUPostMessage(
IN HWND hWnd,
IN UINT Msg,
IN WPARAM wParam,
IN LPARAM lParam)
{
UNIMPLEMENTED
return FALSE;
}
INT
WSPAPI
WPUQueryBlockingCallback(
IN DWORD dwCatalogEntryId,
OUT LPBLOCKINGCALLBACK FAR* lplpfnCallback,
OUT LPDWORD lpdwContext,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
WSPAPI
WPUQuerySocketHandleContext(
IN SOCKET s,
OUT LPDWORD lpContext,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
INT
WSPAPI
WPUQueueApc(
IN LPWSATHREADID lpThreadId,
IN LPWSAUSERAPC lpfnUserApc,
IN DWORD dwContext,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return 0;
}
BOOL
WSPAPI
WPUResetEvent(
IN WSAEVENT hEvent,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return FALSE;
}
BOOL
WSPAPI
WPUSetEvent(
IN WSAEVENT hEvent,
OUT LPINT lpErrno)
{
UNIMPLEMENTED
return FALSE;
}
/* EOF */

View file

@ -0,0 +1,116 @@
; WS2_32.DLL - Windows Sockets 2 DLL
LIBRARY ws2_32.dll
EXPORTS
;WEP
WPUCompleteOverlappedRequest@20
WSAAccept@20
WSAAddressToStringA@20
WSAAddressToStringW@20
WSAAsyncGetHostByAddr@28
WSAAsyncGetHostByName@20
WSAAsyncGetProtoByName@20
WSAAsyncGetProtoByNumber@20
WSAAsyncGetServByName@24
WSAAsyncGetServByPort@24
WSAAsyncSelect@16
WSACancelAsyncRequest@4
WSACancelBlockingCall@0
WSACleanup@0
WSACloseEvent@4
WSAConnect@28
WSACreateEvent@0
WSADuplicateSocketA@12
WSADuplicateSocketW@12
WSAEnumNameSpaceProvidersA@8
WSAEnumNameSpaceProvidersW@8
WSAEnumNetworkEvents@12
WSAEnumProtocolsA@12
WSAEnumProtocolsW@12
WSAEventSelect@12
WSAGetLastError@0
WSAGetOverlappedResult@20
WSAGetQOSByName@12
WSAGetServiceClassInfoA@16
WSAGetServiceClassInfoW@16
WSAGetServiceClassNameByClassIdA@12
WSAGetServiceClassNameByClassIdW@12
WSAHtonl@12
WSAHtons@12
WSAInstallServiceClassA@4
WSAInstallServiceClassW@4
WSAIoctl@36
WSAIsBlocking@0
WSAJoinLeaf@32
WSALookupServiceBeginA@12
WSALookupServiceBeginW@12
WSALookupServiceEnd@4
WSALookupServiceNextA@16
WSALookupServiceNextW@16
WSANtohl@12
WSANtohs@12
WSAProviderConfigChange@12
WSARecv@28
WSARecvDisconnect@8
WSARecvFrom@36
WSARemoveServiceClass@4
WSAResetEvent@4
WSASend@28
WSASendDisconnect@8
WSASendTo@36
WSASetBlockingHook@4
WSASetEvent@4
WSASetLastError@4
WSASetServiceA@12
WSASetServiceW@12
WSASocketA@24
WSASocketW@24
WSAStartup@8
WSAStringToAddressA@20
WSAStringToAddressW@20
WSAUnhookBlockingHook@0
WSAWaitForMultipleEvents@20
;WSApSetPostRoutine
WSCDeinstallProvider@8
WSCEnableNSProvider@8
WSCEnumProtocols@16
WSCGetProviderPath@16
WSCInstallNameSpace@20
WSCInstallProvider@20
WSCUnInstallNameSpace@4
;WSCWriteNameSpaceOrder
WSCWriteProviderOrder@8
__WSAFDIsSet@8
accept@12
bind@12
closesocket@4
connect@12
gethostbyaddr@12
gethostbyname@4
gethostname@8
getpeername@12
getprotobyname@4
getprotobynumber@4
getservbyname@8
getservbyport@8
getsockname@12
getsockopt@20
htonl@4
htons@4
inet_addr@4
inet_ntoa@4
ioctlsocket@12
listen@8
ntohl@4
ntohs@4
recv@16
recvfrom@24
select@20
send@16
sendto@24
setsockopt@20
shutdown@8
socket@12
; EOF

View file

@ -0,0 +1,116 @@
; WS2_32.DLL - Windows Sockets 2 DLL
LIBRARY ws2_32.dll
EXPORTS
;WEP
WPUCompleteOverlappedRequest=WPUCompleteOverlappedRequest@20
WSAAccept=WSAAccept@20
WSAAddressToStringA=WSAAddressToStringA@20
WSAAddressToStringW=WSAAddressToStringW@20
WSAAsyncGetHostByAddr=WSAAsyncGetHostByAddr@28
WSAAsyncGetHostByName=WSAAsyncGetHostByName@20
WSAAsyncGetProtoByName=WSAAsyncGetProtoByName@20
WSAAsyncGetProtoByNumber=WSAAsyncGetProtoByNumber@20
WSAAsyncGetServByName=WSAAsyncGetServByName@24
WSAAsyncGetServByPort=WSAAsyncGetServByPort@24
WSAAsyncSelect=WSAAsyncSelect@16
WSACancelAsyncRequest=WSACancelAsyncRequest@4
WSACancelBlockingCall=WSACancelBlockingCall@0
WSACleanup=WSACleanup@0
WSACloseEvent=WSACloseEvent@4
WSAConnect=WSAConnect@28
WSACreateEvent=WSACreateEvent@0
WSADuplicateSocketA=WSADuplicateSocketA@12
WSADuplicateSocketW=WSADuplicateSocketW@12
WSAEnumNameSpaceProvidersA=WSAEnumNameSpaceProvidersA@8
WSAEnumNameSpaceProvidersW=WSAEnumNameSpaceProvidersW@8
WSAEnumNetworkEvents=WSAEnumNetworkEvents@12
WSAEnumProtocolsA=WSAEnumProtocolsA@12
WSAEnumProtocolsW=WSAEnumProtocolsW@12
WSAEventSelect=WSAEventSelect@12
WSAGetLastError=WSAGetLastError@0
WSAGetOverlappedResult=WSAGetOverlappedResult@20
WSAGetQOSByName=WSAGetQOSByName@12
WSAGetServiceClassInfoA=WSAGetServiceClassInfoA@16
WSAGetServiceClassInfoW=WSAGetServiceClassInfoW@16
WSAGetServiceClassNameByClassIdA=WSAGetServiceClassNameByClassIdA@12
WSAGetServiceClassNameByClassIdW=WSAGetServiceClassNameByClassIdW@12
WSAHtonl=WSAHtonl@12
WSAHtons=WSAHtons@12
WSAInstallServiceClassA=WSAInstallServiceClassA@4
WSAInstallServiceClassW=WSAInstallServiceClassW@4
WSAIoctl=WSAIoctl@36
WSAIsBlocking=WSAIsBlocking@0
WSAJoinLeaf=WSAJoinLeaf@32
WSALookupServiceBeginA=WSALookupServiceBeginA@12
WSALookupServiceBeginW=WSALookupServiceBeginW@12
WSALookupServiceEnd=WSALookupServiceEnd@4
WSALookupServiceNextA=WSALookupServiceNextA@16
WSALookupServiceNextW=WSALookupServiceNextW@16
WSANtohl=WSANtohl@12
WSANtohs=WSANtohs@12
WSAProviderConfigChange=WSAProviderConfigChange@12
WSARecv=WSARecv@28
WSARecvDisconnect=WSARecvDisconnect@8
WSARecvFrom=WSARecvFrom@36
WSARemoveServiceClass=WSARemoveServiceClass@4
WSAResetEvent=WSAResetEvent@4
WSASend=WSASend@28
WSASendDisconnect=WSASendDisconnect@8
WSASendTo=WSASendTo@36
WSASetBlockingHook=WSASetBlockingHook@4
WSASetEvent=WSASetEvent@4
WSASetLastError=WSASetLastError@4
WSASetServiceA=WSASetServiceA@12
WSASetServiceW=WSASetServiceW@12
WSASocketA=WSASocketA@24
WSASocketW=WSASocketW@24
WSAStartup=WSAStartup@8
WSAStringToAddressA=WSAStringToAddressA@20
WSAStringToAddressW=WSAStringToAddressW@20
WSAUnhookBlockingHook=WSAUnhookBlockingHook@0
WSAWaitForMultipleEvents=WSAWaitForMultipleEvents@20
;WSApSetPostRoutine
WSCDeinstallProvider=WSCDeinstallProvider@8
WSCEnableNSProvider=WSCEnableNSProvider@8
WSCEnumProtocols=WSCEnumProtocols@16
WSCGetProviderPath=WSCGetProviderPath@16
WSCInstallNameSpace=WSCInstallNameSpace@20
WSCInstallProvider=WSCInstallProvider@20
WSCUnInstallNameSpace=WSCUnInstallNameSpace@4
;WSCWriteNameSpaceOrder
WSCWriteProviderOrder=WSCWriteProviderOrder@8
__WSAFDIsSet=__WSAFDIsSet@8
accept=accept@12
bind=bind@12
closesocket=closesocket@4
connect=connect@12
gethostbyaddr=gethostbyaddr@12
gethostbyname=gethostbyname@4
gethostname=gethostname@8
getpeername=getpeername@12
getprotobyname=getprotobyname@4
getprotobynumber=getprotobynumber@4
getservbyname=getservbyname@8
getservbyport=getservbyport@8
getsockname=getsockname@12
getsockopt=getsockopt@20
htonl=htonl@4
htons=htons@4
inet_addr=inet_addr@4
inet_ntoa=inet_ntoa@4
ioctlsocket=ioctlsocket@12
listen=listen@8
ntohl=ntohl@4
ntohs=ntohs@4
recv=recv@16
recvfrom=recvfrom@24
select=select@20
send=send@16
sendto=sendto@24
setsockopt=setsockopt@20
shutdown=shutdown@8
socket=socket@12
; EOF

View 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 DLL\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

View 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}}