2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2 API
4 * FILE: dll/win32/ws2_32_new/src/ioctl.c
5 * PURPOSE: Socket I/O Control Code support.
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
9 /* INCLUDES ******************************************************************/
16 /* FUNCTIONS *****************************************************************/
23 ioctlsocket(IN SOCKET s
,
25 IN OUT ULONG FAR
* argp
)
47 IN DWORD dwIoControlCode
,
48 IN LPVOID lpvInBuffer
,
50 OUT LPVOID lpvOutBuffer
,
52 OUT LPDWORD lpcbBytesReturned
,
53 IN LPWSAOVERLAPPED lpOverlapped
,
54 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
59 LPWSATHREADID ThreadId
;
60 DPRINT("WSAIoctl: %lx, %lx\n", s
, dwIoControlCode
);
62 /* Check for WSAStartup */
63 if ((ErrorCode
= WsQuickPrologTid(&ThreadId
)) == ERROR_SUCCESS
)
65 /* Get the Socket Context */
66 if ((Socket
= WsSockGetSocket(s
)))
69 Status
= Socket
->Provider
->Service
.lpWSPIoctl(s
,
81 /* Deference the Socket Context */
82 WsSockDereference(Socket
);
84 /* Return Provider Value */
85 if (Status
== ERROR_SUCCESS
) return Status
;
89 /* No Socket Context Found */
90 ErrorCode
= WSAENOTSOCK
;
94 /* Return with an Error */
95 SetLastError(ErrorCode
);