SO_WSK_EVENT_CALLBACK
SO_WSK_EVENT_CALLBACK通訊端選項可讓 WSK 應用程式啟用和停用通訊端的事件回呼函式。 這個通訊端選項僅適用于已登錄至少定義一個事件回呼函式之擴充介面的接聽通訊端、資料包通訊端、連接導向通訊端和基本通訊端。
如果 WSK 應用程式使用這個通訊端選項,在接聽通訊端或資料包通訊端上啟用或停用事件回呼函式,它必須在通訊端系結至本機傳輸位址之後執行此動作。
如果 WSK 應用程式使用這個通訊端選項來啟用或停用連線導向通訊端上的事件回呼函式,它必須在通訊端連線到遠端傳輸位址之後執行此動作。
若要在通訊端上啟用或停用事件回呼函式,WSK 應用程式會使用下列參數呼叫 WskControlSocket 函式。
參數 | 值 |
---|---|
RequestType |
WskSetOption |
ControlCode |
SO_WSK_EVENT_CALLBACK |
Level |
SOL_SOCKET |
InputSize |
sizeof (WSK_EVENT_CALLBACK_CONTROL) |
InputBuffer |
|
OutputSize |
0 |
OutputBuffer |
NULL |
OutputSizeReturned |
NULL |
呼叫 WskControlSocket 函式以在通訊端上啟用事件回呼函式時,WSK 應用程式不會指定 IRP 的指標。
當呼叫 WskControlSocket 函式以停用通訊端上的事件回呼函式時,WSK 應用程式可以選擇性地指定 IRP 的指標。
當 WSK 應用程式呼叫 WskControlSocket 以停用事件回呼函式時,WSK 子系統的行為如下:
如果 WSK 應用程式呼叫 WskControlSocket 函式時,沒有事件回呼函式的進行中呼叫,則會停用事件回呼函式,而且 WskControlSocket 函式會傳回STATUS_SUCCESS。 如果 WSK 應用程式指定 IRP,則 IRP 會以成功狀態完成。
如果 WSK 應用程式呼叫 WskControlSocket 函式且 WSK 應用程式指定了 IRP 時,會停用事件回呼函式的進行中呼叫, WskControlSocket 函式會傳回STATUS_PENDING。 WSK 子系統會停用事件回呼函式,並在傳回事件回呼函式的所有進行中呼叫之後完成 IRP。
如果 WSK 應用程式呼叫 WskControlSocket 函式且 WSK 應用程式未指定 IRP 時,會停用事件回呼函式的進行中呼叫, WskControlSocket 函式會傳回STATUS_EVENT_PENDING。 WSK 子系統會在傳回事件回呼函式的所有進行中呼叫之後停用事件回呼函式。
啟用或停用任何標準 WSK 事件回呼函式時,WSK 應用程式會將WSK_EVENT_CALLBACK_CONTROL結構的NpiId成員設定為 WSK網路程式設計介面的指標, (NPI) 識別碼NPI_WSK_INTERFACE_ID。
啟用或停用擴充介面的任何回呼函式時,WSK 應用程式會將WSK_EVENT_CALLBACK_CONTROL結構的 NpiId 成員設定為該擴充介面之 NPI 識別碼的指標。
啟用事件回呼函式時,WSK 應用程式可以同時啟用事件回呼函式的任何組合,這些函式適用于特定 類別 的 WSK 通訊端。 WSK 應用程式可同時啟用這些組合,方法是將WSK_EVENT_CALLBACK_CONTROL 結構的 EventMask 成員設定為已啟用之所有事件回呼函式的事件旗標位 OR。
停用事件回呼函式時,WSK 應用程式必須個別停用每個事件回呼函式。 WSK 應用程式會藉由將WSK_EVENT_CALLBACK_CONTROL結構的 EventMask 成員設定為已停用的事件回呼函式的位 OR,來獨立停用事件回呼函式,以及WSK_EVENT_DISABLE旗標。
下表顯示接聽通訊端的有效事件旗標。
事件旗標 | 事件回呼函式 |
---|---|
WSK_EVENT_ACCEPT |
下表顯示資料包通訊端的有效事件旗標。
事件旗標 | 事件回呼函式 |
---|---|
WSK_EVENT_RECEIVE_FROM |
下表顯示連接導向通訊端的有效事件旗標。
事件旗標 | 事件回呼函式 |
---|---|
WSK_EVENT_DISCONNECT |
|
WSK_EVENT_RECEIVE |
|
WSK_EVENT_SEND_BACKLOG |
接聽通訊端可以在接聽通訊端接受的連接導向通訊端上自動啟用事件回呼函式。 WSK 應用程式會在接聽通訊端上啟用連線導向通訊端事件回呼函式,自動啟用這些回呼函式。 只有在接聽通訊端的 WskAcceptEvent 事件回呼函式接受通訊端時,才會在接受的連接導向通訊端上自動啟用事件回呼函式。 如果接聽通訊端的 WskAccept 函式接受連接導向通訊端,則不會自動啟用接受的通訊端事件回呼函式。
在接聽通訊端上啟用任何連接導向事件回呼函式之後,就無法在接聽通訊端上停用它們。 如果 WskAcceptEvent 事件回呼函式已停用,然後在接聽通訊端上重新啟用,則原本在該接聽通訊端上啟用的任何連線導向事件回呼函式都會繼續套用至 WskAcceptEvent 事件回呼函式所接受的所有連線導向通訊端。
如需啟用和停用通訊端事件回呼函式的詳細資訊,請參閱 啟用和停用事件回呼函式。
規格需求
版本 |
可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
標頭 |
Wsk.h (包含 Wsk.h) |