FwpsPendOperation0 函式 (fwpsk)

FwpsPendOperation0函式是由標注呼叫,以暫止完成另一項作業的封包處理。

注意 FwpsPendOperation0FwpsPendOperation的特定版本。 如需詳細資訊,請參閱WFP Version-Independent 名稱,並以特定版本的 Windows 為目標

語法

NTSTATUS FwpsPendOperation0(
  [in]  HANDLE completionHandle,
  [out] HANDLE *completionContext
);

參數

[in] completionHandle

暫止目前篩選作業所需的完成控制碼。 此參數是從傳遞至標注驅動程式classifyFn函式FWPS_INCOMING_METADATA_VALUES0結構的completionHandle成員取得。

[out] completionContext

這個暫止作業的完成內容控制碼。 當標注準備好繼續進行封包處理時,它會呼叫 FwpsCompleteOperation0 函式,並將此參數的值做為輸入的 completionCoNtext 參數。

傳回值

FwpsPendOperation0函式會傳回下列其中一個 NTSTATUS 程式碼。

傳回碼 Description
STATUS_SUCCESS
已成功暫止封包處理。
STATUS_FWP_CANNOT_PEND
已在重新授權分類作業中對 FwpsPendOperation0 進行呼叫。 如需詳細資訊,請參閱<備註>。
STATUS_FWP_Null_POINTER
一或多個參數無效。
STATUS_FWP_TCPIP_NOT_READY
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 層暫止的連接,標注驅動程式必須 reinject 在該層複製的封包,以及呼叫 FwpsCompleteOperation0 函式。

為了能夠暫止封包處理,callout 驅動程式的classifyFn函式應該將FWPS_CLASSIFY_OUT0結構的actionType成員設定為 FWP_ACTION_BLOCK,並將旗標成員設定為 FWPS_CLASSIFY_OUT_FLAG_ABSORB。

FwpsCompleteOperation0函式執行之後,會重新驗證擱置的連接。 TCP 連接(如果允許)是藉由完成交握作業所建立,但是非 TCP 連線只會建立狀態專案。 當 FwpsPendOperation0 函式完成時,所有擱置中的封包資料都會從記憶體中清除,因此應用程式必須在執行 FwpsCompleteOperation0 後重新傳輸這些封包。 標注可以緩衝這類資料,並代表其 reinject 資料。

只有初始應用層強制執行 (ALE) flow 授權可以藉由呼叫 FwpsPendOperation0FwpsCompleteOperation0來延後。 如果已重新授權 ALE 流程,就會設定 FWP_CONDITION_FLAG_IS_REAUTHORIZE 旗標。 如果設定了 FWP_CONDITION_FLAG_IS_REAUTHORIZE 旗標,則從 FWPM_LAYER_ALE_AUTH_CONNECT_ xxx或 FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx 篩選層FwpsPendOperation0呼叫會失敗,而且會傳回 STATUS_FWP_CANNOT_PEND 狀態碼。 如需詳細資訊,請參閱 Windows SDK 中的 ALE 重新授權。

規格需求

   
最低支援的用戶端 從 Windows Vista 開始提供。
目標平台 通用
標頭 fwpsk (包含 Fwpsk)
程式庫 Fwpkclnt .lib
IRQL <= DISPATCH_LEVEL

另請參閱

FWPS_CLASSIFY_OUT0

FWPS_INCOMING_METADATA_VALUES0

FwpsCompleteOperation0

classifyFn