Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmswsock.h
Go to the documentation of this file.
00001 /* 00002 * mswsock.h 00003 * MS-specific extensions to Windows Sockets, exported from mswsock.dll. 00004 * These functions are N/A on Windows9x. 00005 * 00006 * This file is part of a free library for the Win32 API. 00007 * This library is distributed in the hope that it will be useful, 00008 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00009 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00010 */ 00011 00012 #pragma once 00013 00014 #define _MSWSOCK_ 00015 00016 #ifdef __cplusplus 00017 extern "C" { 00018 #endif 00019 00020 #include <mswsockdef.h> 00021 00022 #define SO_CONNDATA 0x7000 00023 #define SO_CONNOPT 0x7001 00024 #define SO_DISCDATA 0x7002 00025 #define SO_DISCOPT 0x7003 00026 #define SO_CONNDATALEN 0x7004 00027 #define SO_CONNOPTLEN 0x7005 00028 #define SO_DISCDATALEN 0x7006 00029 #define SO_DISCOPTLEN 0x7007 00030 #define SO_OPENTYPE 0x7008 00031 #define SO_SYNCHRONOUS_ALERT 0x10 00032 #define SO_SYNCHRONOUS_NONALERT 0x20 00033 #define SO_MAXDG 0x7009 00034 #define SO_MAXPATHDG 0x700A 00035 #define SO_UPDATE_ACCEPT_CONTEXT 0x700B 00036 #define SO_CONNECT_TIME 0x700C 00037 #if(_WIN32_WINNT >= 0x0501) 00038 #define SO_UPDATE_CONNECT_CONTEXT 0x7010 00039 #endif 00040 00041 #define TCP_BSDURGENT 0x7000 00042 00043 #define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12) 00044 00045 #if((_WIN32_WINNT < 0x0600) && (_WIN32_WINNT >= 0x0501)) 00046 #define SIO_SOCKET_CLOSE_NOTIFY _WSAIOW(IOC_VENDOR,13) 00047 #endif 00048 00049 #define SIO_UDP_NETRESET _WSAIOW(IOC_VENDOR,15) 00050 00051 #define TF_DISCONNECT 1 00052 #define TF_REUSE_SOCKET 2 00053 #define TF_WRITE_BEHIND 4 00054 00055 #define TF_USE_DEFAULT_WORKER 0 00056 #define TF_USE_SYSTEM_THREAD 16 00057 #define TF_USE_KERNEL_APC 32 00058 00059 #if(_WIN32_WINNT >= 0x0501) 00060 #define TP_ELEMENT_MEMORY 1 00061 #define TP_ELEMENT_FILE 2 00062 #define TP_ELEMENT_EOP 4 00063 #endif 00064 00065 #define TP_DISCONNECT TF_DISCONNECT 00066 #define TP_REUSE_SOCKET TF_REUSE_SOCKET 00067 #define TP_USE_DEFAULT_WORKER TF_USE_DEFAULT_WORKER 00068 #define TP_USE_SYSTEM_THREAD TF_USE_SYSTEM_THREAD 00069 #define TP_USE_KERNEL_APC TF_USE_KERNEL_APC 00070 00071 #define WSAID_TRANSMITFILE \ 00072 {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} 00073 00074 #define WSAID_ACCEPTEX \ 00075 {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} 00076 00077 #define WSAID_GETACCEPTEXSOCKADDRS \ 00078 {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} 00079 00080 typedef struct _TRANSMIT_FILE_BUFFERS { 00081 LPVOID Head; 00082 DWORD HeadLength; 00083 LPVOID Tail; 00084 DWORD TailLength; 00085 } TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, FAR *LPTRANSMIT_FILE_BUFFERS; 00086 00087 typedef BOOL 00088 (PASCAL FAR *LPFN_TRANSMITFILE)( 00089 IN SOCKET hSocket, 00090 IN HANDLE hFile, 00091 IN DWORD nNumberOfBytesToWrite, 00092 IN DWORD nNumberOfBytesPerSend, 00093 IN OUT LPOVERLAPPED lpOverlapped OPTIONAL, 00094 IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers OPTIONAL, 00095 IN DWORD dwReserved); 00096 00097 typedef BOOL 00098 (PASCAL FAR *LPFN_ACCEPTEX)( 00099 IN SOCKET sListenSocket, 00100 IN SOCKET sAcceptSocket, 00101 IN PVOID lpOutputBuffer, 00102 IN DWORD dwReceiveDataLength, 00103 IN DWORD dwLocalAddressLength, 00104 IN DWORD dwRemoteAddressLength, 00105 OUT LPDWORD lpdwBytesReceived, 00106 IN OUT LPOVERLAPPED lpOverlapped); 00107 00108 typedef VOID 00109 (PASCAL FAR *LPFN_GETACCEPTEXSOCKADDRS)( 00110 IN PVOID lpOutputBuffer, 00111 IN DWORD dwReceiveDataLength, 00112 IN DWORD dwLocalAddressLength, 00113 IN DWORD dwRemoteAddressLength, 00114 OUT struct sockaddr **LocalSockaddr, 00115 OUT LPINT LocalSockaddrLength, 00116 OUT struct sockaddr **RemoteSockaddr, 00117 OUT LPINT RemoteSockaddrLength); 00118 00119 #if(_WIN32_WINNT >= 0x0501) 00120 00121 typedef struct _TRANSMIT_PACKETS_ELEMENT { 00122 ULONG dwElFlags; 00123 ULONG cLength; 00124 union { 00125 struct { 00126 LARGE_INTEGER nFileOffset; 00127 HANDLE hFile; 00128 }; 00129 PVOID pBuffer; 00130 }; 00131 } TRANSMIT_PACKETS_ELEMENT, *PTRANSMIT_PACKETS_ELEMENT, FAR *LPTRANSMIT_PACKETS_ELEMENT; 00132 00133 typedef BOOL 00134 (PASCAL FAR *LPFN_TRANSMITPACKETS)( 00135 IN SOCKET hSocket, 00136 IN LPTRANSMIT_PACKETS_ELEMENT lpPacketArray OPTIONAL, 00137 IN DWORD nElementCount, 00138 IN DWORD nSendSize, 00139 IN OUT LPOVERLAPPED lpOverlapped OPTIONAL, 00140 IN DWORD dwFlags); 00141 00142 #define WSAID_TRANSMITPACKETS \ 00143 {0xd9689da0,0x1f90,0x11d3,{0x99,0x71,0x00,0xc0,0x4f,0x68,0xc8,0x76}} 00144 00145 typedef BOOL 00146 (PASCAL FAR *LPFN_CONNECTEX)( 00147 IN SOCKET s, 00148 IN const struct sockaddr FAR *name, 00149 IN int namelen, 00150 IN PVOID lpSendBuffer OPTIONAL, 00151 IN DWORD dwSendDataLength, 00152 OUT LPDWORD lpdwBytesSent, 00153 IN OUT LPOVERLAPPED lpOverlapped); 00154 00155 #define WSAID_CONNECTEX \ 00156 {0x25a207b9,0xddf3,0x4660,{0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e}} 00157 00158 typedef BOOL 00159 (PASCAL FAR *LPFN_DISCONNECTEX)( 00160 IN SOCKET s, 00161 IN OUT LPOVERLAPPED lpOverlapped OPTIONAL, 00162 IN DWORD dwFlags, 00163 IN DWORD dwReserved); 00164 00165 #define WSAID_DISCONNECTEX \ 00166 {0x7fda2e11,0x8630,0x436f,{0xa0, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57}} 00167 00168 #define DE_REUSE_SOCKET TF_REUSE_SOCKET 00169 00170 #define NLA_NAMESPACE_GUID \ 00171 {0x6642243a,0x3ba8,0x4aa6,{0xba,0xa5,0x2e,0xb,0xd7,0x1f,0xdd,0x83}} 00172 00173 #define NLA_SERVICE_CLASS_GUID \ 00174 {0x37e515,0xb5c9,0x4a43,{0xba,0xda,0x8b,0x48,0xa8,0x7a,0xd2,0x39}} 00175 00176 #define NLA_ALLUSERS_NETWORK 0x00000001 00177 #define NLA_FRIENDLY_NAME 0x00000002 00178 00179 typedef enum _NLA_BLOB_DATA_TYPE { 00180 NLA_RAW_DATA = 0, 00181 NLA_INTERFACE = 1, 00182 NLA_802_1X_LOCATION = 2, 00183 NLA_CONNECTIVITY = 3, 00184 NLA_ICS = 4, 00185 } NLA_BLOB_DATA_TYPE, *PNLA_BLOB_DATA_TYPE; 00186 00187 typedef enum _NLA_CONNECTIVITY_TYPE { 00188 NLA_NETWORK_AD_HOC = 0, 00189 NLA_NETWORK_MANAGED = 1, 00190 NLA_NETWORK_UNMANAGED = 2, 00191 NLA_NETWORK_UNKNOWN = 3, 00192 } NLA_CONNECTIVITY_TYPE, *PNLA_CONNECTIVITY_TYPE; 00193 00194 typedef enum _NLA_INTERNET { 00195 NLA_INTERNET_UNKNOWN = 0, 00196 NLA_INTERNET_NO = 1, 00197 NLA_INTERNET_YES = 2, 00198 } NLA_INTERNET, *PNLA_INTERNET; 00199 00200 typedef struct _NLA_BLOB { 00201 struct { 00202 NLA_BLOB_DATA_TYPE type; 00203 DWORD dwSize; 00204 DWORD nextOffset; 00205 } header; 00206 union { 00207 CHAR rawData[1]; 00208 struct { 00209 DWORD dwType; 00210 DWORD dwSpeed; 00211 CHAR adapterName[1]; 00212 } interfaceData; 00213 struct { 00214 CHAR information[1]; 00215 } locationData; 00216 struct { 00217 NLA_CONNECTIVITY_TYPE type; 00218 NLA_INTERNET internet; 00219 } connectivity; 00220 struct { 00221 struct { 00222 DWORD speed; 00223 DWORD type; 00224 DWORD state; 00225 WCHAR machineName[256]; 00226 WCHAR sharedAdapterName[256]; 00227 } remote; 00228 } ICS; 00229 } data; 00230 } NLA_BLOB, *PNLA_BLOB, * FAR LPNLA_BLOB; 00231 00232 typedef INT 00233 (PASCAL FAR *LPFN_WSARECVMSG)( 00234 IN SOCKET s, 00235 IN OUT LPWSAMSG lpMsg, 00236 OUT LPDWORD lpdwNumberOfBytesRecvd OPTIONAL, 00237 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL, 00238 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL); 00239 00240 #define WSAID_WSARECVMSG \ 00241 {0xf689d7c8,0x6f1f,0x436b,{0x8a,0x53,0xe5,0x4f,0xe3,0x51,0xc3,0x22}} 00242 00243 #endif /* (_WIN32_WINNT >= 0x0501) */ 00244 00245 #if(_WIN32_WINNT >= 0x0600) 00246 00247 #define SIO_BSP_HANDLE _WSAIOR(IOC_WS2,27) 00248 #define SIO_BSP_HANDLE_SELECT _WSAIOR(IOC_WS2,28) 00249 #define SIO_BSP_HANDLE_POLL _WSAIOR(IOC_WS2,29) 00250 00251 #define SIO_BASE_HANDLE _WSAIOR(IOC_WS2,34) 00252 00253 #define SIO_EXT_SELECT _WSAIORW(IOC_WS2,30) 00254 #define SIO_EXT_POLL _WSAIORW(IOC_WS2,31) 00255 #define SIO_EXT_SENDMSG _WSAIORW(IOC_WS2,32) 00256 00257 typedef struct { 00258 int result; 00259 ULONG fds; 00260 INT timeout; 00261 WSAPOLLFD fdArray[0]; 00262 } WSAPOLLDATA, *LPWSAPOLLDATA; 00263 00264 typedef struct { 00265 LPWSAMSG lpMsg; 00266 DWORD dwFlags; 00267 LPDWORD lpNumberOfBytesSent; 00268 LPWSAOVERLAPPED lpOverlapped; 00269 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine; 00270 } WSASENDMSG, *LPWSASENDMSG; 00271 00272 typedef INT 00273 (PASCAL FAR *LPFN_WSASENDMSG)( 00274 IN SOCKET s, 00275 IN LPWSAMSG lpMsg, 00276 IN DWORD dwFlags, 00277 OUT LPDWORD lpNumberOfBytesSent OPTIONAL, 00278 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL, 00279 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL); 00280 00281 #define WSAID_WSASENDMSG 00282 {0xa441e712,0x754f,0x43ca,{0x84,0xa7,0x0d,0xee,0x44,0xcf,0x60,0x6d}} 00283 00284 typedef INT 00285 (WSAAPI *LPFN_WSAPOLL)( 00286 IN OUT LPWSAPOLLFD fdarray, 00287 IN ULONG nfds, 00288 IN INT timeout); 00289 00290 #define WSAID_WSAPOLL \ 00291 {0x18C76F85,0xDC66,0x4964,{0x97,0x2E,0x23,0xC2,0x72,0x38,0x31,0x2B}} 00292 00293 #endif /* (_WIN32_WINNT >= 0x0600) */ 00294 00295 #if(_WIN32_WINNT < 0x0600) 00296 int 00297 PASCAL 00298 FAR 00299 WSARecvEx( 00300 IN SOCKET s, 00301 OUT char FAR *buf, 00302 IN int len, 00303 IN OUT int FAR *flags); 00304 #else 00305 INT 00306 PASCAL 00307 FAR 00308 WSARecvEx( 00309 IN SOCKET s, 00310 OUT CHAR FAR *buf, 00311 IN INT len, 00312 IN OUT INT FAR *flags); 00313 #endif /* (_WIN32_WINNT < 0x0600) */ 00314 00315 BOOL 00316 PASCAL 00317 FAR 00318 TransmitFile( 00319 IN SOCKET hSocket, 00320 IN HANDLE hFile, 00321 IN DWORD nNumberOfBytesToWrite, 00322 IN DWORD nNumberOfBytesPerSend, 00323 IN OUT LPOVERLAPPED lpOverlapped OPTIONAL, 00324 IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers OPTIONAL, 00325 IN DWORD dwReserved); 00326 00327 BOOL 00328 PASCAL 00329 FAR 00330 AcceptEx( 00331 IN SOCKET sListenSocket, 00332 IN SOCKET sAcceptSocket, 00333 OUT PVOID lpOutputBuffer, 00334 IN DWORD dwReceiveDataLength, 00335 IN DWORD dwLocalAddressLength, 00336 IN DWORD dwRemoteAddressLength, 00337 OUT LPDWORD lpdwBytesReceived, 00338 IN OUT LPOVERLAPPED lpOverlapped); 00339 00340 VOID 00341 PASCAL 00342 FAR 00343 GetAcceptExSockaddrs( 00344 IN PVOID lpOutputBuffer, 00345 IN DWORD dwReceiveDataLength, 00346 IN DWORD dwLocalAddressLength, 00347 IN DWORD dwRemoteAddressLength, 00348 OUT struct sockaddr **LocalSockaddr, 00349 OUT LPINT LocalSockaddrLength, 00350 OUT struct sockaddr **RemoteSockaddr, 00351 OUT LPINT RemoteSockaddrLength); 00352 00353 #ifdef __cplusplus 00354 } 00355 #endif Generated on Thu May 24 2012 04:32:34 for ReactOS by
1.7.6.1
|