共用方式為


FWPS_INCOMING_METADATA_VALUES0 結構 (fwpsu.h)

定義篩選引擎傳遞至圖說文字 的分類Fn 圖說文字函式的元數據值。

注意

FWPS_INCOMING_METADATA_VALUES0 是特定版本的 FWPS_INCOMING_METADATA_VALUES。 如需詳細資訊,請參閱 以特定 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

UINT32 值,其中包含元數據欄位識別碼組合的位 OR,指定結構中設定的元數據值。

flags

篩選引擎在內部使用。 圖說文字驅動程序應該忽略這個成員。

reserved

保留供系統使用。 圖說文字驅動程序應該忽略這個成員。

discardMetadata

FWPS_DISCARD_METADATA0 結構,描述數據遭到捨棄的原因。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_DISCARD_REASON旗標時,這個成員才會包含有效的數據。

flowHandle

數據流的句柄。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_FLOW_HANDLE旗標時,此成員才會包含有效的數據。

ipHeaderSize

IP 標頭的位移,以位元組為單位。

在輸入路徑上,當與 transportHeaderSize 成員搭配使用時,ipHeaderSize 會指定要從數據位移位置到 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 大於零,它會指定要從數據位移位置前進到IP標頭結尾的位元組數目。

此成員不適用於下列層次的輸出路徑:

FWPS_LAYER_DATAGRAM_DATA_V4

FWPS_LAYER_DATAGRAM_DATA_V6

FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD

FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD

只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_IP_HEADER_SIZE旗標時,此成員才會包含有效的數據。

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 會指定要從數據位移位置前進到傳輸標頭結尾的位元元數目。

只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE旗標時,此成員才會包含有效的數據。

processPath

包含擁有端點之進程完整路徑 之FWP_BYTE_BLOB 結構的指標。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_PROCESS_PATH旗標時,此成員才會包含有效的數據。

token

用來驗證用戶許可權之令牌的句柄。 只有當目前MetadataValues 成員中設定FWPS_METADATA_FIELD_TOKEN旗標時,此成員才會包含有效的數據。

processId

擁有端點之進程的進程標識碼。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_PROCESS_ID旗標時,這個成員才會包含有效的數據。

sourceInterfaceIndex

接收傳入封包之網路介面的索引。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX旗標時,此成員才會包含有效的數據。

destinationInterfaceIndex

要傳送傳出封包之網路介面的索引。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX旗標時,此成員才會包含有效的數據。

compartmentId

已接收或傳送封包之路由區間的標識碼。 任何修改過的封包都應該插入原始封包所指出的相同路由區間。 只有當 FWPS_METADATA_FIELD_COMPARTMENT_ID 旗標是在 currentMetadataValues 成員中設定時,這個成員才會包含有效的數據。

fragmentMetadata

描述已接收封包片段之片段數據的 FWPS_INBOUND_FRAGMENT_METADATA0 結構。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_FRAGMENT_DATA旗標時,此成員才會包含有效的數據。

pathMtu

輸出封包的路徑上限 (路徑 MTU) 。 這個值表示網路可以在沒有片段的情況下傳輸的最大實體封包大小,只有當目前MetadataValues 成員中設定FWPS_METADATA_FIELD_PATH_MTU旗標時,此成員才會包含有效的數據。

completionHandle

傳送目前篩選作業所需的完成句柄。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_COMPLETION_HANDLE旗標時,此成員才會包含有效的數據。

transportEndpointHandle

端點句柄,表示要插入輸出傳輸層的封包結尾。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE旗標時,此成員才會包含有效的數據。

remoteScopeId

要用於輸出傳輸層插入的遠端範圍標識碼。 只有在目前MetadataValues 成員中設定FWPS_METADATA_FIELD_REMOTE_SCOPE_ID旗標時,此成員才會包含有效的數據。

controlData

選擇性的套接字控制件資料物件。 只有當FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA 旗標 是在 currentMetadataValues 成員中設定時,這個成員才會包含有效的數據。 如需 WSACMSGHDR 類型的相關信息,請參閱 CMSGHDR

controlDataLength

controlData 成員的長度,以位元組為單位。

packetDirection

網路流量的方向 (輸入或輸出) ,如 FWP_DIRECTION的其中一個常數值所指定。 此成員會在重新授權分類作業期間,於應用層強制執行 (ALE) 連線或接收/接受層。 如需詳細資訊,請參閱<備註>一節。

只有當目前MetadataValues 成員中設定FWPS_METADATA_FIELD_PACKET_DIRECTION旗標時,此成員才會包含有效的數據。

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 層值的旗標。 一或多個值可以與位 OR 結合。

僅適用於 Windows 8 和更新版本的 Windows。

意義
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE 乙太網路MacHeaderSize成員的值表示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 此旗標表示一次在輸入時看到的 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

保留的。

備註

篩選引擎會將指標傳遞給圖說文字的分類Fn 圖說函式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_OUTBOUNDFWPS_METADATA_FIELD_PACKET_DIRECTION 元數據值存在,則圖說文字驅動程式不應該假設封包包含有效的 IP 標頭。
  • 在 ALE 連接層中,如果 FWPS_METADATA_FIELD_PACKET_DIRECTION 元數據值不存在,則圖說文字驅動程式應該假設 FWP_DIRECTION_OUTBOUND的封包方向。
  • 在 ALE 接收/接受層中,如果FWPS_METADATA_FIELD_PACKET_DIRECTION元數據值不存在,則圖說文字驅動程式應該假設 FWP_DIRECTION_INBOUND的封包方向。

規格需求

需求
標頭 fwpsu.h