WSAIoctl()

WSAIoctl()

WSAIoctl(),控制一個套接口的模式。調用成功後,WSAIoctl ()函式返回0。否則的話,將返回SOCKET_ERROR錯誤,應用程式可通過WSAGetLastError()來獲取相應的錯誤代碼

基本介紹

  • 中文名:WSAIoctl()
  • 內容:控制一個套接口
  • 隸屬模式
  • 類型:函式
函式原型,參數,錯誤代碼,

函式原型

#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:將進行的操作的控制代碼,即你所需要操控的類型,有如下幾種:
SIO_ASSOCIATE_HANDLE;
SIO_ENABLE_CIRCULAR_QUEUEING;
SIO_FIND_ROUTE;
SIO_FLUSH ;
SIO_GET_BROADCAST_ADDRESS;
SIO_GET_EXTENSION_FUNCTION_POINTER;
SIO_GET_QOS;
SIO_GET_GROUP_QOS;
SIO_MULTIPOINT_LOOPBACK;
SIO_MULTICAST_SCOPE;
SIO_SET_QOS;
SIO_SET_GROUP_QOS;
SIO_TRANSLATE_HANDLE;
SIO_ROUTING_INTERFACE_QUERY;
SIO_ROUTING_INTERFACE_CHANGE;
SIO_ADDRESS_LIST_QUERY;
SIO_ADDRESS_LIST_CHANGE;
SIO_QUERY_TARGET_PNP_HANDLE。
lpvInBuffer:
輸入緩衝區的地址(如果你想指定一個函式對套接字進行控制,這裡可以是一個guid,指定這個控制函式的guid)。
cbInBuffer:
輸入緩衝區的大小(這裡為guid的大小,即sizeof(&guid))。
lpvOutBuffer:
輸出緩衝區的地址(這裡即是函式指針的地址)。
cbOutBuffer:
輸出緩衝區的大小(函式指針的大小)。
lpcbBytesReturned:
輸出實際位元組數的地址。
lpOverlapped:
WSAOVERLAPPED結構的地址(一般為NULL)。
lpCompletionRoutine:
一個指向操作結束後調用的例程指針(一般為NULL)。

錯誤代碼

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().

相關詞條

熱門詞條

聯絡我們