114 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * mswsock.h
 | 
						|
 * MS-specific extensions to Windows Sockets, exported from mswsock.dll.
 | 
						|
 * These functions are N/A on Windows9x.
 | 
						|
 *
 | 
						|
 * This file is part of a free library for the Win32 API.
 | 
						|
 * This library is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
 */
 | 
						|
         
 | 
						|
#ifndef _MSWSOCK_H
 | 
						|
#define _MSWSOCK_H
 | 
						|
#if __GNUC__ >=3
 | 
						|
#pragma GCC system_header
 | 
						|
#endif
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#define SO_CONNDATA	0x7000
 | 
						|
#define SO_CONNOPT	0x7001
 | 
						|
#define SO_DISCDATA	0x7002
 | 
						|
#define SO_DISCOPT	0x7003
 | 
						|
#define SO_CONNDATALEN	0x7004
 | 
						|
#define SO_CONNOPTLEN	0x7005
 | 
						|
#define SO_DISCDATALEN	0x7006
 | 
						|
#define SO_DISCOPTLEN	0x7007
 | 
						|
#define SO_OPENTYPE	0x7008
 | 
						|
#define SO_SYNCHRONOUS_ALERT	0x10
 | 
						|
#define SO_SYNCHRONOUS_NONALERT	0x20
 | 
						|
#define SO_MAXDG	0x7009
 | 
						|
#define SO_MAXPATHDG	0x700A
 | 
						|
#define SO_UPDATE_ACCEPT_CONTEXT	0x700B
 | 
						|
#define SO_CONNECT_TIME	0x700C
 | 
						|
#define TCP_BSDURGENT	0x7000
 | 
						|
 | 
						|
#define TF_DISCONNECT   1
 | 
						|
#define TF_REUSE_SOCKET 2
 | 
						|
#define TF_WRITE_BEHIND 4
 | 
						|
#define TF_USE_DEFAULT_WORKER   0
 | 
						|
#define TF_USE_SYSTEM_THREAD    16
 | 
						|
#define TF_USE_KERNEL_APC   32
 | 
						|
 | 
						|
typedef struct _TRANSMIT_FILE_BUFFERS {
 | 
						|
	PVOID Head;
 | 
						|
	DWORD HeadLength;
 | 
						|
	PVOID Tail;
 | 
						|
	DWORD TailLength;
 | 
						|
} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
 | 
						|
 | 
						|
int PASCAL WSARecvEx(SOCKET,char*,int,int*);
 | 
						|
BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
 | 
						|
BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
 | 
						|
VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
 | 
						|
 | 
						|
#ifdef _WINSOCK2_H /* These require the winsock2 interface.  */
 | 
						|
 | 
						|
#define TP_ELEMENT_FILE		1
 | 
						|
#define TP_ELEMENT_MEMORY	2
 | 
						|
#define TP_ELEMENT_EOP		4
 | 
						|
 | 
						|
typedef struct _TRANSMIT_PACKETS_ELEMENT { 
 | 
						|
	ULONG dwElFlags;
 | 
						|
	ULONG cLength;
 | 
						|
	_ANONYMOUS_UNION
 | 
						|
	union {
 | 
						|
		struct {
 | 
						|
			LARGE_INTEGER	nFileOffset;
 | 
						|
			HANDLE		hFile;
 | 
						|
		};
 | 
						|
		PVOID	pBuffer;
 | 
						|
	};
 | 
						|
} TRANSMIT_PACKETS_ELEMENT; 
 | 
						|
 | 
						|
typedef struct _WSAMSG {
 | 
						|
	LPSOCKADDR	name;
 | 
						|
	INT		namelen;
 | 
						|
	LPWSABUF	lpBuffers;
 | 
						|
	DWORD		dwBufferCount;
 | 
						|
	WSABUF		Control;
 | 
						|
	DWORD		dwFlags;
 | 
						|
} WSAMSG, *PWSAMSG, *LPWSAMSG;
 | 
						|
 | 
						|
 | 
						|
/* According to MSDN docs, the WSAMSG.Control buffer starts with a
 | 
						|
   cmsghdr header of the following form.  See also RFC 2292. */
 | 
						|
 | 
						|
typedef struct wsacmsghdr {
 | 
						|
	UINT	cmsg_len;
 | 
						|
	INT	cmsg_level;
 | 
						|
 	INT	cmsg_type;
 | 
						|
	/* followed by UCHAR cmsg_data[]; */
 | 
						|
} WSACMSGHDR;
 | 
						|
 | 
						|
/* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */
 | 
						|
#if 0
 | 
						|
#define WSA_CMSG_FIRSTHDR(mhdr)
 | 
						|
#define WSA_CMSG_NXTHDR(mhdr, cmsg)
 | 
						|
#define WSA_CMSG_SPACE(length)
 | 
						|
#define WSA_CMSG_LEN(length)
 | 
						|
#endif
 | 
						|
 | 
						|
BOOL PASCAL DisconnectEx(SOCKET,LPOVERLAPPED,DWORD,DWORD);
 | 
						|
int PASCAL WSARecvMsg(SOCKET,LPWSAMSG,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
 | 
						|
 | 
						|
#endif /* _WINSOCK2_H */
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
#endif  /*  _MSWSOCK_H */
 | 
						|
 |