FwpsInjectionHandleCreate0 関数 (fwpsk.h)
FwpsInjectionHandleCreate0 関数は、パケットインジェクション関数 使用して、パケットまたはストリーム データを TCP/IP ネットワーク スタックに挿入したり、FwpsQueryPacketInjectionState0 関数でパケット挿入状態を照会したりするために使用できるハンドルを作成します。
構文
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 コードを返します。
リターン コード | 形容 |
---|---|
|
インジェクション ハンドルが正常に作成されました。 |
|
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 |