FwpsPendOperation0 函式 (fwpsk.h)
FwpsPendOperation0 函式是由圖說文字呼叫,以暫停封包處理暫止另一項作業完成。
語法
NTSTATUS FwpsPendOperation0(
[in] HANDLE completionHandle,
[out] HANDLE *completionContext
);
參數
[in] completionHandle
筆跡目前篩選作業所需的完成句柄。 此參數是從傳遞至圖說驅動程式 classifyFn 函式之 FWPS_INCOMING_METADATA_VALUES0 結構 成員 completionHandle 取得。
[out] completionContext
這個畫筆作業完成內容的句柄。 當圖說文字準備好繼續封包處理時,它會呼叫 FwpsCompleteOperation0 函式,並將此參數的值當做 input completionContext 參數。
傳回值
FwpsPendOperation0 函式會傳回下列其中一個 NTSTATUS 程式代碼。
傳回碼 | 描述 |
---|---|
|
封包處理已成功畫筆。 |
|
已呼叫重新授權分類作業中的 FwpsPendOperation0。 如需詳細資訊,請參閱。 |
|
一或多個參數無效。 |
|
TCP/IP 網路堆疊尚未準備好允許此作業。 |
|
發生錯誤。 |
言論
圖說文字應該保留 completionContext 參數值,直到它繼續封包處理為止。 當提示呼叫此函式的作業已完成時,圖說文字應該呼叫 FwpsCompleteOperation0 函式,並傳遞 completionContext 參數值。
圖說文字只能呼叫此函式,將源自 FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_ Xxx、FWPM_LAYER_ALE_AUTH_LISTEN_ Xxx或 FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx篩選層的封包寫入。 圖說文字可以在圖說文字必須在其中一個層上執行處理時,在封包上畫上目前的處理作業,這些層可能需要很長的間隔才能完成,或者如果目前的 IRQL > PASSIVE_LEVEL,則應該發生在 IRQL = PASSIVE_LEVEL。
若要完成先前在 FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx 層上畫上的連接,圖說驅動程式必須重新檢視在該層複製的封包,以及呼叫 FwpsCompleteOperation0 函式。
為了能夠寫入封包處理,圖說文字驅動程式的 classifyFn 函式應該將 FWPS_CLASSIFY_OUT0 結構的 actionType 成員設定為 FWP_ACTION_BLOCK,並將 旗標 成員設定為 FWPS_CLASSIFY_OUT_FLAG_ABSORB。
FwpsCompleteOperation0 函式執行之後,會重新驗證 Pended 連線。 如果允許,TCP 聯機會藉由完成交握作業來建立,但非 TCP 連線只會建立狀態專案。 FwpsPendOperation0 函式完成時,會從記憶體排清任何畫筆封包數據,因此應用程式必須在 FwpsCompleteOperation0 執行之後重新傳輸這些封包。 圖說文字可以緩衝處理這類數據,並代表其重新檢視數據。
呼叫 FwpsPendOperation0 和 FwpsCompleteOperation0,才能延後初始應用層強制執行 (ALE) 流程授權。 如果重新授權 ALE 流程,則會設定FWP_CONDITION_FLAG_IS_REAUTHORIZE旗標。 從 FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx 或 FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx篩選層呼叫 會失敗,如果設定FWP_CONDITION_FLAG_IS_REAUTHORIZE旗標,則會傳回STATUS_FWP_CANNOT_PEND狀態代碼 FwpsPendOperation 0 的呼叫。 如需詳細資訊,請參閱 Windows SDK 中的 ALE 重新授權。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始提供。 |
目標平臺 | 普遍 |
標頭 | fwpsk.h (包括 Fwpsk.h) |
連結庫 | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |