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
35 IN OUT INT FAR
* fromlen
)
40 WS_DbgPrint(MAX_TRACE
, ("s (0x%X) buf (0x%X) len (0x%X) flags (0x%X).\n",
44 WSABuf
.buf
= (CHAR FAR
*)buf
;
46 WSARecvFrom(s
, &WSABuf
, 1, &BytesReceived
, (LPDWORD
)&flags
, from
, fromlen
, NULL
, NULL
);
56 IN CONST CHAR FAR
* buf
,
70 IN CONST CHAR FAR
* buf
,
73 IN CONST LPSOCKADDR to
,
79 WS_DbgPrint(MAX_TRACE
, ("s (0x%X) buf (0x%X) len (0x%X) flags (0x%X).\n",
83 WSABuf
.buf
= (CHAR FAR
*)buf
;
85 return WSASendTo(s
, &WSABuf
, 1, &BytesSent
, flags
, to
, tolen
, NULL
, NULL
);
93 IN OUT LPWSABUF lpBuffers
,
94 IN DWORD dwBufferCount
,
95 OUT LPDWORD lpNumberOfBytesRecvd
,
96 IN OUT LPDWORD lpFlags
,
97 IN LPWSAOVERLAPPED lpOverlapped
,
98 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
110 OUT LPWSABUF lpInboundDisconnectData
)
122 IN OUT LPWSABUF lpBuffers
,
123 IN DWORD dwBufferCount
,
124 OUT LPDWORD lpNumberOfBytesRecvd
,
125 IN OUT LPDWORD lpFlags
,
126 OUT LPSOCKADDR lpFrom
,
127 IN OUT LPINT lpFromlen
,
128 IN LPWSAOVERLAPPED lpOverlapped
,
129 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
131 PCATALOG_ENTRY Provider
;
135 WS_DbgPrint(MAX_TRACE
, ("Called.\n"));
137 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
)) {
138 WSASetLastError(WSAENOTSOCK
);
142 assert(Provider
->ProcTable
.lpWSPRecvFrom
);
144 Code
= Provider
->ProcTable
.lpWSPRecvFrom(s
, lpBuffers
, dwBufferCount
,
145 lpNumberOfBytesRecvd
, lpFlags
, lpFrom
, lpFromlen
, lpOverlapped
,
146 lpCompletionRoutine
, NULL
/* lpThreadId */, &Errno
);
148 DereferenceProviderByPointer(Provider
);
150 if (Code
== SOCKET_ERROR
)
151 WSASetLastError(Errno
);
161 IN LPWSABUF lpBuffers
,
162 IN DWORD dwBufferCount
,
163 OUT LPDWORD lpNumberOfBytesSent
,
165 IN LPWSAOVERLAPPED lpOverlapped
,
166 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
178 IN LPWSABUF lpOutboundDisconnectData
)
190 IN LPWSABUF lpBuffers
,
191 IN DWORD dwBufferCount
,
192 OUT LPDWORD lpNumberOfBytesSent
,
194 IN CONST LPSOCKADDR lpTo
,
196 IN LPWSAOVERLAPPED lpOverlapped
,
197 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
199 PCATALOG_ENTRY Provider
;
203 WS_DbgPrint(MAX_TRACE
, ("Called.\n"));
205 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
)) {
206 WSASetLastError(WSAENOTSOCK
);
210 assert(Provider
->ProcTable
.lpWSPSendTo
);
212 Code
= Provider
->ProcTable
.lpWSPSendTo(s
, lpBuffers
, dwBufferCount
,
213 lpNumberOfBytesSent
, dwFlags
, lpTo
, iToLen
, lpOverlapped
,
214 lpCompletionRoutine
, NULL
/* lpThreadId */, &Errno
);
216 DereferenceProviderByPointer(Provider
);
218 if (Code
== SOCKET_ERROR
)
219 WSASetLastError(Errno
);