mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
614 lines
17 KiB
614 lines
17 KiB
/**********************************************************************/
|
|
/** Microsoft Windows **/
|
|
/** Copyright(c) Microsoft Corp., 1993 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
wsock.h
|
|
|
|
WSOCK.386 VxD service definitions.
|
|
|
|
|
|
FILE HISTORY:
|
|
DavidKa ??-???-???? Created.
|
|
KeithMo 30-Dec-1993 Cleaned up a bit, made H2INC-able.
|
|
|
|
*/
|
|
|
|
|
|
#ifndef _WSOCK_H_
|
|
#define _WSOCK_H_
|
|
|
|
|
|
//
|
|
// Service table.
|
|
//
|
|
|
|
#ifndef Not_VxD
|
|
|
|
/*XLATOFF*/
|
|
#define WSOCK_Service Declare_Service
|
|
#pragma warning ( disable : 4003 ) // disable not enough params warning
|
|
/*XLATON*/
|
|
|
|
/*MACROS*/
|
|
Begin_Service_Table(WSOCK)
|
|
|
|
WSOCK_Service (WSOCK_Get_Version, LOCAL)
|
|
WSOCK_Service (WSOCK_Register, LOCAL)
|
|
WSOCK_Service (WSOCK_Deregister, LOCAL)
|
|
WSOCK_Service (WSOCK_SignalNotify, LOCAL)
|
|
WSOCK_Service (WSOCK_SignalAllNotify, LOCAL)
|
|
|
|
End_Service_Table(WSOCK)
|
|
/*ENDMACROS*/
|
|
|
|
/*XLATOFF*/
|
|
#pragma warning ( default : 4003 ) // restore not enough params warning
|
|
/*XLATON*/
|
|
|
|
#endif // Not_VxD
|
|
|
|
|
|
//
|
|
// Version numbers.
|
|
//
|
|
|
|
#define WSOCK_Ver_Major 1
|
|
#define WSOCK_Ver_Minor 0
|
|
|
|
|
|
//
|
|
// The current provider interface version number. Increment
|
|
// this constant after any change that effects the provider
|
|
// interface.
|
|
//
|
|
|
|
#define WSOCK_INTERFACE_VERSION 0x00000001
|
|
|
|
|
|
//
|
|
// A locally-defined error code, indicating the underlying
|
|
// provider returned WSAEWOULDBLOCK for an operation invoked
|
|
// on a blocking socket.
|
|
//
|
|
|
|
#define WSOCK_WILL_BLOCK 0xFFFF
|
|
|
|
|
|
//
|
|
// Infinite wait time for send/recv timeout.
|
|
//
|
|
|
|
#define SOCK_IO_TIME (DWORD)-1L
|
|
|
|
|
|
//
|
|
// Incomplete types.
|
|
//
|
|
|
|
#ifndef LPSOCK_INFO_DEFINED
|
|
#define LPSOCK_INFO_DEFINED
|
|
typedef struct _SOCK_INFO FAR * LPSOCK_INFO;
|
|
#endif // LPSOCK_INFO_DEFINED
|
|
|
|
|
|
#ifdef MASM
|
|
|
|
//
|
|
// Stolen simplified definitions so we don't force
|
|
// H2INC to parse WINNT.H, WINSOCK.H, et al.
|
|
//
|
|
|
|
typedef DWORD LIST_ENTRY[2];
|
|
typedef WORD LINGER[2];
|
|
typedef VOID FAR * LPVOID;
|
|
|
|
#endif
|
|
|
|
|
|
//
|
|
// All FD_* events.
|
|
//
|
|
|
|
#define FD_ALL (FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE)
|
|
|
|
|
|
//
|
|
// This "special" FD_ event is used in select so that we may
|
|
// synthesize proper exceptfds for failed connection attempts.
|
|
//
|
|
|
|
#define FD_FAILED_CONNECT 0x0100
|
|
|
|
|
|
//
|
|
// A notification object. One of these objects is created
|
|
// and attached to a socket for every thread that is blocked
|
|
// in an API.
|
|
//
|
|
|
|
typedef struct _WSNOTIFY {
|
|
LIST_ENTRY PerSocketList; // per-socket list of notify objects
|
|
LIST_ENTRY GlobalList; // global list of all notify objects
|
|
LPSOCK_INFO OwningSocket; // the socket that "owns" this object
|
|
DWORD Flags; // private notification flags (see below)
|
|
DWORD EventMask; // events the client is interested in
|
|
DWORD Status; // the completion status
|
|
DWORD OwningThread; // either ring 0 thread id or VM handle
|
|
LPVOID ApcRoutine; // the user-mode APC to schedule
|
|
DWORD ApcContext; // a user-supplied context value
|
|
|
|
} WSNOTIFY;
|
|
|
|
//
|
|
// NOTE: For overlapped IO (asend and arecv), OwningThread field is used to
|
|
// store the pointer to the overlapped structure. ApcRoutine contains a pointer
|
|
// to the IO buffer and ApcContext is the IO buffer length.
|
|
//
|
|
// Field name Use
|
|
// --------------------
|
|
// OwningThread pointer to overlapped structure
|
|
// ApcRoutine pointer to IO buffer
|
|
// ApcContext length of IO buffer
|
|
//
|
|
|
|
#ifndef LPWSNOTIFY_DEFINED
|
|
#define LPWSNOTIFY_DEFINED
|
|
typedef struct _WSNOTIFY FAR * LPWSNOTIFY;
|
|
#endif // LPWSNOTIFY_DEFINED
|
|
|
|
|
|
//
|
|
// Notification object flags.
|
|
//
|
|
|
|
#define NOTIFY_FLAG_16BIT_CLIENT 0x00000001
|
|
#define NOTIFY_FLAG_ASYNC_SEND 0x00000002
|
|
#define NOTIFY_FLAG_ASYNC_RECV 0x00000004
|
|
#define NOTIFY_FLAG_VALID_MASK 0x00000007
|
|
|
|
|
|
//
|
|
// A list of socket/event mask pairs. A pointer to an array
|
|
// of these structures is passed to WsCreateMultipleNotify to
|
|
// create multiple notification objects.
|
|
//
|
|
|
|
typedef struct _SOCK_LIST {
|
|
LPSOCK_INFO Socket; // the target socket
|
|
DWORD EventMask; // events the client is interested in
|
|
DWORD Context; // user-defined context value (handle?)
|
|
|
|
} SOCK_LIST;
|
|
|
|
#ifndef LPSOCK_LIST_DEFINED
|
|
#define LPSOCK_LIST_DEFINED
|
|
typedef struct _SOCK_LIST FAR * LPSOCK_LIST;
|
|
#endif // LPSOCK_LIST_DEFINED
|
|
|
|
|
|
//
|
|
// A Winsock I/O Status Block. This structure contains all information
|
|
// about completing/cancelling a blocking socket operation. Whenever an
|
|
// APC is scheduled against a thread, the APC Context value points to
|
|
// the thread's WSIOSTATUS structure. This is especially useful for
|
|
// 16-bit applications, since it enables the WSOCK VxD to "unblock" a
|
|
// 16-bit thread without calling "up" into user mode.
|
|
//
|
|
|
|
typedef struct _WSIOSTATUS {
|
|
DWORD IoStatus; // completion status
|
|
char IoCompleted; // i/o has completed
|
|
char IoCancelled; // i/o has been cancelled
|
|
char IoTimedOut; // i/o has timed out
|
|
char IoSpare1; // spare (for dword alignment)
|
|
|
|
} WSIOSTATUS;
|
|
typedef struct _WSIOSTATUS FAR * LPWSIOSTATUS;
|
|
|
|
|
|
//
|
|
// This is is a special APC Routine value that may be passed into the
|
|
// various CreateNotify services. If this value is specified as the
|
|
// APC Routine, then the APC is not actually invoked, and the APC
|
|
// Context is assumed to point to the thread's WSIOSTATUS block.
|
|
//
|
|
// Note that this is used for 16-bit applications only!
|
|
//
|
|
|
|
#define SPECIAL_16BIT_APC ((LPVOID)-1L)
|
|
|
|
|
|
//
|
|
// This section defines the constants and structures necessary for
|
|
// communication between the WinSock DLLs and WSOCK.386. For each
|
|
// command, there is defined a unique opcode and a structure defining
|
|
// the command parameters.
|
|
//
|
|
// Also, for each command, a 16-bit constants, *_MAPIN is defined. This
|
|
// is used by the 16-bit interface to the provider VxDs to control the
|
|
// mapping of segmented 16:16 pointers to flat 0:32 pointers within the
|
|
// command parameter structures. Each structure is considered to be a
|
|
// sequence of one or more DWORDS. All pointers that must be mapped
|
|
// MUST appear FIRST in the command structures. The *_MAPIN constant
|
|
// specifies how many parameters should be mapped for each command.
|
|
//
|
|
// Note also that the LPSOCK_INFO pointers are not mapped, since they are
|
|
// opaque at the application level. ApcRoutine fields are not mapped either,
|
|
// since 32-bit APCs are scheduled via VWIN32, and 16-bit APCs are called
|
|
// directly.
|
|
//
|
|
// D A N G E R ! ! W A R N I N G ! ! D A N G E R ! !
|
|
//
|
|
// IF YOU CHANGE ANY FIELDS IN ANY OF THESE STRUCTURES, ENSURE THE *_MAPIN
|
|
// CONSTANT REMAINS ACCURATE! IF YOU DON'T, YOU'LL BREAK 16-BIT WINSOCK!!
|
|
//
|
|
// D A N G E R ! ! W A R N I N G ! ! D A N G E R ! !
|
|
//
|
|
|
|
#define WSOCK_FIRST_CMD 0x00000100
|
|
|
|
#define WSOCK_ACCEPT_CMD (WSOCK_FIRST_CMD + 0x0000)
|
|
#define WSOCK_BIND_CMD (WSOCK_FIRST_CMD + 0x0001)
|
|
#define WSOCK_CLOSESOCKET_CMD (WSOCK_FIRST_CMD + 0x0002)
|
|
#define WSOCK_CONNECT_CMD (WSOCK_FIRST_CMD + 0x0003)
|
|
#define WSOCK_GETPEERNAME_CMD (WSOCK_FIRST_CMD + 0x0004)
|
|
#define WSOCK_GETSOCKNAME_CMD (WSOCK_FIRST_CMD + 0x0005)
|
|
#define WSOCK_GETSOCKOPT_CMD (WSOCK_FIRST_CMD + 0x0006)
|
|
#define WSOCK_IOCTLSOCKET_CMD (WSOCK_FIRST_CMD + 0x0007)
|
|
#define WSOCK_LISTEN_CMD (WSOCK_FIRST_CMD + 0x0008)
|
|
#define WSOCK_RECV_CMD (WSOCK_FIRST_CMD + 0x0009)
|
|
#define WSOCK_SELECT_SETUP_CMD (WSOCK_FIRST_CMD + 0x000a)
|
|
#define WSOCK_SELECT_CLEANUP_CMD (WSOCK_FIRST_CMD + 0x000b)
|
|
#define WSOCK_ASYNC_SELECT_CMD (WSOCK_FIRST_CMD + 0x000c)
|
|
#define WSOCK_SEND_CMD (WSOCK_FIRST_CMD + 0x000d)
|
|
#define WSOCK_SETSOCKOPT_CMD (WSOCK_FIRST_CMD + 0x000e)
|
|
#define WSOCK_SHUTDOWN_CMD (WSOCK_FIRST_CMD + 0x000f)
|
|
#define WSOCK_SOCKET_CMD (WSOCK_FIRST_CMD + 0x0010)
|
|
|
|
#define WSOCK_CREATE_CMD (WSOCK_FIRST_CMD + 0x0011)
|
|
#define WSOCK_CREATE_MULTIPLE_CMD (WSOCK_FIRST_CMD + 0x0012)
|
|
#define WSOCK_DESTROY_CMD (WSOCK_FIRST_CMD + 0x0013)
|
|
#define WSOCK_DESTROY_BY_SOCKET_CMD (WSOCK_FIRST_CMD + 0x0014)
|
|
#define WSOCK_DESTROY_BY_THREAD_CMD (WSOCK_FIRST_CMD + 0x0015)
|
|
#define WSOCK_SIGNAL_CMD (WSOCK_FIRST_CMD + 0x0016)
|
|
#define WSOCK_SIGNAL_ALL_CMD (WSOCK_FIRST_CMD + 0x0017)
|
|
|
|
#define WSOCK_CONTROL_CMD (WSOCK_FIRST_CMD + 0x0018)
|
|
|
|
#define WSOCK_REGISTER_POSTMSG_CMD (WSOCK_FIRST_CMD + 0x0019)
|
|
|
|
#define WSOCK_ARECV_CMD (WSOCK_FIRST_CMD + 0x001a)
|
|
#define WSOCK_ASEND_CMD (WSOCK_FIRST_CMD + 0x001b)
|
|
|
|
#ifdef CHICAGO
|
|
#define WSOCK_LAST_CMD WSOCK_ASEND_CMD
|
|
#else
|
|
#define WSOCK_LAST_CMD WSOCK_REGISTER_POSTMSG_CMD
|
|
#endif
|
|
|
|
|
|
//
|
|
// Socket APIs.
|
|
//
|
|
|
|
typedef struct _WSOCK_ACCEPT_PARAMS {
|
|
LPVOID Address;
|
|
LPSOCK_INFO ListeningSocket;
|
|
LPSOCK_INFO ConnectedSocket;
|
|
DWORD AddressLength;
|
|
DWORD ConnectedSocketHandle;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
|
|
} WSOCK_ACCEPT_PARAMS;
|
|
typedef struct _WSOCK_ACCEPT_PARAMS FAR * LPWSOCK_ACCEPT_PARAMS;
|
|
#define WSOCK_ACCEPT_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_BIND_PARAMS {
|
|
LPVOID Address;
|
|
LPSOCK_INFO Socket;
|
|
DWORD AddressLength;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
|
|
} WSOCK_BIND_PARAMS;
|
|
typedef struct _WSOCK_BIND_PARAMS FAR * LPWSOCK_BIND_PARAMS;
|
|
#define WSOCK_BIND_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_CLOSESOCKET_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
|
|
} WSOCK_CLOSESOCKET_PARAMS;
|
|
typedef struct _WSOCK_CLOSESOCKET_PARAMS FAR * LPWSOCK_CLOSESOCKET_PARAMS;
|
|
#define WSOCK_CLOSESOCKET_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_CONNECT_PARAMS {
|
|
LPVOID Address;
|
|
LPSOCK_INFO Socket;
|
|
DWORD AddressLength;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
|
|
} WSOCK_CONNECT_PARAMS;
|
|
typedef struct _WSOCK_CONNECT_PARAMS FAR * LPWSOCK_CONNECT_PARAMS;
|
|
#define WSOCK_CONNECT_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_GETPEERNAME_PARAMS {
|
|
LPVOID Address;
|
|
LPSOCK_INFO Socket;
|
|
DWORD AddressLength;
|
|
|
|
} WSOCK_GETPEERNAME_PARAMS;
|
|
typedef struct _WSOCK_GETPEERNAME_PARAMS FAR * LPWSOCK_GETPEERNAME_PARAMS;
|
|
#define WSOCK_GETPEERNAME_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_GETSOCKNAME_PARAMS {
|
|
LPVOID Address;
|
|
LPSOCK_INFO Socket;
|
|
DWORD AddressLength;
|
|
|
|
} WSOCK_GETSOCKNAME_PARAMS;
|
|
typedef struct _WSOCK_GETSOCKNAME_PARAMS FAR * LPWSOCK_GETSOCKNAME_PARAMS;
|
|
#define WSOCK_GETSOCKNAME_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_GETSOCKOPT_PARAMS {
|
|
LPVOID Value;
|
|
LPSOCK_INFO Socket;
|
|
DWORD OptionLevel;
|
|
DWORD OptionName;
|
|
DWORD ValueLength;
|
|
DWORD IntValue;
|
|
|
|
} WSOCK_GETSOCKOPT_PARAMS;
|
|
typedef struct _WSOCK_GETSOCKOPT_PARAMS FAR * LPWSOCK_GETSOCKOPT_PARAMS;
|
|
#define WSOCK_GETSOCKOPT_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_IOCTLSOCKET_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
DWORD Command;
|
|
DWORD Param;
|
|
|
|
} WSOCK_IOCTLSOCKET_PARAMS;
|
|
typedef struct _WSOCK_IOCTLSOCKET_PARAMS FAR * LPWSOCK_IOCTLSOCKET_PARAMS;
|
|
#define WSOCK_IOCTLSOCKET_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_LISTEN_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
DWORD Backlog;
|
|
|
|
} WSOCK_LISTEN_PARAMS;
|
|
typedef struct _WSOCK_LISTEN_PARAMS FAR * LPWSOCK_LISTEN_PARAMS;
|
|
#define WSOCK_LISTEN_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_RECV_PARAMS {
|
|
LPVOID Buffer;
|
|
LPVOID Address;
|
|
LPSOCK_INFO Socket;
|
|
DWORD BufferLength;
|
|
DWORD Flags;
|
|
DWORD AddressLength;
|
|
DWORD BytesReceived;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
DWORD Timeout;
|
|
|
|
} WSOCK_RECV_PARAMS;
|
|
typedef struct _WSOCK_RECV_PARAMS FAR * LPWSOCK_RECV_PARAMS;
|
|
#define WSOCK_RECV_MAPIN 2
|
|
|
|
|
|
typedef struct _WSOCK_SELECT_SETUP_PARAMS {
|
|
LPSOCK_LIST ReadList;
|
|
LPSOCK_LIST WriteList;
|
|
LPSOCK_LIST ExceptList;
|
|
DWORD ReadCount;
|
|
DWORD WriteCount;
|
|
DWORD ExceptCount;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
|
|
} WSOCK_SELECT_SETUP_PARAMS;
|
|
typedef struct _WSOCK_SELECT_SETUP_PARAMS FAR * LPWSOCK_SELECT_SETUP_PARAMS;
|
|
#define WSOCK_SELECT_SETUP_MAPIN 3
|
|
|
|
|
|
typedef struct _WSOCK_SELECT_CLEANUP_PARAMS {
|
|
LPSOCK_LIST ReadList;
|
|
LPSOCK_LIST WriteList;
|
|
LPSOCK_LIST ExceptList;
|
|
DWORD ReadCount;
|
|
DWORD WriteCount;
|
|
DWORD ExceptCount;
|
|
|
|
} WSOCK_SELECT_CLEANUP_PARAMS;
|
|
typedef struct _WSOCK_SELECT_CLEANUP_PARAMS FAR * LPWSOCK_SELECT_CLEANUP_PARAMS;
|
|
#define WSOCK_SELECT_CLEANUP_MAPIN 3
|
|
|
|
|
|
typedef struct _WSOCK_ASYNC_SELECT_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
DWORD Window;
|
|
DWORD Message;
|
|
DWORD Events;
|
|
|
|
} WSOCK_ASYNC_SELECT_PARAMS;
|
|
typedef struct _WSOCK_ASYNC_SELECT_PARAMS FAR * LPWSOCK_ASYNC_SELECT_PARAMS;
|
|
#define WSOCK_ASYNC_SELECT_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_SEND_PARAMS {
|
|
LPVOID Buffer;
|
|
LPVOID Address;
|
|
LPSOCK_INFO Socket;
|
|
DWORD BufferLength;
|
|
DWORD Flags;
|
|
DWORD AddressLength;
|
|
DWORD BytesSent;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
DWORD Timeout;
|
|
|
|
} WSOCK_SEND_PARAMS;
|
|
typedef struct _WSOCK_SEND_PARAMS FAR * LPWSOCK_SEND_PARAMS;
|
|
#define WSOCK_SEND_MAPIN 2
|
|
|
|
|
|
typedef struct _WSOCK_SETSOCKOPT_PARAMS {
|
|
LPVOID Value;
|
|
LPSOCK_INFO Socket;
|
|
DWORD OptionLevel;
|
|
DWORD OptionName;
|
|
DWORD ValueLength;
|
|
DWORD IntValue;
|
|
|
|
} WSOCK_SETSOCKOPT_PARAMS;
|
|
typedef struct _WSOCK_SETSOCKOPT_PARAMS FAR * LPWSOCK_SETSOCKOPT_PARAMS;
|
|
#define WSOCK_SETSOCKOPT_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_SOCKET_PARAMS {
|
|
DWORD AddressFamily;
|
|
DWORD SocketType;
|
|
DWORD Protocol;
|
|
LPSOCK_INFO NewSocket;
|
|
DWORD NewSocketHandle;
|
|
|
|
} WSOCK_SOCKET_PARAMS;
|
|
typedef struct _WSOCK_SOCKET_PARAMS FAR * LPWSOCK_SOCKET_PARAMS;
|
|
#define WSOCK_SOCKET_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_SHUTDOWN_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
DWORD How;
|
|
|
|
} WSOCK_SHUTDOWN_PARAMS;
|
|
typedef struct _WSOCK_SHUTDOWN_PARAMS FAR * LPWSOCK_SHUTDOWN_PARAMS;
|
|
#define WSOCK_SHUTDOWN_MAPIN 0
|
|
|
|
|
|
//
|
|
// Notification APIs.
|
|
//
|
|
|
|
typedef struct _WSOCK_CREATE_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
DWORD Event;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
LPWSNOTIFY Notify;
|
|
|
|
} WSOCK_CREATE_PARAMS;
|
|
typedef struct _WSOCK_CREATE_PARAMS FAR * LPWSOCK_CREATE_PARAMS;
|
|
#define WSOCK_CREATE_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_CREATE_MULTIPLE_PARAMS {
|
|
LPSOCK_LIST ReadList;
|
|
LPSOCK_LIST WriteList;
|
|
LPSOCK_LIST ExceptList;
|
|
DWORD ReadCount;
|
|
DWORD WriteCount;
|
|
DWORD ExceptCount;
|
|
LPVOID ApcRoutine;
|
|
DWORD ApcContext;
|
|
|
|
} WSOCK_CREATE_MULTIPLE_PARAMS;
|
|
typedef struct _WSOCK_CREATE_MULTIPLE_PARAMS FAR * LPWSOCK_CREATE_MULTIPLE_PARAMS;
|
|
#define WSOCK_CREATE_MULTIPLE_MAPIN 3
|
|
|
|
|
|
typedef struct _WSOCK_DESTROY_PARAMS {
|
|
LPWSNOTIFY Notify;
|
|
|
|
} WSOCK_DESTROY_PARAMS;
|
|
typedef struct _WSOCK_DESTROY_PARAMS FAR * LPWSOCK_DESTROY_PARAMS;
|
|
#define WSOCK_DESTROY_MAPIN 1
|
|
|
|
|
|
typedef struct _WSOCK_DESTROY_BY_SOCKET_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
|
|
} WSOCK_DESTROY_BY_SOCKET_PARAMS;
|
|
typedef struct _WSOCK_DESTROY_BY_SOCKET_PARAMS FAR * LPWSOCK_DESTROY_BY_SOCKET_PARAMS;
|
|
#define WSOCK_DESTROY_BY_SOCKET_MAPIN 0
|
|
|
|
|
|
//
|
|
// Note that there is no structure defined for WSOCK_DESTROY_BY_THREAD,
|
|
// since this function takes no parameters, and C won't allow us to have
|
|
// an empty structure, but if it did, it would look like this:
|
|
//
|
|
// typedef struct _WSOCK_DESTROY_BY_THREAD_PARAMS {
|
|
//
|
|
// } WSOCK_DESTROY_BY_THREAD_PARAMS;
|
|
//
|
|
typedef struct _WSOCK_DESTROY_BY_THREAD_PARAMS FAR * LPWSOCK_DESTROY_BY_THREAD_PARAMS;
|
|
#define WSOCK_DESTROY_BY_THREAD_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_SIGNAL_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
DWORD Event;
|
|
DWORD Status;
|
|
|
|
} WSOCK_SIGNAL_PARAMS;
|
|
typedef struct _WSOCK_SIGNAL_PARAMS FAR * LPWSOCK_SIGNAL_PARAMS;
|
|
#define WSOCK_SIGNAL_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_SIGNAL_ALL_PARAMS {
|
|
LPSOCK_INFO Socket;
|
|
DWORD Status;
|
|
|
|
} WSOCK_SIGNAL_ALL_PARAMS;
|
|
typedef struct _WSOCK_SIGNAL_ALL_PARAMS FAR * LPWSOCK_SIGNAL_ALL_PARAMS;
|
|
#define WSOCK_SIGNAL_ALL_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_REGISTER_POSTMSG_PARAMS {
|
|
DWORD PostMessageCallback;
|
|
|
|
} WSOCK_REGISTER_POSTMSG_PARAMS;
|
|
typedef struct _WSOCK_REGISTER_POSTMSG_PARAMS FAR * LPWSOCK_REGISTER_POSTMSG_PARAMS;
|
|
#define WSOCK_REGISTER_POSTMSG_MAPIN 0
|
|
|
|
|
|
typedef struct _WSOCK_CONTROL_PARAMS {
|
|
LPVOID InputBuffer;
|
|
LPVOID OutputBuffer;
|
|
DWORD InputBufferLength;
|
|
DWORD OutputBufferLength;
|
|
DWORD Protocol;
|
|
DWORD Action;
|
|
|
|
} WSOCK_CONTROL_PARAMS;
|
|
typedef struct _WSOCK_CONTROL_PARAMS FAR * LPWSOCK_CONTROL_PARAMS;
|
|
#define WSOCK_CONTROL_MAPIN 2
|
|
|
|
|
|
|
|
typedef struct _WSOCK_ASYNCIO_PARAMS {
|
|
LPVOID Buffer;
|
|
LPVOID Address;
|
|
LPSOCK_INFO Socket;
|
|
DWORD BufferLength;
|
|
LPVOID Overlap;
|
|
|
|
} WSOCK_ASYNCIO_PARAMS;
|
|
typedef struct _WSOCK_ASYNCIO_PARAMS FAR * LPWSOCK_ASYNCIO_PARAMS;
|
|
#define WSOCK_ASYNCIO_MAPIN 0
|
|
|
|
#endif // _WSOCK_H_
|
|
|