共用方式為


NotifyTeredoPortChange 函式 (netioapi.h)

NotifyTeredoPortChange 函式會註冊,以通知 Teredo 用戶端在本機電腦上針對 Teredo 服務埠所使用的 UDP 連接埠號碼變更。

語法

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API NotifyTeredoPortChange(
  [in]      PTEREDO_PORT_CHANGE_CALLBACK Callback,
  [in]      PVOID                        CallerContext,
  [in]      BOOLEAN                      InitialNotification,
  [in, out] HANDLE                       *NotificationHandle
);

參數

[in] Callback

發生 Teredo 用戶端埠變更時要呼叫之函式的指標。 收到 Teredo 埠變更通知時,將會叫用此函式。

[in] CallerContext

收到 Teredo 埠變更通知時,傳遞至 Callback 參數中指定的回呼函式的用戶內容。

[in] InitialNotification

值,指出註冊變更通知完成之後是否應該立即叫用回呼。 此初始通知不會指出 Teredo 用戶端埠發生變更。 此參數的目的是要提供回呼已註冊的確認。

[in, out] NotificationHandle

用來傳回句柄的指標,稍後可用來取消註冊變更通知。 成功時,此參數會傳回通知句柄。 如果發生錯誤,則會傳回 NULL

傳回值

如果函式成功,傳回值會NO_ERROR。

如果函式失敗,傳回值就是下列其中一個錯誤碼。

傳回碼 Description
ERROR_INVALID_HANDLE
發生內部錯誤,其中遇到無效的句柄。
ERROR_INVALID_PARAMETER
無效的參數已傳遞至 函式。 如果 Callback 參數是 NULL 指標,就會傳回此錯誤。
ERROR_NOT_ENOUGH_MEMORY
記憶體不足。
其他
使用 FormatMessage 取得傳回錯誤的訊息字串。

備註

NotifyTeredoPortChange 函式是在 Windows Vista 和更新版本上定義。

GetTeredoPort 函式可用來擷取 Teredo 用戶端用於 Teredo 服務埠的初始 UDP 連接埠號碼。

Teredo 埠是動態的,而且可以在本機電腦上重新啟動 Teredo 用戶端時變更。 應用程式可以藉由呼叫 NotifyTeredoPortChange 函式來註冊,以在 Teredo 服務埠變更時收到通知。

呼參數中指定的回呼函式調用會串行化。 回呼函式應該定義為 VOID 類型的函式。 傳遞至回呼函式的參數包括下列各項:

參數 Description
IN PVOID CallerContext 註冊通知時傳遞至 NotifyTeredoPortChange 函式的 CallerContext 參數。
IN USHORT 埠 Teredo 用戶端目前使用的UDP埠號碼。 當將 NotificationType 參數傳遞至回呼函式的MIB_NOTIFICATION_TYPE值設定為 MibInitialNotification 時,此參數為。 只有在註冊通知時,傳遞至 NotifyTeredoPortChangeInitialNotification 參數設定為 TRUE 時,才會發生此情況。
IN MIB_NOTIFICATION_TYPE NotificationType 通知類型。 這個成員可以是 Netioapi.h 頭檔中所定義之MIB_NOTIFICATION_TYPE列舉類型的其中一個值。
 

Callback 參數中指定的 回呼 函式必須在與呼叫 NotifyTeredoPortChange 函式的應用程式相同的進程中實作。 如果回呼函式位於個別的 DLL 中,則應該先載入 DLL,再呼叫 NotifyTeredoPortChange 函式來註冊變更通知。

呼叫 NotifyTeredoPortChange 函式以註冊變更通知之後,這些通知會繼續傳送,直到應用程式取消註冊變更通知或應用程式終止為止。 如果應用程式終止,系統會自動取消註冊變更通知的任何註冊。 在應用程式終止之前,仍建議應用程式明確取消註冊變更通知。

任何變更通知的註冊都不會在系統關閉或重新啟動之間保存。

若要取消註冊變更通知,請呼叫 CancelMibChangeNotify2 函式,傳遞 NotifyTeredoPortChange 傳回的 NotificationHandle 參數。

應用程式無法從線程的內容呼叫 CancelMibChangeNotify2 函式,該線程目前執行相同 NotificationHandle 參數的通知回呼函式。 否則,執行該回呼的線程將會導致死結。 因此 ,CancelMibChangeNotify2 函式不得直接呼叫為通知回呼例程的一部分。 在較普遍的情況下,執行 CancelMibChangeNotify2 函式的線程無法擁有執行通知回呼作業的線程會等候的資源,因為它會產生類似的死結。 CancelMibChangeNotify2 函式應該從不同的線程呼叫,其中接收通知回呼的線程沒有相依性。

Teredo 用戶端也會使用靜態 UDP 埠 3544 來接聽在多播 IPv4 位址 224.0.0.253 上傳送的多播流量,如 RFC 4380 中所定義。 如需詳細資訊,請參閱http://www.ietf.org/rfc/rfc4380.txt

NotifyTeredoPortChange 函式主要是由防火牆應用程式使用,以便設定適當的例外狀況,以允許傳入和傳出 Teredo 流量。

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

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 netioapi.h (包括 Iphlpapi.h)
程式庫 Iphlpapi.lib
Dll Iphlpapi.dll

另請參閱

CancelMibChangeNotify2

GetTeredoPort

NotifyStableUnicastIpAddressTable