FWPS_INCOMING_METADATA_VALUES0結構 (fwpsk.h)
FWPS_INCOMING_METADATA_VALUES0結構會定義篩選引擎傳遞至圖說文字分類Fn 圖說文字函式的元數據值。
語法
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) 連線或接收/接受層。 如需詳細資訊,請參閱<備註>一節。
headerIncludeHeader
如果封包是從原始套接字傳送,則為IP標頭的指標。
headerIncludeHeaderLength
headerIncludeHeader 所指向IP標頭的長度,以位元組為單位。
destinationPrefix
目的地前置詞。
frameLength
框架長度。
parentEndpointHandle
端點父系的句柄。
icmpIdAndSequence
ICMP識別碼和序列。
localRedirectTargetPID
負責重新導向連線之進程的 PID。
originalDestination
重新導向連線的原始目的地。
redirectRecords
可傳遞至 FwpsQueryConnectionRedirectState0 函式以取得重新導向狀態的重新導向記錄句柄。
currentL2MetadataValues
位掩碼,其中包含指定設定第 2 層值的旗標。 一或多個值可以與位 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
備註
篩選引擎會將指標傳遞給圖說文字的 分類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) |
另請參閱
FWPS_INBOUND_FRAGMENT_METADATA0意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應