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_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 |
呼叫 器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 |