FwpsInjectMacSendAsync0 函式 (fwpsk.h)
FwpsInjectMacSendAsync0 函式可以重新擷取先前吸收的媒體訪問控制 (MAC) 畫面格(或框架的複製品)回到其攔截的來源第 2 層輸出數據路徑,或插入發明的 MAC 畫面。
語法
NTSTATUS FwpsInjectMacSendAsync0(
[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 函式取得的插入句柄,並將 旗標 參數設定為 FWPS_INJECTION_TYPE_L2。
[in, optional] injectionContext
插入內容的選擇性句柄。 如果指定,可以藉由呼叫 來取得它當封包插入狀態 FWPS_PACKET_INJECTION_STATE 為 FWPS_PACKET_INJECTED_BY_SELF 或 FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF時, FwpsQueryPacketInjectionState0 函式。
[in] flags
保留。 必須設定為零。
[in] layerId
正在處理數據流之篩選層的運行時間標識碼。
[in] interfaceIndex
傳遞至圖說文字驅動程式 分類Fn 傳入值的介面索引,FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX。
[in] NdisPortNumber
傳遞至圖說文字驅動程式 的 NDIS 埠號碼,會將傳入值分類為 Xxx FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT。
[in, out] netBufferLists
描述所插入封包數據的 NET_BUFFER_LIST 結構的指標。 圖說驅動程式會藉由呼叫 FwpsAllocateCloneNetBufferList0 函式或 FwpsAllocateNetBufferAndNetBufferList0 函式,來配置用來插入封包數據的NET_BUFFER_LIST結構。 NET_BUFFER_LIST結構必須以 MAC 標頭開頭。
[in] completionFn
completionFn 的指標, 圖說驅動程式所提供的圖說文字函式。 篩選引擎會在封包數據之後呼叫此函式,netBufferLists 參數所描述,已插入網路堆疊中。 插入複製或建立NET_BUFFER_LIST結構時,必須指定此指標。 插入原始NET_BUFFER_LIST結構時,如果未改變原始結構,此參數可以是 NULL。
[in, optional] completionContext
由 completionFn 參數所指向之圖說文字函式的圖說文字驅動程式提供內容指標。 這個參數是選擇性的,而且可以 NULL。
傳回值
FwpsInjectMacSendAsync0 函式會傳回下列其中一個 NTSTATUS 程式代碼。
傳回碼 | 描述 |
---|---|
|
已成功起始 MAC 畫面格數據插入。 篩選引擎會在篩選引擎完成插入 MAC 框架數據之後,或後續發生錯誤時呼叫完成函式。 如果發生錯誤,已完成 NET_BUFFER_LIST 結構 狀態 成員將會指出失敗的原因。 |
|
MAC 層尚未準備好接受封包數據的插入。 |
|
插入句柄正在關閉。 |
|
未使用 的 旗標 參數建立插入句柄 FwpsInjectionHandleCreate0 函式設定為 FWPS_INJECTION_TYPE_L2。 |
|
發生錯誤。 |
言論
回呼驅動程式會呼叫 FwpsInjectMacSendAsync0 函式,將先前吸收的 MAC 畫面格(或框架的複製品)重新連接到第 2 層輸入數據路徑,從中攔截它,或插入發明的 MAC 畫面格。
netBufferLists 參數可以是 NET_BUFFER_LIST 鏈結。 不過,可以每次叫用完成函式,完成鏈結的區段(或單一NET_BUFFER_LIST)。
如果封包符合原始分類的相同篩選條件,插入的畫面可能會再次分類。 因此,如同IP層的圖說文字,第2層圖說文字也必須呼叫 FwpsQueryPacketInjectionState0,以防止無限封包檢查。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平臺 | 普遍 |
標頭 | fwpsk.h (包括 Fwpsk.h) |
連結庫 | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |