共用方式為


IUPnPAddressFamilyControl::SetAddressFamily 方法 (upnp.h)

SetAddressFamily方法會設定 Device Finder 物件的位址系列旗標,它會使用此旗標來篩選找到的裝置。

應用程式會在開始搜尋之前設定位址系列旗標。 應用程式只會收到具有指定位址系列之 IP 位址之裝置的通知。

語法

HRESULT SetAddressFamily(
  [in] LONG dwFlags
);

參數

[in] dwFlags

整數 (4 位元組值) ,指定要由 Device Finder 物件用來篩選找到的裝置的位址系列。

下列值有效。

意義
UPNP_ADDRESSFAMILY_IPv4
IPv4 (IP 第 4 版)
UPNP_ADDRESSFAMILY_IPv6
IPv6 (IP 第 6 版)
UPNP_ADDRESSFAMILY_BOTH
IPv4 和 IPv6

傳回值

如果方法成功,傳回值會S_OK。 否則,方法會傳回 WinError.h 中定義的其中一個 COM 錯誤碼。

備註

設定旗標

位址系列旗標必須在適當的時間設定,才能影響搜尋:

篩選找到的裝置

案例 1:控制點應用程式會將位址系列旗標設定為UPNP_ADDRESSFAMILY_IPV4,然後啟動搜尋:

  • 如果裝置尋找器發現有 IPv6 位址的裝置,裝置尋找工具將不會通知裝置的應用程式。 如果相同裝置稍後取得 IPv4 位址,裝置尋找工具會通知裝置的應用程式並提供 IPv4 位址。
  • 如果裝置尋找器發現有 IPv4 位址的裝置,Device Finder 會通知裝置的應用程式並提供 IPv4 位址。 如果相同裝置稍後取得 IPv6 位址,裝置尋找工具將不會通知應用程式裝置的其他位址。
  • 如果 Device Finder 發現同時具有 IPv4 和 IPv6 位址的裝置,它會通知裝置的應用程式,但只會提供 IPv4 位址。
  • 如果應用程式已知的裝置宣佈位址變更,則只有在新位址是 IPv4 位址時,裝置尋找工具才會通知應用程式變更。
  • 如果應用程式知道的裝置同時有 IPv4 和 IPv6 位址,而 Device Finder 會從裝置的 IPv6 位址收到 bye bye 訊息,即使應用程式只知道 IPv4 位址,裝置尋找程式還是會通知應用程式。 換句話說,如果應用程式知道的裝置離開網路,則不論裝置的位址為何,裝置尋找器都會通知應用程式。

案例 2:應用程式會將位址系列旗標設定為UPNP_ADDRESSFAMILY_IPV6,然後啟動搜尋:

  • 類似案例 1 中所述的一組類似的規則會套用,但適用于相反的位址系列。

案例 3:應用程式會將位址系列旗標設定為UPNP_ADDRESSFAMILY_BOTH,然後啟動搜尋:

  • 如果 Device Finder 發現有 IPv4 位址或 IPv6 位址的裝置,Device Finder 會通知裝置的應用程式並提供位址。 如果相同裝置稍後取得不同位址系列的位址,Device Finder 將不會通知應用程式裝置的其他位址。
  • 如果 Device Finder 發現同時具有 IPv4 和 IPv6 位址的裝置,它會通知裝置的應用程式,但只會提供其中一個位址,並隨機播放。
  • 如果應用程式已知的裝置宣佈位址變更,裝置尋找工具會通知應用程式變更。
  • 如果應用程式已知的裝置離開網路,裝置尋找工具會通知應用程式。

需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 都不支援
目標平台 Windows
標頭 upnp.h
Dll Upnp.dll

另請參閱

GetAddressFamily

IUPnPAddressFamilyControl