- Current WIP ws2_32 that was tested on the ML, with some new changes to fully support GetNameInfoW. Tested working with over 30 applications. Uncompilable/unusable in ROS yet, only commiting for progress status.
Full changelog:
Revision: 43 Author: Date: 12:05:25 AM, November 9, 2005 Message: - Update headers with my name, and fix some other typos. ----
Revision: 41 Author: Date: 9:13:43 PM, November 4, 2005 Message: - Cleanup bug list to make it clearer - Implement WSAAddressToSrringA ----
Revision: 40 Author: Date: 9:06:17 PM, November 4, 2005 Message: - Fix a bug in LookupNodeByAddr - Fix some PREfast warnings. ----
Revision: 39 Author: Date: 8:17:00 PM, November 4, 2005 Message: - Get the reverse name correctly. This fixes GetNameInfoW for most usages (tracert works perfectly) ----
Revision: 38 Author: Date: 7:54:56 PM, November 4, 2005 Message: - Implement LookupNodeByAddr for GetNameInfoW. - Fix a bug in GetNameInfoW when passing a parameter to LookupNodeByAddr. - Remove GetNameInfoW from unimplemented bug-list, since it's 99% working. ----
Revision: 37 Author: Date: 4:07:51 AM, November 4, 2005 Message: - Fix a bug in GetNameInfoW: zero the port, not the address. Ping now shows the right numeric address. ----
Revision: 36 Author: Date: 4:05:02 AM, November 4, 2005 Message: - Fix some bugs in previous two patches. ping now shows "0.0.0.0" ----
Revision: 35 Author: Date: 3:54:37 AM, November 4, 2005 Message: - Implemented WSAAddressToStringW. ----
Revision: 34 Author: Date: 3:52:51 AM, November 4, 2005 Message: - Implemented GetNameInfoW (not its helper functions! doesn't work yet!) ----
Revision: 33 Author: Date: 1:46:59 AM, November 4, 2005 Message: - Implement getnameinfo (NOT GetNameInfoW, just the stub calling it) ----
Revision: 32 Author: Date: 9:50:05 PM, November 3, 2005 Message: - Simply getaddrinfo to make use of ansi/unicode duplication functions already present in qshelpr.c - Implement ConvertAddrinfoFromUnicodeToAnsi to cleanly convert ADDRINFOW to ADDRINFOA, also fixes the bug where only the first canonical name was converted. - Remove the disabled code which actually did the work for NSPStartup and WSPStartup. - Update buglist accordingly. ----
Revision: 30 Author: Date: 12:30:29 AM, November 1, 2005 Message: - Add UNIMPLEMENTED wherever it was missing. ----
Revision: 29 Author: Date: 12:27:26 AM, November 1, 2005 Message: - Implement WSANtohl, WSANtohs, WSAHtonl, WSAHtons. Opera now works. - Fix some GetNameInfoW to return correct failure. ----
Revision: 28 Author: Date: 4:25:38 PM, October 30, 2005 Message: - Implement WSAStringToAddressA/W. This makes SmartFTP work with IP lookups, but hostname lookup still fail? ----
Revision: 27 Author: Date: 1:23:52 PM, October 30, 2005 Message: - Fix regressions/bugs in last patch: * Fix Query validation checks * Fix Query signature not being set anywhere - Fix DLL_THREAD_DETACH leaking into DLL_PROCESS_DETACH due to missing break; statement. ----
Revision: 26 Author: Date: 1:35:21 AM, October 30, 2005 Message: - Major refactoring of NS Query Object: * Remove active calls field and operations * Add RefCount member and provide referencing/dereferencing mechanisms * Implement WsNqValidateAndReference for validation and referencing * Add preliminary special support for providers supporting NSPIoctl * Rewrite most of WsNqLookupServiceNext to work with more optimized semantics and NSPIoctl support. * Fixed some potential locking/race issues.
- UNTESTED! ----
Revision: 25 Author: Date: 11:03:00 PM, October 29, 2005 Message: - Fix WsRasLoadHelperDll: * Do proper check for initialization * Actually save the loaded DLL handle after loading the DLL, instead of failing - Make the NS Query object initalizer set TryAgain to TRUE so that RAS Auto-Dial will function normally. ----
Revision: 24 Author: Date: 10:20:46 PM, October 29, 2005 Message: - Fix regression in getxyent which made all requests get overwritten and fail. - Re-export getaddrinfo/getnameinfo, since many XP apps have them hard-coded and removing them actually causes more problems. ----
Revision: 23 Author: Date: 10:08:12 PM, October 29, 2005 Message: - Don't enter the startup lock in a loop. Fixes regressions with all apps. - Don't export getnameinfo/getaddrinfo, since they contain bugs: this way, the apps will use their internal replacement code. ----
Revision: 22 Author: Date: 8:38:40 PM, October 29, 2005 Message: - Major fixes in getxbyxx.c: * Allocate bigger buffer in case our estimate RNR_BUFFER_SIZE is not big enough. * Update and fix GUID names and usage * Rename some variables and reformat a bit * Add RAS Auto-dial call in gethostbyname * Use WsSockHeap instead of LocalAlloc/Free * Update gethostbyname to try the call again in case the first time failed, but this time without supplying a name. ----
Revision: 21 Author: Date: 8:11:32 PM, October 29, 2005 Message: - Enable full debugging for now - Fix typo in WSNoteSuccessfulHostentLookup - Support RAS-Autodial in gethostbyname ----
Revision: 19 Author: Date: 5:25:18 PM, October 29, 2005 Message: - Support RAS-Autodial restart in connect() ----
Revision: 18 Author: Date: 3:15:58 PM, October 29, 2005 Message: - Implement CopyQuerySetW helper to create a copy of a Query Set by using the existing convesion functions. - Actually implement caching in LookupServiceBegin in case of RAS Auto-dial - Simplify LookupServiceBegin to use a goto error instead of repetitive errorcode checks. ----
Revision: 17 Author: Date: 3:06:22 PM, October 29, 2005 Message: - Update NSQUERY to support restarting. - Add RAS Auto-dial call to LookupServiceNext to support restart. ----
Revision: 16 Author: Date: 4:08:28 AM, October 29, 2005 Message: - Modularize the async/startup locks better by having their init functions into their own modules. - Use startup lock/unlock macros just like for the other locks. ----
Revision: 15 Author: Date: 4:01:20 AM, October 29, 2005 Message: - Get RAS Autodial function helper pointers - Call init/uninit during dllmain ----
Revision: 14 Author: Date: 1:45:36 PM, October 28, 2005 Message: - Implement RAS Autodial Helper stubs. ----
Revision: 13 Author: Date: 1:33:07 PM, October 28, 2005 Message: - Add RAS Autodial module and basic support functions. ----
Revision: 12 Author: Date: 1:11:38 PM, October 28, 2005 Message: - Implement IPv4 and IPv6 Address->String helprs - Have gethostbyaddr detect the address type and choose the right conversion function. - Fix gethostbyaddr so that it fails if no address pointer was given or if the address type is unsupported. - Fix bug list accordingly. ----
Revision: 11 Author: Date: 3:55:44 AM, October 28, 2005 Message: - Implement MapUnicodeProtocolInfoToAnsi - Make WSADuplicateSocketA use it. - Fix getsockopt so that the SO_PROTOCOL_INFOA can work by having it use MapUnicodeProtocolInfoToAnsi as well in order to convert the data back. - Update bug list accordingly. ----
Revision: 10 Author: Date: 3:45:09 AM, October 28, 2005 Message: - Enhance WsTcGetEntryFromTriplet to allow for resuming from a specific ID - Use this enhancement to add support for a special failure path in WSASocketW - Update buglist accordingly. ----
Revision: 9 Author: Date: 3:36:53 AM, October 28, 2005 Message: - lResult (old naming from old code) -> ErrorCode (new naming in rewrite) - Update one more registry field in case it's missing, and update bug list accordingly. ----
Revision: 8 Author: Date: 3:28:35 AM, October 28, 2005 Message: - Update buglist - Add support for writing catalog data if it's not found. ----
Revision: 7 Author: Date: 12:49:08 AM, October 28, 2005 Message: - Fix top-level headers ----
Revision: 6 Author: Date: 11:36:39 PM, October 27, 2005 Message: - Implement WsSetupCatalogProtection ----
Revision: 5 Author: Date: 10:57:30 PM, October 27, 2005 Message: - Add more error case handling for refreshing catalog data from registry. ----
Revision: 4 Author: Date: 9:38:39 PM, October 27, 2005 Message: - Add more debug prints to newly implemented functions. ----
Revision: 3 Author: Date: 9:11:38 PM, October 27, 2005 Message: - Only free addresses from heap if they've been allocated. Fixes non-existent heap freeing error. ----
Revision: 2 Author: Date: 9:08:36 PM, October 27, 2005 Message: - Allocate space for a BLOB, not a GUID. Fixes heap corruption. ----
Revision: 1 Author: Administrator Date: 5:53:12 PM, October 27, 2005 Message: Initial import ---- Added: branches/alex-network-branch/reactos/lib/ws2_32/inc/ Added: branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32.h Added: branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32p.h Deleted: branches/alex-network-branch/reactos/lib/ws2_32/include/ Deleted: branches/alex-network-branch/reactos/lib/ws2_32/misc/ Added: branches/alex-network-branch/reactos/lib/ws2_32/src/ Added: branches/alex-network-branch/reactos/lib/ws2_32/src/addrconv.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/addrinfo.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/async.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/bhook.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dcatalog.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dcatitem.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dllmain.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dprocess.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dprovide.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dsocket.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dthread.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/dupsock.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/enumprot.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/event.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/getproto.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/getxbyxx.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/ioctl.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/nscatalo.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/nscatent.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/nspinstl.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/nsprovid.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/nsquery.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/qos.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/qshelpr.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/rasdial.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/recv.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/rnr.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/scihlpr.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/select.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/send.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/sockctrl.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/socklife.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/spinstal.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/sputil.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/startup.c Added: branches/alex-network-branch/reactos/lib/ws2_32/src/wsautil.c Deleted: branches/alex-network-branch/reactos/lib/ws2_32/tests/ Modified: branches/alex-network-branch/reactos/lib/ws2_32/ws2_32.def Modified: branches/alex-network-branch/reactos/lib/ws2_32/ws2_32.rc Deleted: branches/alex-network-branch/reactos/lib/ws2_32/ws2_32.xml Deleted: branches/alex-network-branch/reactos/lib/ws2_32/ws2_32_specs _____
Added: branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32.h --- branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32.h 2005-11-09 05:06:30 UTC (rev 19090) +++ branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32.h 2005-11-09 05:14:12 UTC (rev 19091) @@ -0,0 +1,43 @@
+/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS WinSock 2.2 Library + * FILE: lib/ws2_32.h + * PURPOSE: WinSock 2.2 Main Header + */ + +#ifndef __WS2_32_H +#define __WS2_32_H + +/* Definitions for NDK Usage */ +#define WIN32_NO_STATUS +#define _WIN32_WINNT 0x502 +#define NTOS_MODE_USER +#define _CRT_SECURE_NO_DEPRECATE +#define WINSOCK_API_LINKAGE +#define DBG 1 + +/* C Header */ +#include <stdio.h> + +/* PSDK and NDK Headers */ +#include <winsock2.h> +#include <Ws2tcpip.h> +#include <Ws2spi.h> +#include <ndk/umtypes.h> +#include <ndk/rtlfuncs.h> + +/* Shared NSP Headers */ +#include <nsp_dns.h> + +/* Winsock Helper Header */ +#include <ws2help.h> + +/* Missing definitions */ +#define SO_OPENTYPE 0x7008 +#define SO_SYNCHRONOUS_NONALERT 0x20 + +/* Internal headers */ +#include "ws2_32p.h" + +#endif + _____
Added: branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32p.h --- branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32p.h 2005-11-09 05:06:30 UTC (rev 19090) +++ branches/alex-network-branch/reactos/lib/ws2_32/inc/ws2_32p.h 2005-11-09 05:14:12 UTC (rev 19091) @@ -0,0 +1,891 @@
+/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS WinSock 2.2 Library + * FILE: lib/ws2_32.h + * PURPOSE: WinSock 2.2 Main Header + */ + +#ifndef __WS2_32P_H +#define __WS2_32P_H + +#define WINSOCK_ROOT "System\CurrentControlSet\Services\WinSock2\Parameters" +#define MAXALIASES 35 + +typedef enum _WSASYNCOPS +{ + WsAsyncGetHostByAddr, + WsAsyncGetHostByName, + WsAsyncGetProtoByName, + WsAsyncGetProtoByNumber, + WsAsyncGetServByName, + WsAsyncGetServByPort, + WsAsyncTerminate, +} WSASYNCOPS; + +typedef struct _WSASYNCBLOCK +{ + LIST_ENTRY AsyncQueue; + HANDLE TaskHandle; + WSASYNCOPS Operation; + union + { + struct + { + HWND hWnd; + UINT wMsg; + PCHAR ByWhat; + DWORD Length; + DWORD Type; + PVOID Buffer; + DWORD BufferLength; + } GetHost; + struct + { + HWND hWnd; + UINT wMsg; + PCHAR ByWhat; + DWORD Length; + PVOID Buffer; + DWORD BufferLength; + } GetProto; + struct + { + HWND hWnd; + UINT wMsg; + PCHAR ByWhat; + DWORD Length; + PCHAR Protocol; + PVOID Buffer; + DWORD BufferLength; + } GetServ; + }; +} WSASYNCBLOCK, *PWSASYNCBLOCK; + +typedef struct _WSASYNCCONTEXT +{ + LIST_ENTRY AsyncQueue; + HANDLE AsyncEvent; + LIST_ENTRY SocketList; +} WSASYNCCONTEXT, *PWSASYNCCONTEXT; + +typedef struct _WSPROTO_BUFFER +{ + PROTOENT Protoent; + PCHAR Aliases[MAXALIASES]; + CHAR LineBuffer[512]; +} WSPROTO_BUFFER, *PWSPROTO_BUFFER; + +typedef struct _TPROVIDER +{ + LONG RefCount; + WSPPROC_TABLE; + HINSTANCE DllHandle; +} TPROVIDER, *PTPROVIDER; + +typedef struct _TCATALOG_ENTRY +{ + LIST_ENTRY CatalogLink; + LONG RefCount; + PTPROVIDER Provider; + CHAR DllPath[MAX_PATH]; + WSAPROTOCOL_INFOW ProtocolInfo; +} TCATALOG_ENTRY, *PTCATALOG_ENTRY; + +typedef struct _TCATALOG +{ + LIST_ENTRY ProtocolList; + DWORD ItemCount; + DWORD UniqueId; + DWORD NextId; + HKEY CatalogKey; + RTL_CRITICAL_SECTION Lock; + BOOLEAN Initialized; +} TCATALOG, *PTCATALOG; + +typedef struct _NSPROVIDER +{ + LONG RefCount; + DWORD NamespaceId; + HINSTANCE DllHandle; + GUID ProviderId; + NSP_ROUTINE; +} NSPROVIDER, *PNS_PROVIDER; + +typedef struct _NSQUERY_PROVIDER +{ + LIST_ENTRY QueryLink; + PNS_PROVIDER Provider; + HANDLE LookupHandle; +} NSQUERY_PROVIDER, *PNSQUERY_PROVIDER; + +typedef struct _NSCATALOG_ENTRY +{ + LIST_ENTRY CatalogLink; + LONG RefCount; + PNS_PROVIDER Provider; + LONG AddressFamily; + DWORD NamespaceId; + DWORD Version; + LPWSTR ProviderName; + BOOLEAN Enabled; + BOOLEAN StoresServiceClassInfo; + GUID ProviderId; + WCHAR DllPath[MAX_PATH]; +} NSCATALOG_ENTRY, *PNSCATALOG_ENTRY; + +typedef struct _NSCATALOG +{ + LIST_ENTRY CatalogList; + DWORD ItemCount; + DWORD UniqueId; + HKEY CatalogKey; + RTL_CRITICAL_SECTION Lock; +} NSCATALOG, *PNSCATALOG; + +typedef struct _NSQUERY +{ + DWORD Signature; + LONG RefCount; + BOOLEAN ShuttingDown; + LIST_ENTRY ProviderList; + PNSQUERY_PROVIDER ActiveProvider; + RTL_CRITICAL_SECTION Lock; + PNSQUERY_PROVIDER CurrentProvider; + LPWSAQUERYSETW QuerySet; + DWORD ControlFlags; + PNSCATALOG Catalog; + DWORD TryAgain; +} NSQUERY, *PNSQUERY; + +typedef struct _WSPROCESS +{ + LONG RefCount; + HANDLE ApcHelper; + HANDLE HandleHelper; + HANDLE NotificationHelper; + PTCATALOG ProtocolCatalog; + PNSCATALOG NamespaceCatalog; + HANDLE ProtocolCatalogEvent; + HANDLE NamespaceCatalogEvent; + DWORD Version; + BOOLEAN LockReady; + RTL_CRITICAL_SECTION ThreadLock; +} WSPROCESS, *PWSPROCESS; + +typedef struct _WSTHREAD +{ + PWSPROCESS Process; + WSATHREADID WahThreadId; + HANDLE AsyncHelper; + LPWSPCANCELBLOCKINGCALL CancelBlockingCall; + LPBLOCKINGCALLBACK BlockingCallback; + FARPROC BlockingHook; + BOOLEAN Blocking; + BOOLEAN Cancelled; + CHAR Buffer[32]; + PCHAR Hostent; + PCHAR Servent; + DWORD HostentSize; + DWORD ServentSize; + DWORD OpenType; + PVOID ProtocolInfo; +} WSTHREAD, *PWSTHREAD; + +typedef struct _WSSOCKET +{ + LONG RefCount; + HANDLE Handle; + PWSPROCESS Process; + PTPROVIDER Provider; + PTCATALOG_ENTRY CatalogEntry; + BOOLEAN Overlapped; + BOOLEAN ApiSocket; + BOOLEAN IsProvider; +} WSSOCKET, *PWSSOCKET; + +typedef struct _ENUM_CONTEXT +{ + LPWSAQUERYSETW lpqsRestrictions; + INT ErrorCode; + PNSQUERY NsQuery; + PNSCATALOG Catalog; +} ENUM_CONTEXT, *PENUM_CONTEXT; + +typedef struct _PROTOCOL_ENUM_CONTEXT +{ + LPINT Protocols; + LPWSAPROTOCOL_INFOW ProtocolBuffer; + DWORD BufferLength; + DWORD BufferUsed; + DWORD Count; + INT ErrorCode; +} PROTOCOL_ENUM_CONTEXT, *PPROTOCOL_ENUM_CONTEXT; + +typedef struct _WS_BUFFER +{ + ULONG_PTR Position; + SIZE_T MaxSize; + SIZE_T BytesUsed; +} WS_BUFFER, *PWS_BUFFER; + +typedef BOOL +(WINAPI *PNSCATALOG_ENUMERATE_PROC)( + IN PVOID Context, + IN PNSCATALOG_ENTRY Entry +); + +typedef BOOL +(WINAPI *PTCATALOG_ENUMERATE_PROC)( + IN PVOID Context, + IN PTCATALOG_ENTRY Entry +); + +typedef BOOL +(WINAPI *PWS_SOCK_POST_ROUTINE)( + IN HWND hWnd, + IN UINT wMsg, + IN WPARAM wParam, + IN LPARAM lParam +); + +extern HINSTANCE WsDllHandle; +extern HANDLE WsSockHeap; +extern PWAH_HANDLE_TABLE WsSockHandleTable; +extern DWORD TlsIndex; +extern PWSPROCESS CurrentWsProcess; +extern DWORD GlobalTlsIndex; +extern BOOLEAN WsAsyncThreadInitialized; +extern PWS_SOCK_POST_ROUTINE WsSockPostRoutine; + +LPSTR +WSAAPI +AnsiDupFromUnicode(IN LPWSTR UnicodeString); + +LPWSTR +WSAAPI +UnicodeDupFromAnsi(IN LPSTR AnsiString); + +VOID +WSAAPI +WsRasInitializeAutodial(VOID); + +VOID +WSAAPI +WsRasUninitializeAutodial(VOID); + +BOOL +WSAAPI +WSAttemptAutodialName(IN CONST LPWSAQUERYSETW lpqsRestrictions); + +BOOL +WSAAPI +WSAttemptAutodialAddr( + IN CONST SOCKADDR FAR *Name, + IN INT NameLength +); + +VOID +WSAAPI +WSNoteSuccessfulHostentLookup( + IN CONST CHAR FAR *Name, + IN CONST ULONG Address +); + +INT +WSAAPI +MapUnicodeProtocolInfoToAnsi(IN LPWSAPROTOCOL_INFOW UnicodeInfo, + OUT LPWSAPROTOCOL_INFOA AnsiInfo); + +INT +WSAAPI +MapAnsiQuerySetToUnicode(IN LPWSAQUERYSETA AnsiSet, + IN OUT PSIZE_T SetSize, + OUT LPWSAQUERYSETW UnicodeSet); + +INT +WSAAPI +MapUnicodeQuerySetToAnsi(OUT LPWSAQUERYSETW UnicodeSet, + IN OUT PSIZE_T SetSize, + IN LPWSAQUERYSETA AnsiSet); + +INT +WSAAPI +CopyQuerySetW(IN LPWSAQUERYSETW UnicodeSet, + OUT LPWSAQUERYSETW *UnicodeCopy); + +INT +WSAAPI +WsSlowProlog(VOID); + +INT +WSAAPI +WsSlowPrologTid(OUT LPWSATHREADID *ThreadId); + +PWSSOCKET +WSAAPI +WsSockGetSocket(IN SOCKET Handle); + +INT +WSAAPI +WsApiProlog(OUT PWSPROCESS *Process, + OUT PWSTHREAD *Thread); + +HKEY +WSAAPI +WsOpenRegistryRoot(VOID); + +VOID +WSAAPI +WsCreateStartupSynchronization(VOID); + +VOID +WSAAPI +WsDestroyStartupSynchronization(VOID); + +INT +WSAAPI +WsSetupCatalogProtection(IN HKEY CatalogKey, + IN HANDLE CatalogEvent, + OUT LPDWORD UniqueId); + +BOOL +WSAAPI +WsCheckCatalogState(IN HANDLE Event); + +PNSCATALOG +WSAAPI +WsNcAllocate(VOID); + +VOID +WSAAPI +WsNcDelete(IN PNSCATALOG Catalog); + +INT +WSAAPI +WsNcInitializeFromRegistry(IN PNSCATALOG Catalog, + IN HKEY ParentKey, + IN HANDLE CatalogEvent); + +INT +WSAAPI +WsNcRefreshFromRegistry(IN PNSCATALOG Catalog, + IN HANDLE CatalogEvent); + +VOID +WSAAPI +WsNcUpdateNamespaceList(IN PNSCATALOG Catalog, + IN PLIST_ENTRY List); + +BOOL +WSAAPI +WsNcMatchProtocols(IN DWORD NameSpace, + IN LONG AddressFamily, + IN LPWSAQUERYSETW QuerySet); + +INT +WSAAPI +WsNcLoadProvider(IN PNSCATALOG Catalog, + IN PNSCATALOG_ENTRY CatalogEntry); + +INT +WSAAPI +WsNcGetCatalogFromProviderId(IN PNSCATALOG Catalog, + IN LPGUID ProviderId, + OUT PNSCATALOG_ENTRY *CatalogEntry); + +VOID +WSAAPI +WsNcEnumerateCatalogItems(IN PNSCATALOG Catalog, + IN PNSCATALOG_ENUMERATE_PROC Callback, + IN PVOID Context); + +INT +WSAAPI +WsNcGetServiceClassInfo(IN PNSCATALOG Catalog, + IN OUT LPDWORD BugSize, + IN OUT LPWSASERVICECLASSINFOW lpServiceClassInfo); + +PNSCATALOG_ENTRY +WSAAPI +WsNcEntryAllocate(VOID); + +INT +WSAAPI +WsNcEntryInitializeFromRegistry(IN PNSCATALOG_ENTRY CatalogEntry, + IN HKEY ParentKey, + IN ULONG UniqueId); + +VOID +WSAAPI +WsNcEntryDereference(IN PNSCATALOG_ENTRY CatalogEntry); + +VOID +WSAAPI +WsNcEntrySetProvider(IN PNSCATALOG_ENTRY Entry, + IN PNS_PROVIDER Provider); + +DWORD +WSAAPI +WsNqAddProvider( + IN PNSQUERY NsQuery, + IN PNS_PROVIDER Provider +); + +PNSQUERY +WSAAPI +WsNqAllocate(VOID); + +BOOL +WSAAPI +WsNqBeginEnumerationProc( + PVOID Context, + PNSCATALOG_ENTRY CatalogEntry +); + +VOID +WSAAPI +WsNqDelete(IN PNSQUERY NsQuery); + +DWORD +WSAAPI +WsNqInitialize(IN PNSQUERY NsQuery); + +DWORD +WSAAPI +WsNqLookupServiceBegin( + IN PNSQUERY NsQuery, + IN LPWSAQUERYSETW QuerySet, + IN DWORD ControlFlags, + IN PNSCATALOG Catalog +); + +DWORD +WSAAPI +WsNqLookupServiceEnd(IN PNSQUERY NsQuery); + +DWORD +WSAAPI +WsNqLookupServiceNext( + PNSQUERY NsQuery, + DWORD, + PDWORD, + OUT LPWSAQUERYSETW QuerySet +); + +PNSQUERY_PROVIDER +WSAAPI +WsNqNextProvider( + PNSQUERY NsQuery, + IN PNSQUERY_PROVIDER Provider +); + +VOID +WSAAPI +WsNqDereference(IN PNSQUERY Query); + +BOOL +WSAAPI +WsNqValidateAndReference(IN PNSQUERY Query); + +PNSQUERY_PROVIDER +WSAAPI +WsNqPreviousProvider(IN PNSQUERY Query, + IN PNSQUERY_PROVIDER Provider); + +DWORD +WSAAPI +WsNqProvLookupServiceNext( + IN PNSQUERY_PROVIDER QueryProvider, + DWORD, + PDWORD , + LPWSAQUERYSETW QuerySet +); + +DWORD +WSAAPI +WsNqProvLookupServiceEnd(IN PNSQUERY_PROVIDER QueryProvider); + +DWORD +WSAAPI +WsNqProvInitialize( + IN PNSQUERY_PROVIDER QueryProvider, + IN PNS_PROVIDER Provider +); + +PNSQUERY_PROVIDER +WSAAPI +WsNqProvAllocate(VOID); + +VOID +WSAAPI +WsNqProvDelete(IN PNSQUERY_PROVIDER QueryProvider); + +DWORD +WSAAPI +WsNqProvLookupServiceBegin( + IN PNSQUERY_PROVIDER QueryProvider, + IN LPWSAQUERYSETW QuerySet, + IN LPWSASERVICECLASSINFOW ServiceClassInfo, + IN DWORD +); + +VOID +WSAAPI +WsNpDelete(IN PNS_PROVIDER Provider); + +DWORD +WSAAPI +WsNpLookupServiceBegin ( + IN PNS_PROVIDER Provider, + IN LPWSAQUERYSETW Restrictions, + struct _WSAServiceClassInfoW *, + IN DWORD ControlFlags, + OUT PHANDLE LookupHandle +); + +DWORD +WSAAPI +WsNpNSPCleanup(IN PNS_PROVIDER Provider); + +DWORD +WSAAPI +WsNpLookupServiceEnd( + IN PNS_PROVIDER Provider, + IN HANDLE LookupHandle +); + +DWORD +WSAAPI +WsNpInitialize( + IN PNS_PROVIDER Provider, + IN LPWSTR DllPath, + IN LPGUID ProviderGuid +); + +PNS_PROVIDER +WSAAPI +WsNpAllocate(VOID); + +VOID +WSAAPI +WsNpDereference(IN PNS_PROVIDER Provider); + +DWORD +WSAAPI +WsNpLookupServiceNext( + IN PNS_PROVIDER Provider, + IN HANDLE LookupHandle, + IN DWORD ControlFlags, + OUT PDWORD BufferLength, + OUT LPWSAQUERYSETW Results +); + +VOID +WSAAPI +WsTpDelete(IN PTPROVIDER Provider); + +DWORD +WSAAPI +WsTpWSPCleanup( + IN PTPROVIDER Provider, + int * +); + +PTPROVIDER +WSAAPI +WsTpAllocate(VOID); + +DWORD +WSAAPI +WsTpInitialize( + IN PTPROVIDER Provider, + IN LPSTR DllName, + LPWSAPROTOCOL_INFOW ProtocolInfo +); + +VOID +WSAAPI +WsTpDereference(IN PTPROVIDER Provider); + +VOID +WSAAPI +WsThreadDelete(IN PWSTHREAD Thread); + +VOID +WSAAPI +WsThreadDestroyCurrentThread(VOID); + +DWORD +WSAAPI +WsThreadCreate( + IN PWSPROCESS Process, + IN PWSTHREAD *Thread +); + +DWORD +WSAAPI +WsThreadGetCurrentThread( + IN PWSPROCESS Process, + IN PWSTHREAD *Thread +); + +LPWSATHREADID +WSAAPI +WsThreadGetThreadId(IN PWSPROCESS Process); + +DWORD +WSAAPI +WsThreadStartup(VOID); + +VOID +WSAAPI +WsThreadCleanup(VOID); + +DWORD +WSAAPI +WsThreadCancelBlockingCall(IN PWSTHREAD Thread); + +DWORD +WSAAPI +WsThreadUnhookBlockingHook(IN PWSTHREAD Thread); + +FARPROC +WSAAPI +WsThreadSetBlockingHook(IN PWSTHREAD Thread, + IN FARPROC BlockingHook); + + +PHOSTENT +WSAAPI +WsThreadBlobToHostent(IN PWSTHREAD Thread, + IN LPBLOB Blob); + +PSERVENT +WSAAPI +WsThreadBlobToServent(IN PWSTHREAD Thread, + IN LPBLOB Blob); + +PWSPROTO_BUFFER +WSAAPI +WsThreadGetProtoBuffer(IN PWSTHREAD Thread); + +PWSTHREAD +WSAAPI +WsThreadAllocate(VOID); + +DWORD +WSAAPI +WsThreadDefaultBlockingHook(VOID); + +DWORD +WSAAPI +WsThreadInitialize( + IN PWSTHREAD Thread, + IN PWSPROCESS Process +); + +DWORD +WSAAPI +WsTcFindIfsProviderForSocket(IN PTCATALOG TCatalog, SOCKET Socket); + +DWORD +WSAAPI +WsTcEntryInitializeFromRegistry(IN PTCATALOG_ENTRY CatalogEntry, IN HKEY, unsigned long); + +DWORD +WSAAPI +WsTcGetEntryFromAf(IN PTCATALOG TCatalog, IN INT AddressFamily, IN PTCATALOG_ENTRY *CatalogEntry); + +PTCATALOG_ENTRY +WSAAPI +WsTcEntryAllocate(VOID); + +VOID +WSAAPI +WsTcEntrySetProvider(IN PTCATALOG_ENTRY CatalogEntry, IN PTPROVIDER Provider); + +DWORD +WSAAPI +WsTcRefreshFromRegistry(IN PTCATALOG TCatalog, PVOID); + +BOOL +WSAAPI +WsTcOpen(IN PTCATALOG TCatalog, IN HKEY); + +PTPROVIDER +WSAAPI +WsTcFindProvider(IN PTCATALOG TCatalog, IN LPGUID ProviderId); + +VOID +WSAAPI +WsTcEnumerateCatalogItems(IN PTCATALOG Catalog, + IN PTCATALOG_ENUMERATE_PROC Callback, + IN PVOID Context); + +VOID +WSAAPI +WsTcEntryDereference(IN PTCATALOG_ENTRY CatalogEntry); + +PTCATALOG +WSAAPI +WsTcAllocate(VOID); + +VOID +WSAAPI +WsTcDelete(IN PTCATALOG Catalog); + +DWORD +WSAAPI +WsTcGetEntryFromTriplet(IN PTCATALOG TCatalog, IN INT AddressFamily, IN INT SocketType, IN INT Protocol, IN DWORD StartId, IN PTCATALOG_ENTRY *CatalogEntry); + +VOID +WSAAPI +WsTcUpdateProtocolList(IN PTCATALOG TCatalog, PLIST_ENTRY ProtocolList); + +VOID +WSAAPI +WsTcEntryDelete(IN PTCATALOG_ENTRY CatalogEntry); + +DWORD +WSAAPI +WsTcGetEntryFromCatalogEntryId(IN PTCATALOG TCatalog, IN DWORD CatalogEntryId, IN PTCATALOG_ENTRY *CatalogEntry); + +DWORD +WSAAPI +WsTcLoadProvider(IN PTCATALOG TCatalog, IN PTCATALOG_ENTRY CatalogEntry); + +DWORD +WSAAPI +WsTcInitializeFromRegistry(IN PTCATALOG TCatalog, HKEY, PVOID); + +INT +WSAAPI +WsSockStartup(VOID); + +VOID +WSAAPI +WsSockCleanup(VOID); + +BOOL +WSAAPI +WsSockDeleteSockets(IN LPVOID Context, + IN PWAH_HANDLE Handle); + +VOID +WSAAPI +WsSockDereference(IN PWSSOCKET Socket); + +PWSSOCKET +WSAAPI +WsSockAllocate(VOID); + +INT +WSAAPI +WsSockInitialize(IN PWSSOCKET Socket, + IN PTCATALOG_ENTRY CatalogEntry); + +INT +WSAAPI +WsSockAssociateHandle(IN PWSSOCKET Socket, + IN SOCKET Handle, + IN BOOLEAN IsProvider); + +INT +WSAAPI +WsSockDisassociateHandle(IN PWSSOCKET Socket); + +INT +WSAAPI +WsSockAddApiReference(IN SOCKET Handle); + +PTCATALOG +WSAAPI +WsProcGetTCatalog(IN PWSPROCESS Process); + +BOOL +WSAAPI +WsProcDetachSocket(IN PWSPROCESS Process, + IN PWAH_HANDLE Handle); + +INT +WSAAPI +WsProcGetAsyncHelper(IN PWSPROCESS Process, + OUT PHANDLE Handle); + +VOID +WSAAPI +WsProcDelete(IN PWSPROCESS Process); + +INT +WSAAPI +WsProcStartup(VOID); + +PNSCATALOG +WSAAPI +WsProcGetNsCatalog(IN PWSPROCESS Process); + +VOID +WSAAPI +WsProcSetVersion(IN PWSPROCESS Process, + IN WORD VersionRequested); + +VOID +WSAAPI +WsAsyncQueueRequest(IN PWSASYNCBLOCK AsyncBlock); + +BOOL +WSAAPI +WsAsyncCheckAndInitThread(VOID); + +INT +WSAAPI +WsAsyncCancelRequest(IN HANDLE TaskHandle); + +PWSASYNCBLOCK +WSAAPI +WsAsyncAllocateBlock(IN SIZE_T ExtraLength); + +VOID +WSAAPI +WsAsyncTerminateThread(VOID); + +VOID +WSAAPI +WsAsyncGlobalTerminate(VOID); + +VOID +WSAAPI +WsAsyncGlobalInitialize(VOID); + +PWSPROCESS +STATIC __inline +WsGetProcess() +{ + return CurrentWsProcess; +} + +DWORD +STATIC __inline +WsQuickProlog() +{ + /* Try to see if we're initialized. If not, do the full prolog */ + return WsGetProcess() ? ERROR_SUCCESS : WsSlowProlog(); +} + +DWORD +STATIC __inline +WsQuickPrologTid(LPWSATHREADID *Tid) +{ + /* Try to see if we're initialized. If not, do the full prolog */ + if ((WsGetProcess()) && (*Tid = WsThreadGetThreadId(WsGetProcess()))) + { + return ERROR_SUCCESS; + } + else + { + return WsSlowPrologTid(Tid); + } +} + +#endif + _____
Added: branches/alex-network-branch/reactos/lib/ws2_32/src/addrconv.c --- branches/alex-network-branch/reactos/lib/ws2_32/src/addrconv.c 2005-11-09 05:06:30 UTC (rev 19090) +++ branches/alex-network-branch/reactos/lib/ws2_32/src/addrconv.c 2005-11-09 05:14:12 UTC (rev 19091) @@ -0,0 +1,491 @@
+/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS WinSock 2 API + * FILE: addrconv.c + * PURPOSE: Address and Port Conversion Support + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + */ + +/* INCLUDES ******************************************************************/ +#include "ws2_32.h" + +//#define NDEBUG +#include <debug.h> + +/* DEFINES *******************************************************************/ + +#ifndef BE + +/* DWORD network to host byte order conversion for little endian machines */ +#define DN2H(dw) \ + ((((dw) & 0xFF000000L) >> 24) | \ + (((dw) & 0x00FF0000L) >> 8) | \ + (((dw) & 0x0000FF00L) << 8) | \ + (((dw) & 0x000000FFL) << 24)) + +/* DWORD host to network byte order conversion for little endian machines */ +#define DH2N(dw) \ + ((((dw) & 0xFF000000L) >> 24) | \ + (((dw) & 0x00FF0000L) >> 8) | \ + (((dw) & 0x0000FF00L) << 8) | \ + (((dw) & 0x000000FFL) << 24)) + +/* WORD network to host order conversion for little endian machines */ +#define WN2H(w) \ + ((((w) & 0xFF00) >> 8) | \ + (((w) & 0x00FF) << 8)) + +/* WORD host to network byte order conversion for little endian machines */ +#define WH2N(w) \ + ((((w) & 0xFF00) >> 8) | \ + (((w) & 0x00FF) << 8)) + +#else /* BE */ + +/* DWORD network to host byte order conversion for big endian machines */ +#define DN2H(dw) \ + (dw) + +/* DWORD host to network byte order conversion big endian machines */ +#define DH2N(dw) \ + (dw) [truncated at 1000 lines; 13801 more skipped]