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

このメンバーには、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

An 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 でのみ使用できます。
 

vSwitchSourcePortId

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

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

vSwitchSourceNicIndex

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

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

vSwitchDestinationPortId

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

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

padding0

予約済み。

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

padding1

予約済み。

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

padding2

予約済み。

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

vSwitchPacketContext

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

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

subProcessTag

予約済み。

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

reserved1

注釈

フィルター エンジンは、FWPS_INCOMING_METADATA_VALUES0構造体へのポインターを吹き出しの classifyFn 吹き出し関数に渡します。 構造体に含まれるメタデータ値はフィルター エンジンによって処理されませんが、追加情報を提供するために吹き出しの 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 接続または受信/受け入れレイヤーでは、 packetDirectionFWP_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 以降で使用できます。
Header fwpsk.h (Fwpsk.h を含む)

こちらもご覧ください

CMSGHDR

FWPS_DISCARD_METADATA0

FWPS_INBOUND_FRAGMENT_METADATA0

FWP_BYTE_BLOB

FWP_DIRECTION

FwpsQueryConnectionRedirectState0

NET_BUFFER_LIST

classifyFn