共用方式為


NotifyStableUnicastIpAddressTable 函式

NotifyStableUnicastIpAddressTable 函式會擷取本機電腦上的穩定單播 IP 位址數據表。

語法

NETIOAPI_API NotifyStableUnicastIpAddressTable(
  _In_    ADDRESS_FAMILY                           Family,
  _Out_   PMIB_UNICASTIPADDRESS_TABLE              *Table,
  _In_    PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
  _In_    PVOID                                    CallerContext,
  _Inout_ HANDLE                                   *NotificationHandle
);

參數

  • 家庭 [in]
    要擷取的位址系列。

    位址系列可能的值會列在 Winsock2.h 頭檔中。 請注意,AF_位址系列和PF_通訊協定系列常數的值完全相同(例如,AF_INET和PF_INET),因此您可以使用任一常數。

    在 Windows Vista 和更新版本的 Windows作系統上,Ws2def.h 頭文件中定義了 Family 參數的可能值。 請注意,Ws2def.h 頭檔會自動包含在 Netioapi.h 中,您絕對不應該直接使用 Ws2def.h。

    位址系列目前支援下列值:

    • AF_INET
      IPv4 位址系列。 指定這個值時,函式會擷取只包含IPv4專案的穩定單播IP位址數據表。

    • AF_INET6
      IPv6 位址系列。 指定這個值時,函式會擷取只包含IPv6專案的穩定單播IP位址數據表。

    • AF_UNSPEC
      未指定位址系列。 指定此值時,函式會擷取包含IPv4和IPv6專案的穩定單播IP位址數據表。

  • 數據表 [out]
    MIB_UNICASTIPADDRESS_TABLE 結構的指標。 NotifyStableUnicastIpAddressTable 成功時,此參數會傳回本機電腦上的穩定單播 IP 位址表。

    NotifyStableUnicastIpAddressTable 傳回ERROR_IO_PENDING時,表示 I/O 要求擱置中,穩定單播 IP 位址數據表會傳回給 CallerCallback 參數中的函式。

  • CallerCallback [in]
    要使用穩定單播IP位址表呼叫之函式的指標。 如果 NotifyStableUnicastIpAddressTable 傳回ERROR_IO_PENDING,則會呼叫此函式,這表示 I/O 要求擱置中。

  • CallerContext [in]
    傳遞至回呼函式的用戶內容,可在穩定的單播IP位址表可用時,於 CallerCallback 參數中指定。

  • NotificationHandle [in, out]
    指標,用來傳回驅動程式可用來取消要求以擷取穩定單播IP位址表的句柄。 如果 NotifyStableUnicastIpAddressTable 的傳回值ERROR_IO_PENDING,則會傳回此參數,這表示 I/O 要求擱置中。

傳回值

NotifyStableUnicastIpAddressTable 會傳回STATUS_SUCCESS,如果函式立即成功,則會在 Table 參數中傳回穩定單播 IP 數據表。

如果 I/O 要求擱置中,則函式會傳回ERROR_IO_PENDING,而且當 I/O 要求已使用穩定單播 IP 位址表完成時,CallerCallback 參數所指向的函式。

如果函式失敗,NotifyStableUnicastIpAddressTable 會傳回下列其中一個錯誤碼:

傳回碼 描述
ERROR_INVALID_HANDLE

遇到無效句柄時發生內部錯誤。

STATUS_INVALID_PARAMETER

無效的參數已傳遞至函式。 如果 table 參數是 NULL 指標,NotificationHandle 參數是 NULL 指標,或 Family 參數不是AF_INET、AF_INET6或AF_UNSPEC,則會傳回此錯誤。

STATUS_NOT_ENOUGH_MEMORY

記憶體不足。

其他

使用 FormatMessage 函式取得傳回錯誤的訊息字串。

言論

所有單播IP位址,除了隨選撥號位址以外,只有在它們處於慣用狀態時才會被視為穩定。 針對一般單播IP位址專案,此狀態會對應至設定為 IpDadStatePreferred之IP位址 MIB_UNICASTIPADDRESS_ROW DadState成員。 每個隨選電話位址都會定義自己的穩定性計量。 目前,NotifyStableUnicastIpAddressTable 函式所考慮的唯一隨選撥號位址是 Teredo 用戶端在本機電腦上所使用的單播 IP 位址。

您的驅動程式必須將 Family 參數設定為 AF_INET、AF_INET6 或 AF_UNSPEC。

NotifyStableUnicastIpAddressTable 成功並傳回STATUS_SUCCESS時,Table 參數會傳回本機電腦上的穩定單播 IP 位址表。

NotifyStableUnicastIpAddressTable 傳回ERROR_IO_PENDING時,表示 I/O 要求擱置中,穩定單播 IP 位址數據表會傳回給 CallerCallback 參數中的函式。

如果 Teredo 使用的單播 IP 位址位於本機電腦上,但無法處於穩定(限定)狀態,NotifyStableUnicastIpAddressTable 會傳回ERROR_IO_PENDING,而穩定單播 IP 位址表最終會藉由呼叫 CallerCallback 參數中的 函式傳回。 如果 Teredo 位址無法使用或處於穩定狀態,而其他單播 IP 位址處於穩定狀態,則永遠不會呼叫 CallerCallback 參數中的函式。

CallerCallback 參數中指定的回呼函式,應定義為類型為 VOID的函式。 傳遞至回呼函式的參數包括下列各項。

參數 描述

IN PVOID CallerContext

CallerContext 參數,在註冊驅動程式以進行通知時,傳遞給 NotifyStableUnicastIpAddressTable 函式。

IN PMIB_UNICASTIPADDRESS_TABLE AddressTable

MIB_UNICASTIPADDRESS_TABLE 結構的指標,其中包含本機計算機上的穩定單播IP位址數據表。

NotifyStableUnicastIpAddressTable 函式主要是由使用 Teredo 用戶端的驅動程式使用。

若要在回呼完成之後取消通知,請呼叫 CancelMibChangeNotify2 函式,傳遞 NotifyStableUnicastIpAddressTable 傳回的 NotificationHandle 參數。

要求

目標平臺

通用

版本

可在 Windows Vista 和更新版本的 Windows作系統中使用。

頁眉

Netioapi.h (包括 Netioapi.h)

圖書館

Netio.lib

IRQL

< DISPATCH_LEVEL

另請參閱

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry