次の方法で共有


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

ストリーム データは、〘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 つのインジェクション ハンドルを作成する必要があります。1 つは addressFamily をAF_INETに設定した 呼び出し、2 つ目の呼び出しでは addressFamily がAF_INET6に設定されています。

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー fwpsk.h (Fwpsk.h を含む)
ライブラリ Fwpkclnt.lib
IRQL PASSIVE_LEVEL

関連項目

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

パケット インジェクション関数の