PFN_WSK_INSPECT_EVENT回呼函式 (wsk.h)

WskInspectEvent 事件回呼函式會通知 WSK 應用程式在已啟用條件式接受模式的接聽套接字上收到傳入連線要求。

語法

PFN_WSK_INSPECT_EVENT PfnWskInspectEvent;

WSK_INSPECT_ACTION PfnWskInspectEvent(
  [in, optional] PVOID SocketContext,
  [in]           PSOCKADDR LocalAddress,
  [in]           PSOCKADDR RemoteAddress,
  [in, optional] PWSK_INSPECT_ID InspectID
)
{...}

參數

[in, optional] SocketContext

接收傳入連接要求的接聽套接字之套接字內容的指標。 當 WskSocket 函式呼叫 WskSocket 函式以建立接聽套接字時,WSK 應用程式會提供 WSK 子系統的這個指標。

[in] LocalAddress

緩衝區的指標,其中包含傳入連接要求抵達的本機傳輸位址。 緩衝區包含特定的 SOCKADDR 結構類型,其對應至建立接聽套接字時所指定的 WSK 應用程式所指定的位址系列。

[in] RemoteAddress

緩衝區的指標,其中包含傳入連接要求的來源遠端傳輸位址。 緩衝區包含特定的 SOCKADDR 結構類型,其對應至建立接聽套接字時所指定的 WSK 應用程式所指定的位址系列。

[in, optional] InspectID

WSK_INSPECT_ID 結構的指標。 結構的內容會識別正在檢查的連入連線要求。 如果此指標為 NULL,則接聽套接字已不再運作,且 WSK 應用程式必須呼叫 WskCloseSocket 函式,儘快關閉接聽套接字。

傳回值

WSK 應用程式的 WskInspectEvent 事件回呼函式可以傳回下列其中一個WSK_INSPECT_ACTION值:

傳回碼 Description
WskInspectAccept
接受傳入連線要求。
WskInspectReject
連入連線要求遭到拒絕。
WskInspectPend
WSK 應用程式無法判斷是否應該立即接受或拒絕傳入連線要求。

備註

WSK 子系統會在已啟用條件式接受模式的接聽套接字上呼叫 WSK 應用程式的 WskInspectEvent 事件回呼函式。 WSK 應用程式可以啟用接聽套接字的條件式接受模式,方法是啟用 SO_CONDITIONAL_ACCEPT 套接字選項。 如需條件式接受連入連線的詳細資訊,請參閱接聽和接受傳入 Connections

如果 WSK 應用程式從 WskInspectEvent 事件回呼函式傳回 WskInspectAccept,WSK 子系統會繼續建立套接字連線。 WSK 子系統會完成對 WskAccept 函式的呼叫,或藉由在啟用事件回呼函式時呼叫 WSK 應用程式的 WskAcceptEvent 事件回呼函式,將套接字傳回至 WSK 應用程式。 如果在完全建立套接字連線之前卸除傳入連線要求,WSK 子系統會呼叫 WSK 應用程式的 WskAbortEvent 事件回呼函式。

如果 WSK 應用程式從 WskInspectEvent 事件回呼函式傳回 WskInspectReject,就會卸除連入連線要求,而且不會建立套接字連線。

如果 WSK 應用程式從 WskInspectEvent 事件回呼函式傳回 WskInspectPend,則應用程式必須在判斷傳入連線要求是否應該接受或 (拒絕之後呼叫 WskInspectComplete 函式,除非傳入連線要求在同時) 中止。 WSK 應用程式必須在從 WskInspectEvent 事件回呼函式傳回之前,先將 InspectID 參數指向的 WSK_INSPECT_ID 結構的內容複製到自己的WSK_INSPECT_ID結構。 WSK 應用程式會在完成檢查時,將指標傳遞給其本身WSK_INSPECT_ID結構至 WskInspectComplete 函式。 如果要求在檢查完成之前中止,WSK 應用程式也會使用此結構來識別傳入連線要求。

LocalAddressRemoteAddress 參數所指向的 SOCKADDR 結構只有在呼叫 WskInspectEvent 事件回呼函式的持續時間才有效。 如果 WSK 應用程式從 WskInspectEvent 事件回呼函式傳回 WskInspectPend,而且在檢查其餘部分需要這些傳輸位址時,它必須先將這些結構的內容複製到自己的 SOCKADDR 結構,再從 WskInspectEvent 事件回呼函式傳回。

WSK 子系統會在 IRQL <= DISPATCH_LEVEL呼叫 WSK 應用程式的 WskInspectEvent 事件回呼函式。

WSK 應用程式的 WskInspectEvent 事件回呼函式不得等候 WSK 完成或事件回呼函式內容中的其他 WSK 要求完成。 回呼可以起始其他 WSK 要求, (假設它不會花費太多時間DISPATCH_LEVEL) ,但即使在 IRQL = PASSIVE_LEVEL呼叫回呼,它也必須不等候完成。

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 Windows
標頭 wsk.h (包含 Wsk.h)
IRQL <= DISPATCH_LEVEL

另請參閱

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket