FwpsInjectionHandleCreate0 函式 (fwpsk.h)
FwpsInjectionHandleCreate0 函式會建立句柄,此句柄可供封包插入函式用來將封包或串流數據插入 TCP/IP 網路堆棧,以及由 FwpsQueryPacketInjectionState0 函式用來查詢封包插入狀態。
語法
NTSTATUS FwpsInjectionHandleCreate0(
[in, optional] ADDRESS_FAMILY addressFamily,
[in] UINT32 flags,
[out] HANDLE *injectionHandle
);
參數
[in, optional] addressFamily
正在建立插入句柄的位址系列。 這可以是下列其中一個位址系列:
AF_UNSPEC
未指定位址系列。
AF_INET
IPv4 位址系列。
AF_INET6
IPv6 位址系列。
對於傳輸、數據流和轉送插入,此參數是選擇性的,而且可以設定為 AF_UNSPEC,這表示未指定的位址系列。 此值定義於 Ws2def.h 中。
[in] flags
圖說驅動程式所設定的旗標值,表示要插入的數據類型。 此旗標可以有下列一或多個值:
FWPS_INJECTION_TYPE_FORWARD
呼叫 會插入封包數據 FwpsInjectForwardAsync0 函式。
FWPS_INJECTION_TYPE_NETWORK
網路數據會藉由呼叫 其中一個來插入 FwpsInjectNetworkReceiveAsync0 函式或 FwpsInjectNetworkSendAsync0 函式。
FWPS_INJECTION_TYPE_STREAM
Stream 資料會藉由呼叫 來插入 FwpsStreamInjectAsync0 函式。
FWPS_INJECTION_TYPE_TRANSPORT
傳輸數據會藉由呼叫 其中一個來插入 FwpsInjectTransportReceiveAsync0 函式或 FwpsInjectTransportSendAsync0 函式 。
若要建立多個插入函式要使用的插入句柄,請將插入類型位與位 OR 作業結合。 如果旗標值設定為零,則產生的插入句柄可用於傳輸、數據流和轉送插入。
[out] injectionHandle
接收句柄之變數的指標。
傳回值
FwpsInjectionHandleCreate0 函式會傳回下列其中一個 NTSTATUS 代碼。
傳回碼 | Description |
---|---|
|
已成功建立插入句柄。 |
|
TCP/IP 網路堆疊尚未就緒。 圖說文字驅動程序應該稍後再次呼叫 FwpsInjectionHandleCreate0 函式,以建立插入句柄。 |
|
發生錯誤。 |
備註
圖說文字驅動程式會呼叫 FwpsInjectionHandleCreate0 函式,以建立句柄,可用來將封包或串流數據插入 TCP/IP 網路堆棧,並查詢封包插入狀態。 圖說文字驅動程式會將建立的句柄傳遞至 封包插入函式 和 FwpsQueryPacketInjectionState0。
在註標驅動程式使用插入句柄完成之後,它必須呼叫 FwpsInjectionHandleDestroy0 函式來終結句柄。 如果暫止插入尚未完成,此函式會在傳回之前等候完成。
當對網路層進行插入,而 IPv4 和 IPv6 位址系列都會被篩選時,圖說文字驅動程式必須呼叫 FwpsInjectionHandleCreate0 函式兩次來建立兩個插入句柄:一個呼叫 addressFamily 設定為 AF_INET,而第二次呼叫 addressFamily 設定為 AF_INET6。
對於 MAC 層 ( *MAC_FRAME_NATIVE*MAC_FRAME_ETHERNET*VSWITCH_ETHERNET) ,您可以使用與 FWPS_INJECTION_TYPE_L2 旗標一起取得的相同插入句柄。 插入類型會系結到比圖層更接近插入函式。
如需程式代碼範例,請參閱其HELPERFUNCTIONS_INJECTIONDATA.CPP。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始提供。 |
目標平台 | Universal |
標頭 | fwpsk.h (包含 Fwpsk.h) |
程式庫 | Fwpkclnt.lib |
IRQL | PASSIVE_LEVEL |