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
構造体に設定するメタデータ値を指定する
flags
フィルター エンジンによって内部的に使用されます。 吹き出しドライバーは、このメンバーを無視する必要があります。
reserved
システム用に予約されています。 吹き出しドライバーは、このメンバーを無視する必要があります。
discardMetadata
データが破棄された理由を説明する FWPS_DISCARD_METADATA0 構造体。 このメンバーには、FWPS_METADATA_FIELD_DISCARD_REASON フラグが currentMetadataValues メンバーに設定されている場合にのみ、有効なデータが含まれます。
flowHandle
データ フローのハンドル。 このメンバーには、FWPS_METADATA_FIELD_FLOW_HANDLE フラグが currentMetadataValues
メンバーに設定されている場合にのみ、有効なデータが含まれます。
ipHeaderSize
IP ヘッダーのオフセット (バイト単位)。
受信パスでは、ipHeaderSize
次の受信 ICMP エラー レイヤーでは、ipHeaderSize のみを
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
- 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 を含む) |