FWPS_INCOMING_METADATA_VALUES0 構造体 (fwpsk.h)
FWPS_INCOMING_METADATA_VALUES0構造体は、フィルター エンジンが吹き出しの classifyFn 吹き出し関数に渡すメタデータ値を定義します。
構文
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 ヘッダーのオフセット (バイト単位)。
受信パスでは、 ipHeaderSize が transportHeaderSize メンバーと組み合わせて使用される場合、データ オフセットの場所から 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) 接続または受信/受け入れレイヤーで設定されます。 詳細については、「解説」を参照してください。
headerIncludeHeader
パケットが生のソケットから送信される場合は、IP ヘッダーへのポインター。
headerIncludeHeaderLength
headerIncludeHeader によって指される IP ヘッダーの長さ (バイト単位)。
destinationPrefix
宛先プレフィックス。
frameLength
フレームの長さ。
parentEndpointHandle
エンドポイントの親のハンドル。
icmpIdAndSequence
ICMP 識別子とシーケンス。
localRedirectTargetPID
リダイレクトされた接続を担当するプロセスの PID。
originalDestination
リダイレクトされた接続の元の宛先。
redirectRecords
リダイレクト状態を取得するために FwpsQueryConnectionRedirectState0 関数に渡すことができるリダイレクト レコード ハンドル。
currentL2MetadataValues
設定するレイヤー 2 値を指定するフラグを含むビットマスク。 1 つ以上の値をビットごとの OR と組み合わせることができます。
l2Flags
ビットごとの OR と組み合わせることができるレイヤー 2 フラグを含むビットマスク。
ethernetMacHeaderSize
FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE フラグが設定されている場合の MAC ヘッダーのサイズ (バイト単位)。 このフラグは、受信 802.3 レイヤーにのみ設定されます。
wiFiOperationMode
FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE フラグが設定されている場合の現在の Native 802.11 操作モード。 詳細については、「 DOT11_CURRENT_OPERATION_MODE」を参照してください。
vSwitchSourcePortId
仮想スイッチ上のソース ポートの一意識別子。
vSwitchSourceNicIndex
仮想スイッチ上のソース NIC のインデックス。
vSwitchDestinationPortId
仮想スイッチの宛先ポートの一意識別子。
padding0
予約済み。
padding1
予約済み。
padding2
予約済み。
vSwitchPacketContext
仮想スイッチ パケット コンテキストへのハンドル。
subProcessTag
予約済み。
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 接続または受信/受け入れレイヤーでは、 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 以降で使用できます。 |
Header | fwpsk.h (Fwpsk.h を含む) |
こちらもご覧ください
FWPS_INBOUND_FRAGMENT_METADATA0フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示