共用方式為


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 結構,描述數據被捨棄的原因。 只有當 currentMetadataValues 成員中設定FWPS_METADATA_FIELD_DISCARD_REASON旗標時,這個成員才會包含有效的數據。

flowHandle

數據流的句柄。 只有在 currentMetadataValues 成員中設定FWPS_METADATA_FIELD_FLOW_HANDLE旗標時,這個成員才會包含有效的數據。

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

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

processPath

FWP_BYTE_BLOB 結構的指標,其中包含擁有端點之進程的完整路徑。 只有當 currentMetadataValues 成員中設定了FWPS_METADATA_FIELD_PROCESS_PATH旗標時,這個成員才會包含有效的數據。

token

令牌的句柄,用來驗證用戶的許可權。 只有在 currentMetadataValues 成員中設定FWPS_METADATA_FIELD_TOKEN旗標時,這個成員才會包含有效的數據。

processId

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

sourceInterfaceIndex

接收傳入封包之網路介面的索引。 只有當 currentMetadataValues 成員中設定了FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX旗標時,這個成員才會包含有效的數據。

destinationInterfaceIndex

要傳送傳出封包之網路介面的索引。 只有當 currentMetadataValues 成員中設定FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX旗標時,這個成員才會包含有效的數據。

compartmentId

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

fragmentMetadata

描述所接收封包片段片段數據的 FWPS_INBOUND_FRAGMENT_METADATA0 結構。 只有當 currentMetadataValues 成員中設定FWPS_METADATA_FIELD_FRAGMENT_DATA旗標時,這個成員才會包含有效的數據。

pathMtu

輸出封包的路徑最大傳輸單位(路徑 MTU)。 這個值表示網路可以傳輸而不分散的最大實體封包大小,只有當 currentMetadataValues 成員中設定FWPS_METADATA_FIELD_PATH_MTU旗標時,這個成員才會包含有效的數據。

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。 此成員會在重新授權分類作業期間,於應用層強制執行 (ALE) 連接或接收/接受層上設定。 如需詳細資訊,請參閱一節。

注意

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

headerIncludeHeader

如果封包是從原始套接字傳送,則為IP標頭的指標。

headerIncludeHeaderLength

headerIncludeHeader 所指向之 IP 標頭的長度,以位元組為單位,

destinationPrefix

目的地前置詞。

frameLength

框架長度。

parentEndpointHandle

端點父系的句柄。

icmpIdAndSequence

ICMP識別碼和序列。

localRedirectTargetPID

負責重新導向連線之進程的 PID。

originalDestination

重新導向連線的原始目的地。

redirectRecords

可傳遞至 FwpsQueryConnectionRedirectState0 函式以取得重新導向狀態的重新導向記錄句柄。

currentL2MetadataValues

位掩碼,其中包含指定設定第 2 層值的旗標。 一或多個值可以與位 OR 結合。

價值 意義
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 層旗標。

價值 意義
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,每個 NBL 都註定要傳送到不同的 VM,而且此散發套件的第一個 NBL 已向圖說驅動程式指出。

分散式群組的第一個 NBL 將不會設定此旗標。 群組的所有後續 NCL 都會設定此旗標。

為了插入的目的,您的圖說驅動程式應該複製 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旗標,則為目前的 Native 802.11 作業模式。 如需詳細資訊,請參閱 DOT11_CURRENT_OPERATION_MODE

vSwitchSourcePortId

虛擬交換器上來源埠的唯一標識碼。

vSwitchSourceNicIndex

虛擬交換器上來源 NIC 的索引。

vSwitchDestinationPortId

虛擬交換器上目的地埠的唯一標識碼。

padding0

保留。

padding1

保留。

padding2

保留。

vSwitchPacketContext

虛擬交換器封包內容的句柄。

subProcessTag

保留。

reserved1

保留。

言論

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

另請參閱