2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2 API
5 * PURPOSE: Socket I/O Control Code support.
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
9 /* INCLUDES ******************************************************************/
15 /* DATA **********************************************************************/
17 /* FUNCTIONS *****************************************************************/
24 ioctlsocket(IN SOCKET s
,
26 IN OUT ULONG FAR
* argp
)
48 IN DWORD dwIoControlCode
,
49 IN LPVOID lpvInBuffer
,
51 OUT LPVOID lpvOutBuffer
,
53 OUT LPDWORD lpcbBytesReturned
,
54 IN LPWSAOVERLAPPED lpOverlapped
,
55 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
60 LPWSATHREADID ThreadId
;
61 DPRINT("WSAIoctl: %lx, %lx\n", s
, dwIoControlCode
);
63 /* Check for WSAStartup */
64 if ((ErrorCode
= WsQuickPrologTid(&ThreadId
)) == ERROR_SUCCESS
)
66 /* Get the Socket Context */
67 if ((Socket
= WsSockGetSocket(s
)))
70 Status
= Socket
->Provider
->Service
.lpWSPIoctl(s
,
82 /* Deference the Socket Context */
83 WsSockDereference(Socket
);
85 /* Return Provider Value */
86 if (Status
== ERROR_SUCCESS
) return Status
;
90 /* No Socket Context Found */
91 ErrorCode
= WSAENOTSOCK
;
95 /* Return with an Error */
96 SetLastError(ErrorCode
);