次の方法で共有


FwpsInjectionHandleCreate0 関数 (fwpsk.h)

FwpsInjectionHandleCreate0 関数は、パケットインジェクション関数が TCP/IP ネットワーク スタックにパケットまたはストリーム データを挿入し、FwpsQueryPacketInjectionState0 関数でパケットインジェクション状態を照会するために使用できるハンドルを作成します。

FwpsInjectionHandleCreate0 は、 FwpsInjectionHandleCreate の特定のバージョンです。 詳細については、「 WFP Version-Independent 名と特定のバージョンの Windows を対象 とする」を参照してください。
 

構文

NTSTATUS FwpsInjectionHandleCreate0(
  [in, optional] ADDRESS_FAMILY addressFamily,
  [in]           UINT32         flags,
  [out]          HANDLE         *injectionHandle
);

パラメーター

[in, optional] addressFamily

挿入ハンドルが作成されるアドレス ファミリ。 これには、次のいずれかのアドレス ファミリを指定できます。

AF_UNSPEC

アドレス ファミリが指定されていません。

AF_INET

IPv4 アドレス ファミリ。

AF_INET6

IPv6 アドレス ファミリ。

トランスポート、ストリーム、および前方挿入の場合、このパラメーターは省略可能であり、指定されていないアドレス ファミリを示すAF_UNSPECに設定できます。 この値は Ws2def.h で定義されています。

[in] flags

挿入するデータの種類を示すためにコールアウト ドライバーによって設定されるフラグ値。 このフラグには、次の 1 つ以上の値を指定できます。

FWPS_INJECTION_TYPE_FORWARD

パケット データは、 を呼び出すことによって挿入されます。 FwpsInjectForwardAsync0 関数。

FWPS_INJECTION_TYPE_NETWORK

ネットワーク データは、次のいずれかを呼び出すことによって挿入されます。 FwpsInjectNetworkReceiveAsync0 関数または FwpsInjectNetworkSendAsync0 関数。

FWPS_INJECTION_TYPE_STREAM

Streamデータは、 を呼び出すことによって挿入されます。 FwpsStreamInjectAsync0 関数。

FWPS_INJECTION_TYPE_TRANSPORT

トランスポート データは、次のいずれかを呼び出すことによって挿入されます。 FwpsInjectTransportReceiveAsync0 関数または FwpsInjectTransportSendAsync0 関数。

複数の挿入関数で使用されるインジェクション ハンドルを作成するには、インジェクションの種類のビットをビットごとの OR 演算と組み合わせます。 フラグ値が 0 に設定されている場合、結果のインジェクション ハンドルをトランスポート、ストリーム、および前方挿入に使用できます。

[out] injectionHandle

ハンドルを受け取る変数へのポインター。

戻り値

FwpsInjectionHandleCreate0 関数は、次のいずれかの NTSTATUS コードを返します。

リターン コード 説明
STATUS_SUCCESS
インジェクション ハンドルが正常に作成されました。
STATUS_FWP_TCPIP_NOT_READY
TCP/IP ネットワーク スタックの準備ができていません。 コールアウト ドライバーは、後で FwpsInjectionHandleCreate0 関数を再度呼び出して、インジェクション ハンドルを作成する必要があります。
その他の状態コード
エラーが発生しました。

解説

コールアウト ドライバーは FwpsInjectionHandleCreate0 関数を呼び出して、パケットまたはストリーム データを TCP/IP ネットワーク スタックに挿入し、パケットインジェクション状態を照会するために使用できるハンドルを作成します。 コールアウト ドライバーは、作成されたハンドルを パケット インジェクション関数 に渡し、 FwpsQueryPacketInjectionState0

吹き出しドライバーは、インジェクション ハンドルの使用が完了した後、 FwpsInjectionHandleDestroy0 関数を呼び出してハンドルを破棄する必要があります。 保留中のインジェクションがまだ完了していない場合、この関数は完了するまで待ってから戻ります。

ネットワーク 層に対してインジェクションが行われ、IPv4 アドレス ファミリと IPv6 アドレス ファミリの両方がフィルター処理されている場合、引き出しドライバーは 、FwpsInjectionHandleCreate0 関数を 2 回呼び出して 2 つのインジェクション ハンドルを作成する必要があります。 addressFamily を AF_INET に設定した呼び出しと、 addressFamily を AF_INET6 に設定した 2 回目の呼び出しです。

MAC レイヤー (*MAC_FRAME_NATIVE、*MAC_FRAME_ETHERNET、*VSWITCH_ETHERNET) では、FWPS_INJECTION_TYPE_L2 フラグで取得したのと同じインジェクション ハンドルを使用できます。 インジェクション タイプは、レイヤーよりも射出関数に近い位置に関連付けられます。

コード例については、「 WFPSampler HelperFunctions_InjectionData.cpp」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista 以降で使用できます。
対象プラットフォーム ユニバーサル
Header fwpsk.h (Fwpsk.h を含む)
Library Fwpkclnt.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

パケット挿入関数