共用方式為


MB 原始 IP 封包處理支援

在傳送/接收資料路徑中支援原始 IP 封包框架的 MB 迷你埠驅動程式應該遵守下列指導方針:

網路緩衝區清單(NBL)旗標,用於原始IP封包處理

  • 針對 IPv4 封包:

    NblFlagsNET_BUFFER_LIST 結構的成員必須設定為 NDIS_NBL_FLAGS_IS_IPV4。

    NET_BUFFER_LIST 結構中的 NetBufferListFrameType 成員必須以網路位元組順序設定為 0x0800(即乙太網類型 IPv4)。

  • 針對 IPv6 封包:

    NET_BUFFER_LIST結構的 NblFlags 成員必須設定為 NDIS_NBL_FLAGS_IS_IPV6。

    NetBufferListFrameType NET_BUFFER_LIST 結構的成員必須設定為 0x86dd(以網路位元組順序表示,Ethertype 是 IPv6)。

迷你埠驅動程式可以使用 NdisSetNblFlag 巨集,在網路緩衝區列表中設定旗標。 下列程式代碼列示範如何在 net buffer 清單中設定 IPv4 封包旗標:

NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);

迷你埠驅動程式可以使用 NET_BUFFER_LIST_INFO,在 net 緩衝區清單中取得和設定資訊。 下列程式代碼行示範如何在 IPV4 封包的網路緩衝區清單中修改 NetBufferListFrameType OOB:

Value = ConvertToNetworkByteOrder(0x0800);
NET_BUFFER_LIST_INFO(pNbl, NetBufferListFrameType) = Value;

傳送路徑處理

MB 服務會在 NBL 中設定這些旗標,再將清單傳遞至迷你埠驅動程式,以透過網路傳送。 迷你埠驅動程式可以驗證輸入 NBL 中的旗標。

接收路徑處理

迷你埠驅動程序應該先在 NBL 中設定旗標,再將 NBL 傳遞給已接收封包的 MB 服務。

如果您的迷你埠驅動程式在其驅動程式開發階段實作原始IP封包處理,但仍啟用 DHCP 伺服器詐騙功能(EnableDhcp = 1),您的迷你埠驅動程式應確保下列事項:

  • 在 miniport 驅動程式的 DHCP 回應中設定的硬體位址及其長度,應符合 CurrentMacAddressMacAddressLength NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 結構中迷你埠驅動程式所指定成員的值。

  • 來自迷你埠驅動程式之 DHCP 回應的交易識別碼(xid 成員)應該完全符合來自用戶端之 DHCP 要求訊息中設定的交易識別碼。