共用方式為


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 作業系統上, Family 參數的可能值定義在 Ws2def.h 標頭檔中。 請注意,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,而且 呼叫端Callback 參數所指向的函式會在 I/O 要求完成且具有穩定單播 IP 位址表時呼叫。

如果函式失敗, 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_ROWDadState成員。 每個隨選撥號位址都會定義自己的穩定性計量。 目前 ,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

呼叫 器CoNtext 參數,在註冊驅動程式以進行通知時,傳遞給 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