2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2 DLL
5 * PURPOSE: Send/receive functions
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/09-2000 Created
25 WS_DbgPrint(MAX_TRACE
, ("s (0x%X) buf (0x%X) len (0x%X) flags (0x%X).\n",
29 WSABuf
.buf
= (CHAR FAR
*)buf
;
31 WSARecv(s
, &WSABuf
, 1, &BytesReceived
, (LPDWORD
)&flags
, NULL
, NULL
);
45 IN OUT INT FAR
* fromlen
)
50 WS_DbgPrint(MAX_TRACE
, ("s (0x%X) buf (0x%X) len (0x%X) flags (0x%X).\n",
54 WSABuf
.buf
= (CHAR FAR
*)buf
;
56 WSARecvFrom(s
, &WSABuf
, 1, &BytesReceived
, (LPDWORD
)&flags
, from
, fromlen
, NULL
, NULL
);
66 IN CONST CHAR FAR
* buf
,
73 WS_DbgPrint(MAX_TRACE
, ("s (0x%X) buf (0x%X) len (0x%X) flags (0x%X).\n",
77 WSABuf
.buf
= (CHAR FAR
*)buf
;
79 return WSASend(s
, &WSABuf
, 1, &BytesSent
, flags
, NULL
, NULL
);
87 IN CONST CHAR FAR
* buf
,
90 IN CONST LPSOCKADDR to
,
96 WS_DbgPrint(MAX_TRACE
, ("s (0x%X) buf (0x%X) len (0x%X) flags (0x%X).\n",
100 WSABuf
.buf
= (CHAR FAR
*)buf
;
102 return WSASendTo(s
, &WSABuf
, 1, &BytesSent
, flags
, to
, tolen
, NULL
, NULL
);
110 IN OUT LPWSABUF lpBuffers
,
111 IN DWORD dwBufferCount
,
112 OUT LPDWORD lpNumberOfBytesRecvd
,
113 IN OUT LPDWORD lpFlags
,
114 IN LPWSAOVERLAPPED lpOverlapped
,
115 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
117 PCATALOG_ENTRY Provider
;
121 WS_DbgPrint(MAX_TRACE
, ("Called.\n"));
123 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
)) {
124 WSASetLastError(WSAENOTSOCK
);
128 assert(Provider
->ProcTable
.lpWSPRecv
);
130 Code
= Provider
->ProcTable
.lpWSPRecv(s
, lpBuffers
, dwBufferCount
,
131 lpNumberOfBytesRecvd
, lpFlags
, lpOverlapped
,
132 lpCompletionRoutine
, NULL
/* lpThreadId */, &Errno
);
134 DereferenceProviderByPointer(Provider
);
136 if (Code
== SOCKET_ERROR
)
137 WSASetLastError(Errno
);
147 OUT LPWSABUF lpInboundDisconnectData
)
159 IN OUT LPWSABUF lpBuffers
,
160 IN DWORD dwBufferCount
,
161 OUT LPDWORD lpNumberOfBytesRecvd
,
162 IN OUT LPDWORD lpFlags
,
163 OUT LPSOCKADDR lpFrom
,
164 IN OUT LPINT lpFromlen
,
165 IN LPWSAOVERLAPPED lpOverlapped
,
166 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
168 PCATALOG_ENTRY Provider
;
172 WS_DbgPrint(MAX_TRACE
, ("Called.\n"));
174 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
)) {
175 WSASetLastError(WSAENOTSOCK
);
179 assert(Provider
->ProcTable
.lpWSPRecvFrom
);
181 Code
= Provider
->ProcTable
.lpWSPRecvFrom(s
, lpBuffers
, dwBufferCount
,
182 lpNumberOfBytesRecvd
, lpFlags
, lpFrom
, lpFromlen
, lpOverlapped
,
183 lpCompletionRoutine
, NULL
/* lpThreadId */, &Errno
);
185 DereferenceProviderByPointer(Provider
);
187 if (Code
== SOCKET_ERROR
)
188 WSASetLastError(Errno
);
198 IN LPWSABUF lpBuffers
,
199 IN DWORD dwBufferCount
,
200 OUT LPDWORD lpNumberOfBytesSent
,
202 IN LPWSAOVERLAPPED lpOverlapped
,
203 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
205 PCATALOG_ENTRY Provider
;
209 WS_DbgPrint(MAX_TRACE
, ("Called.\n"));
211 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
)) {
212 WSASetLastError(WSAENOTSOCK
);
216 assert(Provider
->ProcTable
.lpWSPSend
);
218 Code
= Provider
->ProcTable
.lpWSPSend(s
, lpBuffers
, dwBufferCount
,
219 lpNumberOfBytesSent
, dwFlags
, lpOverlapped
,
220 lpCompletionRoutine
, NULL
/* lpThreadId */, &Errno
);
222 DereferenceProviderByPointer(Provider
);
224 if (Code
== SOCKET_ERROR
)
225 WSASetLastError(Errno
);
235 IN LPWSABUF lpOutboundDisconnectData
)
247 IN LPWSABUF lpBuffers
,
248 IN DWORD dwBufferCount
,
249 OUT LPDWORD lpNumberOfBytesSent
,
251 IN CONST LPSOCKADDR lpTo
,
253 IN LPWSAOVERLAPPED lpOverlapped
,
254 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
256 PCATALOG_ENTRY Provider
;
260 WS_DbgPrint(MAX_TRACE
, ("Called.\n"));
262 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
)) {
263 WSASetLastError(WSAENOTSOCK
);
267 assert(Provider
->ProcTable
.lpWSPSendTo
);
269 Code
= Provider
->ProcTable
.lpWSPSendTo(s
, lpBuffers
, dwBufferCount
,
270 lpNumberOfBytesSent
, dwFlags
, lpTo
, iToLen
, lpOverlapped
,
271 lpCompletionRoutine
, NULL
/* lpThreadId */, &Errno
);
273 DereferenceProviderByPointer(Provider
);
275 if (Code
== SOCKET_ERROR
)
276 WSASetLastError(Errno
);