CAsyncSocket::IOCtl
呼叫此成員函式控制通訊端的方式。
BOOL IOCtl(
long lCommand,
DWORD* lpArgument
);
參數
lCommand
命令會執行通訊端。lpArgument
對應至參數的指標 lCommand的。
傳回值
如果不是零,則函式成功,否則 0 和特定錯誤碼來呼叫 GetLastError擷取。 下列錯誤套用至這個成員函式:
WSANOTINITIALISED A 成功 AfxSocketInit 必須在使用此 API 之前發生。
WSAENETDOWN 視窗通訊端實作偵測網路子系統失敗。
WSAEINVAL lCommand 不是有效的命令,或 lpArgument 不是 lCommand可接受參數,或無法使用這個命令適用於所提供之通訊端的型別。
封鎖視窗通訊端作業的WSAEINPROGRESS A 正在進行中。
WSAENOTSOCK 描述元不是通訊端。
備註
這個常式。所有通訊端可以在任何狀態。 它是用來取得或擷取使用參數與通訊協定無關的通訊端、和子系統通訊。 支援下列命令:
FIONBIO 可啟用或停用在通訊端上未封鎖模式。 在 DWORD的 lpArgument 參數指向,為非零的值,如果未封鎖模式是啟用和零,如果要停用。 如果 AsyncSelect 通訊端上發行,則嘗試使用 IOCtl 將通訊端到區塊模式而失敗 WSAEINVAL。 若要將通訊端到區塊模式並防止 WSAEINVAL 錯誤,應用程式必須呼叫以 lEvent 參數的 AsyncSelect 先停用 AsyncSelect 等於 0,然後呼叫 IOCtl。
FIONREAD 決定可讀取與這個通訊端的一個 接收 呼叫的最大位元組數。 在 IOCtl 儲存結果的 DWORD 的 lpArgument 參數指向。 如果這個通訊端是型別 SOCK_STREAM, FIONREAD 傳回可寫入單一 接收資料總數,這通常與通訊端佇列的資料總數。 如果這個通訊端是型別 SOCK_DGRAM, FIONREAD 傳回在通訊端佇列的第一個資料包的大小。
SIOCATMARK 判斷任何 Out-of-Band 資料是否可讀取。 這只適用於任何 Out-of-Band Data 處置型別 SOCK_STREAM 的通訊端 (SO_OOBINLINE) 的內嵌主應用程式工作。 如果 Out-of-Band 資料不會等候讀取作業,會傳回非零。 否則,它會傳回 0,而且在通訊端 (Socket) 或 ReceiveFrom 執行的下一個 接收 會擷取緊接在「標記之前的」部分或全部資料,應用程式應使用 SIOCATMARK 作業判斷資料是否仍存在。 如果在「緊急」(Out-of-Band) 資料之前的任何標準資料,其順序會收到。 ( 接收 或 ReceiveFrom 永遠不會逐漸相同的 Out-Of-Band 和標準資料的呼叫) 的注意事項。在 IOCtl 儲存結果的 DWORD 的 lpArgument 參數指向。
這個函式是 ioctl() 的子集 (使用於 Berkeley 通訊端。 特別是,與 FIOASYNC相等,命令,而 SIOCATMARK 是唯一支援的通訊端層級命令。
需求
Header: afxsock.h