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 ヘッダーのオフセット (バイト単位)。
受信パスでは、 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
受信したパケット フラグメントのフラグメント データを記述する 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 |