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 以降で使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | fwpsk.h (Fwpsk.h を含む) |
ライブラリ | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |