source: Daodan/MinGW/include/mswsock.h@ 1098

Last change on this file since 1098 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

File size: 2.9 KB
RevLine 
[1046]1/*
2 * mswsock.h
3 * MS-specific extensions to Windows Sockets, exported from mswsock.dll.
4 * These functions are N/A on Windows9x.
5 *
6 * This file is part of a free library for the Win32 API.
7 * This library is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 */
11
12#ifndef _MSWSOCK_H
13#define _MSWSOCK_H
14#if __GNUC__ >=3
15#pragma GCC system_header
16#endif
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21#define SO_CONNDATA 0x7000
22#define SO_CONNOPT 0x7001
23#define SO_DISCDATA 0x7002
24#define SO_DISCOPT 0x7003
25#define SO_CONNDATALEN 0x7004
26#define SO_CONNOPTLEN 0x7005
27#define SO_DISCDATALEN 0x7006
28#define SO_DISCOPTLEN 0x7007
29#define SO_OPENTYPE 0x7008
30#define SO_SYNCHRONOUS_ALERT 0x10
31#define SO_SYNCHRONOUS_NONALERT 0x20
32#define SO_MAXDG 0x7009
33#define SO_MAXPATHDG 0x700A
34#define SO_UPDATE_ACCEPT_CONTEXT 0x700B
35#define SO_CONNECT_TIME 0x700C
36#define TCP_BSDURGENT 0x7000
37
38#define TF_DISCONNECT 1
39#define TF_REUSE_SOCKET 2
40#define TF_WRITE_BEHIND 4
41#define TF_USE_DEFAULT_WORKER 0
42#define TF_USE_SYSTEM_THREAD 16
43#define TF_USE_KERNEL_APC 32
44
45typedef struct _TRANSMIT_FILE_BUFFERS {
46 PVOID Head;
47 DWORD HeadLength;
48 PVOID Tail;
49 DWORD TailLength;
50} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
51
52int PASCAL WSARecvEx(SOCKET,char*,int,int*);
53BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
54BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
55VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
56
57#ifdef _WINSOCK2_H /* These require the winsock2 interface. */
58
59#define TP_ELEMENT_FILE 1
60#define TP_ELEMENT_MEMORY 2
61#define TP_ELEMENT_EOP 4
62
63typedef struct _TRANSMIT_PACKETS_ELEMENT {
64 ULONG dwElFlags;
65 ULONG cLength;
66 _ANONYMOUS_UNION
67 union {
68 struct {
69 LARGE_INTEGER nFileOffset;
70 HANDLE hFile;
71 };
72 PVOID pBuffer;
73 };
74} TRANSMIT_PACKETS_ELEMENT;
75
76typedef struct _WSAMSG {
77 LPSOCKADDR name;
78 INT namelen;
79 LPWSABUF lpBuffers;
80 DWORD dwBufferCount;
81 WSABUF Control;
82 DWORD dwFlags;
83} WSAMSG, *PWSAMSG, *LPWSAMSG;
84
85
86/* According to MSDN docs, the WSAMSG.Control buffer starts with a
87 cmsghdr header of the following form. See also RFC 2292. */
88
89typedef struct wsacmsghdr {
90 UINT cmsg_len;
91 INT cmsg_level;
92 INT cmsg_type;
93 /* followed by UCHAR cmsg_data[]; */
94} WSACMSGHDR;
95
96/* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */
97#if 0
98#define WSA_CMSG_FIRSTHDR(mhdr)
99#define WSA_CMSG_NXTHDR(mhdr, cmsg)
100#define WSA_CMSG_SPACE(length)
101#define WSA_CMSG_LEN(length)
102#endif
103
104BOOL PASCAL DisconnectEx(SOCKET,LPOVERLAPPED,DWORD,DWORD);
105int PASCAL WSARecvMsg(SOCKET,LPWSAMSG,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
106
107#endif /* _WINSOCK2_H */
108
109#ifdef __cplusplus
110}
111#endif
112#endif /* _MSWSOCK_H */
113
Note: See TracBrowser for help on using the repository browser.