diff options
Diffstat (limited to '')
-rw-r--r-- | private/mvdm/wow32/winsockp.h | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/private/mvdm/wow32/winsockp.h b/private/mvdm/wow32/winsockp.h new file mode 100644 index 000000000..187a7c78f --- /dev/null +++ b/private/mvdm/wow32/winsockp.h @@ -0,0 +1,195 @@ +/*++ + +Copyright (c) 1992 Microsoft Corporation + +Module Name: + + Winsockp.h + +Abstract: + + Private header file for WOW winsock support. + +Author: + + David Treadwell (davidtr) 02-Oct-1992 + +Revision History: + +--*/ + +#include "wow32.h" +#include <winsock.h> +#include <wowwsock.h> +#include "wcall16.h" +#include "wsocktbl.h" + +typedef struct _WINSOCK_THREAD_DATA { + VPVOID vIpAddress; + VPHOSTENT16 vHostent; + VPSERVENT16 vServent; + VPPROTOENT16 vProtoent; + VPPROC vBlockingHook; + DWORD ThreadSerialNumber; + DWORD ThreadStartupCount; + WORD ThreadVersion; +} WINSOCK_THREAD_DATA, *PWINSOCK_THREAD_DATA; + +extern DWORD WWS32TlsSlot; +extern RTL_CRITICAL_SECTION WWS32CriticalSection; +extern LIST_ENTRY WWS32AsyncContextBlockListHead; +extern WORD WWS32AsyncTaskHandleCounter; +extern LIST_ENTRY WWS32SocketHandleListHead; +extern WORD WWS32SocketHandleCounter; +extern BOOL WWS32SocketHandleCounterWrapped; +extern DWORD WWS32ThreadSerialNumberCounter; + +#define WWS32IpAddress \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->IpAddress ) +#define WWS32vIpAddress \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->vIpAddress ) +#define WWS32vHostent \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->vHostent ) +#define WWS32vServent \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->vServent ) +#define WWS32vProtoent \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->vProtoent ) +#define WWS32vBlockingHook \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->vBlockingHook ) +#define WWS32ThreadSerialNumber \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->ThreadSerialNumber ) +#define WWS32ThreadStartupCount \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->ThreadStartupCount ) +#define WWS32ThreadVersion \ + ( ((PWINSOCK_THREAD_DATA)(TlsGetValue( WWS32TlsSlot )))->ThreadVersion ) + +#define WWS32IsThreadVersion10 ( WWS32ThreadVersion == MAKEWORD(1, 0) ) +#define WWS32IsThreadVersion11 ( WWS32ThreadVersion == MAKEWORD(1, 1) ) + +#define WWS32IsThreadInitialized \ + ( TlsGetValue( WWS32TlsSlot ) == NULL ? FALSE : TRUE ) + +typedef struct _WINSOCK_ASYNC_CONTEXT_BLOCK { + LIST_ENTRY ContextBlockListEntry; + HANDLE AsyncTaskHandle32; + HAND16 AsyncTaskHandle16; + VPVOID vBuffer16; + DWORD Buffer16Length; + PVOID Buffer32; +} WINSOCK_ASYNC_CONTEXT_BLOCK, *PWINSOCK_ASYNC_CONTEXT_BLOCK; + +typedef struct _WINSOCK_SOCKET_INFO { + LIST_ENTRY GlobalSocketListEntry; + SOCKET SocketHandle32; + DWORD ThreadSerialNumber; + HAND16 SocketHandle16; +} WINSOCK_SOCKET_INFO, *PWINSOCK_SOCKET_INFO; + +PFD_SET +AllocateFdSet32 ( + IN PFD_SET16 FdSet16 + ); + +INT +ConvertFdSet16To32 ( + IN PFD_SET16 FdSet16, + IN PFD_SET FdSet32 + ); + +VOID +ConvertFdSet32To16 ( + IN PFD_SET FdSet32, + IN PFD_SET16 FdSet16 + ); + +int PASCAL +WSApSetPostRoutine ( + IN PVOID PostRoutine + ); + +typedef +BOOL +(*PWINSOCK_POST_ROUTINE) ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +BOOL +WWS32DispatchPostMessage ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +BOOL +WWS32PostAsyncSelect ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +BOOL +WWS32PostAsyncGetHost ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +BOOL +WWS32PostAsyncGetProto ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +BOOL +WWS32PostAsyncGetServ ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +PWINSOCK_ASYNC_CONTEXT_BLOCK +WWS32FindAndRemoveAsyncContext ( + IN HANDLE AsyncTaskHandle32 + ); + +HAND16 +WWS32GetAsyncTaskHandle16 ( + VOID + ); + +VOID +WWS32TaskCleanup( + VOID + ); + +// +// Message types used by WWS32DispatchPostMessage to dispatch a post +// message call to the appropriate routine. +// + +#define WWS32_MESSAGE_ASYNC_SELECT 0 +#define WWS32_MESSAGE_ASYNC_GETHOST 1 +#define WWS32_MESSAGE_ASYNC_GETPROTO 2 +#define WWS32_MESSAGE_ASYNC_GETSERV 3 + +// +// An arbitrary value that indicates the default blocking hook is in use. +// + +#define WWS32_DEFAULT_BLOCKING_HOOK 0xFFFFFFFF + +// +// Determine if a pointer is DWORD aligned. +// + +#define IS_DWORD_ALIGNED(p) (((DWORD)(p) & (sizeof(DWORD)-1)) == 0) + |