共用方式為


MB 迷你埠驅動程式 IP 位址通知的指導方針

在 INF 檔案中指定 EnableDhcp 等於零的 MB 迷你埠驅動程式可以使用 核心模式中的 IP 協助程式和 相關聯的 式來建立、變更和刪除 IP 位址:

若要在核心模式中使用IP協助程式函式,迷你埠驅動程序必須包含Netioapi.h頭檔,以及針對Netio.lib的連結。

當迷你埠驅動程式指定 EnableDhcp 等於零時,必須執行下列作業,以通知 MB 服務是否有下列任何事件:

  • 設定 MB 介面的 IP 位址

  • 設定預設閘道位址

  • 更新 DNS 位址

使用IP協助程式 API 所設定的IP位址和預設閘道會保存網路連線或中斷連線事件,或兩者。 因此,如果新的IP位址或預設閘道,或兩者的值都與目前設定的值不同,迷你埠驅動程序應該先清除先前的值,再設定網路連線事件的新值。

注意 Miniport 驅動程式可以從 netLuid 或 NDIS_MINIPORT_INIT_PARAMETERS傳遞至迷你埠驅動程式 MiniportInitializeEx 函式的 NetLuid 或 IfIndex 成員中找到 MB 介面 LUIDIndex。

重設IP位址和閘道位址

TCP/IP 堆疊的某些變更,例如載入強制篩選驅動程式,可以移除IP協助程式函式所設定的IP和閘道位址。 如果 TCP/IP 堆疊的變更移除設定,迷你埠驅動程式必須重設 IP 和閘道位址。

迷你埠驅動程序應該使用下列程式,在移除位址時收到通知,而且必須再次重設。

  1. 在驅動程式初始化期間,迷你埠驅動程序應該指定回呼函式,以使用 NotifyIpInterfaceChange 註冊 IP 介面變更通知。 每當新增、刪除或變更IP介面時,Windows就會呼叫 函式。

  2. 在配接器初始化期間,迷你埠驅動程序應該儲存在miniport驅動程式的本機適配卡內容中,從傳遞至迷你埠驅動程式 MiniportInitializeEx 函式的 NDIS_MINIPORT_INIT_PARAMETERS 結構中的 LUID 值。 值包含 識別配接器介面的 NetLuid ,此介面用於通知回呼。

  3. 在通知回呼中,Windows 會將下列參數傳遞至向 NotifyIpInterfaceChange 註冊的通知函式:

    迷你埠驅動程式應該在適配卡處於連線狀態時重設IP和閘道位址,而通知類型為MibAddInstance,而 MIB_IPINTERFACE_ROW中的NetLuid會對應至其中一個迷你埠驅動程式的適配卡,此適配卡初始化期間儲存。

    接著,迷你埠驅動程式應遵循設定 MB 介面的 IP 位址和設定預設網關位址程式來重設個別位址。

  4. 在驅動程式卸除期間,迷你埠驅動程序應該使用 CancelMibChangeNotify2 IP 協助程式函式取消註冊通知回呼函式。

設定 MB 介面的 IP 位址

若要設定 IPv4 位址,請使用下列程式。 您可以使用類似的IP協助程式功能來設定IPv6位址。

  1. 使用 GetUnicastIpAddressTable IP Helper 函式來尋找系統中的所有 IP 位址專案。

  2. 對於 InterfaceLuid 值符合 MB 介面之 InterfaceLuid 的每個專案

    1. 尋找符合上一個連線所用IP位址的IP位址的IP位址專案。 第一次連線不會有先前的IP位址。
    2. 如果新的IP位址與先前的IP位址不同,請使用 DeleteUnicastIpAddressEntry IP Helper 函式,刪除先前連線IP位址的IP位址的IP位址專案。
    3. 如果新的IP位址與先前的IP位址相同,請確認所需的項目已經存在。
  3. 如果迷你埠驅動程式在上一個迴圈中找不到所需的IP位址專案,它應該會新增專案。

    1. 使用 InitializeUnicastIpAddressEntry IP Helper 函式來初始化MIB_UNICASTIPADDRESS_ROW結構,並設定結構的下列成員:

      1. 視需要設定 InterfaceLuidInterfaceIndex 成員。
      2. 設定 OnlinePrefixLength 成員。 這是子網掩碼中有一個值的位數目。 例如,如果子網掩碼是 255.255.255.0,OnlinePrefixLength 應該是 24。
      3. 設定 Address 成員。
      4. PrefixOrigin 成員設定為 IpPrefixOriginManual
    2. 將初始化MIB_UNICASTADDRESS_ROW結構傳遞至 CreateUnicastIpAddressEntry IP 協助程式函式,以建立 IP 位址專案。

設定預設閘道位址

若要設定 IPv4 閘道位址,請使用下列程式。 您可以使用類似的IP協助程式功能來設定IPv6閘道位址。

  1. 使用 GetIpForwardTable2 IP 協助程式函式來取得系統中的所有路由專案。

  2. 對於 InterfaceLuid 值符合 MB 介面的 InterfaceLuid 值且 DestinationPrefix 為 “0.0.0.0/0” 的專案,如果 NextHop 不等於新的網關位址,請呼叫 DeleteIpForwardEntry2 IP Helper 函式來刪除路由。 否則,路由專案已經在系統中。

  3. 如果迷你埠驅動程式在上一個迴圈中找不到所需的路由專案,它應該使用 InitializeIpForwardEntry IP Helper 函式來新增專案,以初始化MIB_IPFORWARD_ROW2結構。 初始化 結構的下列成員:

    InterfaceLuidInterfaceIndex

    將預設閘道的 DestinationPrefix 設定為 0.0.0.0/0。 (Prefix = 0.0.0.0 和 PrefixLength = 0)

    將 NextHop 設定為預設閘道的 IP 位址。

    其他成員會在初始化期間設定為預設值。 迷你埠驅動程序應該使用這些成員的預設值。

  4. MIB_IPFORWARD_ROW2 結構傳遞至 CreateIpForwardEntry2 IP Helper 函式,以設定新的預設網關位址。

設定 DNS 位址

  • 設定 NameServer 登錄機碼,如 MB DNS 更新 中所述,以通知 Windows 更新的 DNS 位址。