FwpsPendOperation0 関数 (fwpsk.h)
FwpsPendOperation0 関数は、別の操作の完了待ちでパケット処理を中断するために、コールアウトによって呼び出されます。
構文
NTSTATUS FwpsPendOperation0(
[in] HANDLE completionHandle,
[out] HANDLE *completionContext
);
パラメーター
[in] completionHandle
現在のフィルター処理操作を実行するために必要な完了ハンドル。 このパラメーターは、コールアウト ドライバーの classifyFn 関数に渡されるFWPS_INCOMING_METADATA_VALUES0構造体の completionHandle メンバーから取得されます。
[out] completionContext
このペン操作の完了コンテキストへのハンドル。 吹き出しがパケット処理を再開する準備ができたら、入力 completionContext パラメーターとしてこのパラメーターの値を使用して FwpsCompleteOperation0 関数を呼び出します。
戻り値
FwpsPendOperation0 関数は、次のいずれかの NTSTATUS コードを返します。
リターン コード | 説明 |
---|---|
|
パケット処理が正常に実行されました。 |
|
再認証分類操作で FwpsPendOperation0 に対して呼び出しが行われました。 詳細については、「解説」を参照してください。 |
|
1 つ以上のパラメーターが無効です。 |
|
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 に設定し、Flags メンバーをFWPS_CLASSIFY_OUT_FLAG_ABSORBする必要があります。
ペンド接続は、 FwpsCompleteOperation0 関数の実行後に再認証されます。 TCP 接続が許可されている場合はハンドシェイク操作を完了することによって作成されますが、TCP 以外の接続では状態エントリのみが作成されます。 FwpsPendOperation0 関数が完了すると、ペンドされたパケット データはメモリからフラッシュされるため、アプリケーションは FwpsCompleteOperation0 の実行後にこれらのパケットを再送信する必要があります。 コールアウトでは、このようなデータをバッファーに格納し、その代わりにデータを再要求できます。
FwpsPendOperation0 と FwpsCompleteOperation0 を呼び出すことで、最初のアプリケーション層強制 (ALE) フロー承認のみを延期できます。 ALE フローが再認証されると、FWP_CONDITION_FLAG_IS_REAUTHORIZE フラグが設定されます。 FWP_CONDITION_FLAG_IS_REAUTHORIZE フラグが設定され、STATUS_FWP_CANNOT_PEND状態コードが返された場合、FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx または FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxxフィルター レイヤーからの FwpsPendOperation0 の呼び出しは失敗します。 詳細については、「Windows SDK での ALE 再認証」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | fwpsk.h (Fwpsk.h を含む) |
Library | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |