共用方式為


FwpsInjectMacReceiveAsync0 函式 (fwpsk.h)

FwpsInjectMacReceiveAsync0 函式可以重新檢視先前所吸收的媒體訪問控制, (MAC) 框架 (或框架的複製) 回到第 2 層的輸入數據路徑,或插入創新 MAC 框架。

注意FwpsInjectMacReceiveAsync0 是特定版本的 FwpsInjectMacReceiveAsync。 如需詳細資訊 ,請參閱 Version-Independent 名稱和以特定版本的 Windows 為目標

 

語法

NTSTATUS FwpsInjectMacReceiveAsync0(
  [in]           HANDLE               injectionHandle,
  [in, optional] HANDLE               injectionContext,
  [in]           UINT32               flags,
  [in]           UINT16               layerId,
  [in]           IF_INDEX             interfaceIndex,
  [in]           NDIS_PORT_NUMBER     NdisPortNumber,
  [in, out]      NET_BUFFER_LIST      *netBufferLists,
  [in]           FWPS_INJECT_COMPLETE completionFn,
  [in, optional] HANDLE               completionContext
);

參數

[in] injectionHandle

先前由 呼叫 FwpsInjectionHandleCreate0 函式取得的插入句柄, 並將 flags 參數設定為 FWPS_INJECTION_TYPE_L2。

注意FwpsInjectionHandleCreate0 函式的 addressFamily 參數設定為 AF_UNSPEC。
 

[in, optional] injectionContext

插入內容的選擇性句柄。 如果指定,可以藉由呼叫 來取得它當封包插入狀態FWPS_PACKET_INJECTION_STATE FWPS_PACKET_INJECTED_BY_SELFFWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF時,FwpsQueryPacketInjectionState0 函式。

[in] flags

保留的。 必須設定為零。

[in] layerId

正在處理數據流之篩選層的運行時間標識碼。

[in] interfaceIndex

傳遞至圖說文字驅動程序 分類Fn 傳入值的介面索引FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX。

[in] NdisPortNumber

傳遞至圖說文字驅動程式 之 classifyFn 傳入值的 NDIS 埠號碼FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT。

[in, out] netBufferLists

描述所插入封包數據的 NET_BUFFER_LIST 結構的指標。 圖說文字驅動程式會透過呼叫 FwpsAllocateCloneNetBufferList0 函式或 FwpsAllocateNetBufferList0 函式,配置用來插入封包數據的NET_BUFFER_LIST結構。

當 為 時 (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET),NET_BUFFER_LIST必須以乙太網路標頭開頭。

當 為 時 (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE),NET_BUFFER_LIST必須以 MAC 標頭開頭。

[in] completionFn

圖說文字驅動程式所提供 之 completionFn 圖說文字函式的指標。 篩選引擎會在 netBufferLists 參數所描述的封包數據插入網路堆疊之後呼叫此函式。 插入複製或建立NET_BUFFER_LIST結構時,必須指定這個指標。 插入原始NET_BUFFER_LIST結構時,如果未改變原始結構,此參數可以是 NULL。

[in, optional] completionContext

圖說文字驅動程式提供的指標,傳遞至 completionFn 參數所指向的圖說文字函式。 此參數是選擇性的,可以是 NULL

傳回值

FwpsInjectMacReceiveAsync0 函式會傳回下列其中一個 NTSTATUS 代碼。

傳回碼 Description
STATUS_SUCCESS
已成功起始 MAC 畫面格數據插入。 篩選引擎會在篩選引擎完成插入 MAC 框架數據之後,或後續發生錯誤時呼叫完成函式。 如果發生錯誤,已完成NET_BUFFER_LIST結構的 Status 成員將會指出失敗的原因。
STATUS_FWP_TCPIP_NOT_READY
MAC 層尚未準備好接受封包數據的插入。
STATUS_FWP_INJECT_HANDLE_CLOSING
插入句柄正在關閉。
STATUS_FWP_INJECT_HANDLE_STALE
插入句柄未使用 的 flags 參數建立 FwpsInjectionHandleCreate0 函式設定為 FWPS_INJECTION_TYPE_L2。
其他狀態代碼
發生錯誤。

備註

回呼驅動程式會呼叫 FwpsInjectMacReceiveAsync0 函式,以重新檢視先前所吸收的 MAC 框架 (或框架的複製) 回第 2 層輸入數據路徑,或插入發明的 MAC 框架。

netBufferLists 參數可以是NET_BUFFER_LIST鏈結。 不過,每次都可以叫用完成函式多次,完成鏈結的區段 (或單一NET_BUFFER_LIST) 。

如果封包符合原始分類的相同篩選條件,插入的畫面可能會再次分類。 因此,如同IP層的圖說文字,第2層圖說文字也必須呼叫 FwpsQueryPacketInjectionState0 來防範無限封包檢查。

規格需求

需求
最低支援的用戶端 從 Windows 8 開始提供。
目標平台 Universal
標頭 fwpsk.h (包含 Fwpsk.h)
程式庫 Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

另請參閱

FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0 FwpsInjectionHandleCreate0

FwpsQueryPacketInjectionState0

NET_BUFFER_LIST

classifyFn

completionFn