FWPS_INCOMING_METADATA_VALUES0構造体 (fwpsk.h)

FWPS_INCOMING_METADATA_VALUES0 構造体は、フィルター エンジンが吹き出しの classifyFn 吹き出し関数に渡すメタデータ値を定義します。

手記

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

構文

typedef struct FWPS_INCOMING_METADATA_VALUES0_ {
  UINT32                          currentMetadataValues;
  UINT32                          flags;
  UINT64                          reserved;
  FWPS_DISCARD_METADATA0          discardMetadata;
  UINT64                          flowHandle;
  UINT32                          ipHeaderSize;
  UINT32                          transportHeaderSize;
  FWP_BYTE_BLOB                   *processPath;
  UINT64                          token;
  UINT64                          processId;
  UINT32                          sourceInterfaceIndex;
  UINT32                          destinationInterfaceIndex;
  ULONG                           compartmentId;
  FWPS_INBOUND_FRAGMENT_METADATA0 fragmentMetadata;
  ULONG                           pathMtu;
  HANDLE                          completionHandle;
  UINT64                          transportEndpointHandle;
  SCOPE_ID                        remoteScopeId;
  WSACMSGHDR                      *controlData;
  ULONG                           controlDataLength;
  FWP_DIRECTION                   packetDirection;
  PVOID                           headerIncludeHeader;
  ULONG                           headerIncludeHeaderLength;
  IP_ADDRESS_PREFIX               destinationPrefix;
  UINT16                          frameLength;
  UINT64                          parentEndpointHandle;
  UINT32                          icmpIdAndSequence;
  DWORD                           localRedirectTargetPID;
  SOCKADDR                        *originalDestination;
  HANDLE                          redirectRecords;
  UINT32                          currentL2MetadataValues;
  UINT32                          l2Flags;
  UINT32                          ethernetMacHeaderSize;
  UINT32                          wiFiOperationMode;
  NDIS_SWITCH_PORT_ID             vSwitchSourcePortId;
  NDIS_SWITCH_NIC_INDEX           vSwitchSourceNicIndex;
  NDIS_SWITCH_PORT_ID             vSwitchDestinationPortId;
  UINT32                          padding0;
  USHORT                          padding1;
  UINT32                          padding2;
  HANDLE                          vSwitchPacketContext;
  PVOID                           subProcessTag;
  UINT64                          reserved1;
} FWPS_INCOMING_METADATA_VALUES0;

メンバーズ

currentMetadataValues

構造体に設定するメタデータ値を指定する メタデータ フィールド識別子の組み合わせのビットごとの OR を含む UINT32 値。

flags

フィルター エンジンによって内部的に使用されます。 吹き出しドライバーは、このメンバーを無視する必要があります。

reserved

システム用に予約されています。 吹き出しドライバーは、このメンバーを無視する必要があります。

discardMetadata

データが破棄された理由を説明する FWPS_DISCARD_METADATA0 構造体。 このメンバーには、FWPS_METADATA_FIELD_DISCARD_REASON フラグが currentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。

flowHandle

データ フローのハンドル。 このメンバーには、FWPS_METADATA_FIELD_FLOW_HANDLE フラグが currentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。

ipHeaderSize

IP ヘッダーのオフセット (バイト単位)。

受信パスでは、ipHeaderSizetransportHeaderSize メンバーと組み合わせて使用する場合、データ オフセット位置から IP ヘッダーの先頭に退避するバイト数を指定します。

次の受信 ICMP エラー レイヤーでは、ipHeaderSize のみを 、データ オフセットから IP ヘッダーの先頭に退避する合計バイト数を指定します。

FWPS_LAYER_INBOUND_ICMP_ERROR_V4

FWPS_LAYER_INBOUND_ICMP_ERROR_V6

FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD

FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD

送信パスで、ipHeaderSize が 0 より大きい場合は、データ オフセット位置から IP ヘッダーの末尾に進むバイト数を指定します。

このメンバーは、次のレイヤーの送信パスには適用されません。

FWPS_LAYER_DATAGRAM_DATA_V4

FWPS_LAYER_DATAGRAM_DATA_V6

FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD

FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD

このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_IP_HEADER_SIZE フラグが設定されている場合にのみ、有効なデータが含まれます。

transportHeaderSize

トランスポート ヘッダーのオフセットまたはサイズ (バイト単位)。

受信パスでは、transportHeaderSize データ オフセット位置からトランスポート ヘッダーの末尾に退避するバイト数を指定します。

次の受信 ICMP エラー レイヤーで、transportHeaderSize ICMP ヘッダーのサイズを指定します。

  • FWPS_LAYER_INBOUND_ICMP_ERROR_V4
  • FWPS_LAYER_INBOUND_ICMP_ERROR_V6
  • FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD
  • FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD

送信パスでは、transportHeaderSize 、データ オフセット位置からトランスポート ヘッダーの末尾に進むバイト数を指定します。

このメンバーには、FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE フラグが currentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。

processPath

エンドポイントを所有するプロセスへの完全なパスを含む FWP_BYTE_BLOB 構造体へのポインター。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_PROCESS_PATH フラグが設定されている場合にのみ、有効なデータが含まれます。

token

ユーザーのアクセス許可を検証するために使用されるトークンのハンドル。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_TOKEN フラグが設定されている場合にのみ、有効なデータが含まれます。

processId

エンドポイントを所有するプロセスのプロセス ID。 このメンバーには、FWPS_METADATA_FIELD_PROCESS_ID フラグが currentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。

sourceInterfaceIndex

受信パケットが受信されたネットワーク インターフェイスのインデックス。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX フラグが設定されている場合にのみ、有効なデータが含まれます。

destinationInterfaceIndex

送信パケットが送信されるネットワーク インターフェイスのインデックス。 このメンバーには、FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX フラグが currentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。

compartmentId

パケットが受信されたか、または送信されているルーティング コンパートメントの識別子。 変更されたパケットは、元のパケットに対して示されているのと同じルーティング コンパートメントに再度挿入する必要があります。 このメンバーには、FWPS_METADATA_FIELD_COMPARTMENT_ID フラグが currentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。

fragmentMetadata

受信したパケット フラグメントのフラグメント データを記述する FWPS_INBOUND_FRAGMENT_METADATA0 構造体。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_FRAGMENT_DATA フラグが設定されている場合にのみ、有効なデータが含まれます。

pathMtu

送信パケットのパス最大伝送単位 (パス MTU)。 この値は、ネットワークが断片化せずに送信できる最大の物理パケット サイズ (バイト単位) を示します。このメンバーには、FWPS_METADATA_FIELD_PATH_MTU フラグが currentMetadataValues メンバーに設定されている場合にのみ有効なデータが含まれます。

completionHandle

現在のフィルター処理操作をペン処理するために必要な完了ハンドル。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_COMPLETION_HANDLE フラグが設定されている場合にのみ、有効なデータが含まれます。

transportEndpointHandle

送信トランスポート層に挿入されるパケットの末尾を示すエンドポイント ハンドル。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE フラグが設定されている場合にのみ、有効なデータが含まれます。

remoteScopeId

送信トランスポート層の挿入で使用されるリモート スコープ識別子。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_REMOTE_SCOPE_ID フラグが設定されている場合にのみ、有効なデータが含まれます。

controlData

省略可能なソケット コントロール データ オブジェクト。 このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA フラグが設定されている場合にのみ、有効なデータが含まれます。 WSACMSGHDR タイプの詳細については、CMSGHDRを参照してください。

controlDataLength

controlData メンバーの長さ (バイト単位)。

packetDirection

FWP_DIRECTIONの定数値の 1 つで指定されたネットワーク トラフィックの方向 (受信または送信)。 このメンバーは、再認証の分類操作中に、アプリケーション 層強制 (ALE) 接続または受信/受け入れレイヤーで設定されます。 詳細については、「解説」セクションを参照してください。

手記

このメンバーには、currentMetadataValues メンバーにFWPS_METADATA_FIELD_PACKET_DIRECTION フラグが設定されている場合にのみ、有効なデータが含まれます。

headerIncludeHeader

パケットが生ソケットから送信される場合の IP ヘッダーへのポインター。

headerIncludeHeaderLength

headerIncludeHeaderが指す IP ヘッダー 長さ (バイト単位)。

destinationPrefix

宛先プレフィックス。

frameLength

フレームの長さ。

parentEndpointHandle

エンドポイントの親のハンドル。

icmpIdAndSequence

ICMP 識別子とシーケンス。

localRedirectTargetPID

リダイレクトされた接続を担当するプロセスの PID。

originalDestination

リダイレクトされた接続の元の宛先。

redirectRecords

リダイレクト状態を取得するために、FwpsQueryConnectionRedirectState0 関数に渡すことができるリダイレクト レコード ハンドル。

currentL2MetadataValues

設定するレイヤー 2 の値を指定するフラグを含むビットマスク。 1 つ以上の値をビットごとの OR と組み合わせることができます。

価値 意味
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE ethernetMacHeaderSize メンバーの値は、MAC ヘッダーのサイズを示します。
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE wiFiOperationMode メンバーの値は、現在のネイティブ 802.11 操作モードを示します。
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID vSwitchSourcePortId メンバーの値は、仮想スイッチのソース ポートの識別子を示します。
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX vSwitchSourceNicIndex メンバーの値は、仮想スイッチのソース NIC のインデックスを示します。
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT vSwitchPacketContext メンバーの値は、仮想スイッチ パケット コンテキストへの HANDLE を示します。
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID vSwitchDestinationPortId メンバーの値は、仮想スイッチの宛先ポートの識別子を示します。

l2Flags

ビットごとの OR と組み合わせることができるレイヤー 2 フラグを含むビットマスク。

価値 意味
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING 生 IP4 フレーミングを示します。
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING 生 IP6 フレーミングを示します。
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION このフラグは、イングレスで 1 回見られた NBL が複数の NBL に配布され、それぞれが異なる VM 宛てであり、このディストリビューションの最初の NBL がコールアウト ドライバーに既に示されていることを示します。

分散グループの最初の NBL には、このフラグは設定されません。 グループの後続のすべての NBL には、このフラグが設定されます。

挿入を目的として、コールアウト ドライバーは NBL を複製し、元のパケットをブロックして吸収し、最初の表示のFWPS_RIGHT_ACTION_WRITE フラグをクリアする必要があります。 次に、複製を変更し、イングレス パスに挿入します。

それ以降のすべての表示については、元のパケットをブロックして吸収し、複製のFWPS_RIGHT_ACTION_WRITEフラグをクリアする必要があります。 挿入された複製がイングレスから出ると、再配布され、すべての兆候がFWPS_PACKET_INJECTED_BY_SELFまたはFWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELFのインジェクション状態になります。

ethernetMacHeaderSize

FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE フラグが設定されている場合の MAC ヘッダーのサイズ (バイト単位)。 このフラグは、受信 802.3 レイヤーにのみ設定されます。

wiFiOperationMode

FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE フラグが設定されている場合の現在のネイティブ 802.11 操作モード。 詳細については、DOT11_CURRENT_OPERATION_MODEを参照してください。

vSwitchSourcePortId

仮想スイッチのソース ポートの一意識別子。

vSwitchSourceNicIndex

仮想スイッチ上のソース NIC のインデックス。

vSwitchDestinationPortId

仮想スイッチの宛先ポートの一意の識別子。

padding0

引っ込み思案。

padding1

引っ込み思案。

padding2

引っ込み思案。

vSwitchPacketContext

仮想スイッチ パケット コンテキストへのハンドル。

subProcessTag

引っ込み思案。

reserved1

引っ込み思案。

備考

フィルター エンジンは、吹き出しの classifyFn 吹き出し関数にFWPS_INCOMING_METADATA_VALUES0構造体へのポインターを渡します。 構造体に含まれるメタデータ値はフィルター エンジンによって処理されませんが、追加情報を提供するために吹き出しの classifyFn 吹き出し関数に提供されます。

吹き出しドライバーは、次のマクロを使用して、特定のメタデータ値がFWPS_INCOMING_METADATA_VALUES0構造体に存在するかどうかをテストできます。

FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)

FWPS_METADATA_FIELD_PACKET_DIRECTIONメタデータ値がFWPS_INCOMING_METADATA_VALUES0構造体に存在する場合、packetDirection メンバーは、再認証の分類操作中にパケットが受信または送信されたかどうかを指定します。 それ以外の場合、FWPS_METADATA_FIELD_PACKET_DIRECTIONメタデータ値は存在しません。

コールアウト ドライバーは、パケットを検査するときに、次のガイドラインに従う必要があります。

  • ALE 接続または受信/受け入れレイヤーでは、packetDirection が FWP_DIRECTION_OUTBOUND に設定され、FWPS_METADATA_FIELD_PACKET_DIRECTIONメタデータ値が存在する場合 パケットに有効な IP ヘッダーが含まれていると、コールアウト ドライバーは想定しないでください。
  • ALE 接続レイヤーで、FWPS_METADATA_FIELD_PACKET_DIRECTIONメタデータ値が存在しない場合、引き出しドライバーはパケット方向のFWP_DIRECTION_OUTBOUNDを想定する必要があります。
  • ALE 受信/受け入れ層で、FWPS_METADATA_FIELD_PACKET_DIRECTIONメタデータ値が存在しない場合、引き出しドライバーはFWP_DIRECTION_INBOUNDのパケット方向を想定する必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降で使用できます。
ヘッダー fwpsk.h (Fwpsk.h を含む)

関連項目