FWPS_INCOMING_METADATA_VALUES0結構 (fwpsk.h)

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

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

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

只有當FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE旗標是在 currentMetadataValues 成員中設定時,這個成員才會包含有效的數據。

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

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

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

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

controlData

選擇性的套接字控制件資料物件。 只有在 目前MetadataValues 成員中設定FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA旗標時,此成員才會包含有效的數據。 如需 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 層值的旗標。 一或多個值可以與位 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 成員的值表示虛擬交換器封包內容的句柄
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。
 

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

備註

篩選引擎會將指標傳遞給圖說文字的 分類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_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)

另請參閱

CMSGHDR

FWPS_DISCARD_METADATA0

FWPS_INBOUND_FRAGMENT_METADATA0

FWP_BYTE_BLOB

FWP_DIRECTION

FwpsQueryConnectionRedirectState0

NET_BUFFER_LIST

classifyFn