FWPS_INCOMING_METADATA_VALUES0構造体 (fwpsu.h)

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

注意

FWPS_INCOMING_METADATA_VALUES0 は、特定のバージョンの FWPS_INCOMING_METADATA_VALUESです。 詳細については、「 WFP のバージョンに依存しない名前」と「特定のバージョンの 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;
  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

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

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構造体へのポインター。 このメンバーには、FWPS_METADATA_FIELD_PROCESS_PATH フラグがcurrentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。

token

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

processId

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

sourceInterfaceIndex

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

destinationInterfaceIndex

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

compartmentId

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

fragmentMetadata

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

pathMtu

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

completionHandle

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

transportEndpointHandle

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

remoteScopeId

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

controlData

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

controlDataLength

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

packetDirection

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

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

headerIncludeHeader

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

Windows Server 2008、Windows Vista SP1、およびそれ以降のバージョンの Windows でのみ使用できます。

headerIncludeHeaderLength

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

Windows Server 2008、Windows Vista SP1、およびそれ以降のバージョンの Windows でのみ使用できます。

destinationPrefix

宛先プレフィックス。

Windows 7 以降のバージョンの Windows でのみ使用できます。

frameLength

フレームの長さ。

Windows 7 以降のバージョンの Windows でのみ使用できます。

parentEndpointHandle

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

Windows 7 以降のバージョンの Windows でのみ使用できます。

icmpIdAndSequence

ICMP 識別子とシーケンス。

Windows 7 以降のバージョンの Windows でのみ使用できます。

localRedirectTargetPID

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

Windows 7 以降のバージョンの Windows でのみ使用できます。

originalDestination

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

Windows 7 以降のバージョンの Windows でのみ使用できます。

redirectRecords

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

Windows 8 以降のバージョンの Windows でのみ使用できます。

currentL2MetadataValues

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

Windows 8 以降のバージョンの Windows でのみ使用できます。

意味
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE ethernetMacHeaderSize メンバーの値は、MAC ヘッダーのサイズを示します。
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE wiFiOperationMode メンバーの値は、現在の Native 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 フラグを含むビットマスク。

Windows 8 以降のバージョンの Windows でのみ使用できます。

意味
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のインジェクション状態になります。

Windows 8 以降のバージョンの Windows でのみ使用できます。

ethernetMacHeaderSize

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

Windows 8 以降のバージョンの Windows でのみ使用できます。

wiFiOperationMode

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

Windows 8 以降のバージョンの Windows でのみ使用できます。

vSwitchPacketContext

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

Windows 8 以降のバージョンの Windows でのみ使用できます。

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と想定する必要があります。

要件

要件
Header fwpsu.h