mswsock.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /*
  2. * Copyright (C) the Wine project
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. #ifndef _MSWSOCK_
  19. #define _MSWSOCK_
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif /* defined(__cplusplus) */
  23. #ifndef USE_WS_PREFIX
  24. #define SO_CONNDATA 0x7000
  25. #define SO_CONNOPT 0x7001
  26. #define SO_DISCDATA 0x7002
  27. #define SO_DISCOPT 0x7003
  28. #define SO_CONNDATALEN 0x7004
  29. #define SO_CONNOPTLEN 0x7005
  30. #define SO_DISCDATALEN 0x7006
  31. #define SO_DISCOPTLEN 0x7007
  32. #else
  33. #define WS_SO_CONNDATA 0x7000
  34. #define WS_SO_CONNOPT 0x7001
  35. #define WS_SO_DISCDATA 0x7002
  36. #define WS_SO_DISCOPT 0x7003
  37. #define WS_SO_CONNDATALEN 0x7004
  38. #define WS_SO_CONNOPTLEN 0x7005
  39. #define WS_SO_DISCDATALEN 0x7006
  40. #define WS_SO_DISCOPTLEN 0x7007
  41. #endif
  42. #ifndef USE_WS_PREFIX
  43. #define SO_OPENTYPE 0x7008
  44. #else
  45. #define WS_SO_OPENTYPE 0x7008
  46. #endif
  47. #ifndef USE_WS_PREFIX
  48. #define SO_SYNCHRONOUS_ALERT 0x10
  49. #define SO_SYNCHRONOUS_NONALERT 0x20
  50. #else
  51. #define WS_SO_SYNCHRONOUS_ALERT 0x10
  52. #define WS_SO_SYNCHRONOUS_NONALERT 0x20
  53. #endif
  54. #ifndef USE_WS_PREFIX
  55. #define SO_MAXDG 0x7009
  56. #define SO_MAXPATHDG 0x700A
  57. #define SO_UPDATE_ACCEPT_CONTEXT 0x700B
  58. #define SO_CONNECT_TIME 0x700C
  59. #define SO_UPDATE_CONNECT_CONTEXT 0x7010
  60. #else
  61. #define WS_SO_MAXDG 0x7009
  62. #define WS_SO_MAXPATHDG 0x700A
  63. #define WS_SO_UPDATE_ACCEPT_CONTEXT 0x700B
  64. #define WS_SO_CONNECT_TIME 0x700C
  65. #define WS_SO_UPDATE_CONNECT_CONTEXT 0x7010
  66. #endif
  67. #ifndef USE_WS_PREFIX
  68. #define TCP_BSDURGENT 0x7000
  69. #else
  70. #define WS_TCP_BSDURGENT 0x7000
  71. #endif
  72. #define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)
  73. #define DE_REUSE_SOCKET TF_REUSE_SOCKET
  74. #ifndef USE_WS_PREFIX
  75. #define MSG_TRUNC 0x0100
  76. #define MSG_CTRUNC 0x0200
  77. #define MSG_BCAST 0x0400
  78. #define MSG_MCAST 0x0800
  79. #else
  80. #define WS_MSG_TRUNC 0x0100
  81. #define WS_MSG_CTRUNC 0x0200
  82. #define WS_MSG_BCAST 0x0400
  83. #define WS_MSG_MCAST 0x0800
  84. #endif
  85. #define TF_DISCONNECT 0x01
  86. #define TF_REUSE_SOCKET 0x02
  87. #define TF_WRITE_BEHIND 0x04
  88. #define TF_USE_DEFAULT_WORKER 0x00
  89. #define TF_USE_SYSTEM_THREAD 0x10
  90. #define TF_USE_KERNEL_APC 0x20
  91. #define TP_DISCONNECT TF_DISCONNECT
  92. #define TP_REUSE_SOCKET TF_REUSE_SOCKET
  93. #define TP_USE_DEFAULT_WORKER TF_USE_DEFAULT_WORKER
  94. #define TP_USE_SYSTEM_THREAD TF_USE_SYSTEM_THREAD
  95. #define TP_USE_KERNEL_APC TF_USE_KERNEL_APC
  96. #define TP_ELEMENT_MEMORY 1
  97. #define TP_ELEMENT_FILE 2
  98. #define TP_ELEMENT_EOP 4
  99. #define WSAID_ACCEPTEX \
  100. {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
  101. #define WSAID_CONNECTEX \
  102. {0x25a207b9,0xddf3,0x4660,{0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e}}
  103. #define WSAID_DISCONNECTEX \
  104. {0x7fda2e11,0x8630,0x436f,{0xa0, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57}}
  105. #define WSAID_GETACCEPTEXSOCKADDRS \
  106. {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
  107. #define WSAID_TRANSMITFILE \
  108. {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
  109. #define WSAID_TRANSMITPACKETS \
  110. {0xd9689da0,0x1f90,0x11d3,{0x99,0x71,0x00,0xc0,0x4f,0x68,0xc8,0x76}}
  111. #define WSAID_WSARECVMSG \
  112. {0xf689d7c8,0x6f1f,0x436b,{0x8a,0x53,0xe5,0x4f,0xe3,0x51,0xc3,0x22}}
  113. typedef struct _TRANSMIT_FILE_BUFFERS {
  114. LPVOID Head;
  115. DWORD HeadLength;
  116. LPVOID Tail;
  117. DWORD TailLength;
  118. } TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
  119. typedef struct _TRANSMIT_PACKETS_ELEMENT {
  120. ULONG dwElFlags;
  121. ULONG cLength;
  122. union {
  123. struct {
  124. LARGE_INTEGER nFileOffset;
  125. HANDLE hFile;
  126. } DUMMYSTRUCTNAME;
  127. PVOID pBuffer;
  128. } DUMMYUNIONNAME;
  129. } TRANSMIT_PACKETS_ELEMENT, *PTRANSMIT_PACKETS_ELEMENT, *LPTRANSMIT_PACKETS_ELEMENT;
  130. typedef struct _WSAMSG {
  131. LPSOCKADDR name;
  132. INT namelen;
  133. LPWSABUF lpBuffers;
  134. DWORD dwBufferCount;
  135. WSABUF Control;
  136. DWORD dwFlags;
  137. } WSAMSG, *PWSAMSG, *LPWSAMSG;
  138. typedef struct _WSACMSGHDR {
  139. SIZE_T cmsg_len;
  140. INT cmsg_level;
  141. INT cmsg_type;
  142. /* followed by UCHAR cmsg_data[] */
  143. } WSACMSGHDR, *PWSACMSGHDR, *LPWSACMSGHDR;
  144. typedef BOOL (WINAPI * LPFN_ACCEPTEX)(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
  145. typedef BOOL (WINAPI * LPFN_CONNECTEX)(SOCKET, const struct sockaddr *, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED);
  146. typedef BOOL (WINAPI * LPFN_DISCONNECTEX)(SOCKET, LPOVERLAPPED, DWORD, DWORD);
  147. typedef VOID (WINAPI * LPFN_GETACCEPTEXSOCKADDRS)(PVOID, DWORD, DWORD, DWORD, struct sockaddr **, LPINT, struct sockaddr **, LPINT);
  148. typedef BOOL (WINAPI * LPFN_TRANSMITFILE)(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
  149. typedef BOOL (WINAPI * LPFN_TRANSMITPACKETS)(SOCKET, LPTRANSMIT_PACKETS_ELEMENT, DWORD, DWORD, LPOVERLAPPED, DWORD);
  150. typedef INT (WINAPI * LPFN_WSARECVMSG)(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  151. BOOL WINAPI AcceptEx(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);
  152. VOID WINAPI GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, struct sockaddr **, LPINT, struct sockaddr **, LPINT);
  153. BOOL WINAPI TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
  154. INT WINAPI WSARecvEx(SOCKET, char *, INT, INT *);
  155. #ifdef __cplusplus
  156. }
  157. #endif
  158. #endif /* _MSWSOCK_ */