簡述
控制一個套接口的模式。#include <winsock2.h>
int WSAAPI WSAIoctl(SOCKET s, DWORD
dwIoControlCode, LPVOID lpvInBuffer, DWORD
cbInBuffer, LPVOID lpvOutBuffer, DWORD
cbOutBuffer, LPDWORD lpcbBytesReturned,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE
lpCompletionRoutine);
s:一個套接口的句柄。
dwIoControlCode:將進行的操作的控制代碼。
lpvInBuffer:輸入緩衝區的地址。
cbInBuffer:輸入緩衝區的大小。
lpvOutBuffer:輸出緩衝區的地址。
cbOutBuffer:輸出緩衝區的大小。
lpcbBytesReturned:輸出實際位元組數的地址。
lpOverlapped:WSAOVERLAPPED結構的地址。
lpCompletionRoutine:一個指向操作結束後調用的例程指針。
返回值:
調用成功後,WSAIoctl ()函式返回0。否則的話,將返回INVALID_SOCKET錯誤,應用程式可通過WSAGetLastError()來獲取相應的錯誤代碼。錯誤代碼:
WSANOTINITIALISED 在調用本API之前應成功調用WSAStartup()。WSAENETDOWN 網路子系統失效。
WSAEINVAL cmd不是一個合法的命令;或者一個輸入參數非法;或者命令對於該種類型的套接口不適用。
WSAEINPROGRESS 在一個回調函式運行時調用了該函式。
WSAENOTSOCK 描述字不是一個套接口。
WSAEOPNOTSUPP 指定的ioctl命令無法實現,例如在SIO_SET_QOS或SIO_SET_GROUP_QOS中指定的流描述無法實現。
WSA_IO_PENDING 一個重疊操作被成功啟動,過後將報告完成情況。
WSAEWOULDBLOCK 套接口標誌為非阻塞,且所需操作將產生阻塞。
另請參閱:socket(), ioctlsocket(), WSASocket(),setsockopt(), GETSOCKOPT().