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 |