Win32 API 日本語リファレンス
ホームDevices.Enumeration.Pnp › IUPnPAddressFamilyControl

IUPnPAddressFamilyControl

COM
IIDe3bf6178-694e-459f-a5a6-191ea0ffa1c7継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IUPnPAddressFamilyControl インターフェイスは、Device Finder オブジェクトのアドレスファミリフラグにアクセスします。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetAddressFamily(INT dwFlags)

SetAddressFamily メソッドは、Device Finder オブジェクトのアドレスファミリフラグを設定します。Device Finder オブジェクトは、このフラグを使用して検出されたデバイスをフィルターします。

dwFlagsINTin

Device Finder オブジェクトが検出されたデバイスをフィルターする際に使用するアドレスファミリを指定する整数 (4 バイト値) です。

次の値が有効です。

意味
UPNP_ADDRESSFAMILY_IPv4
IPv4 (IP version 4)
UPNP_ADDRESSFAMILY_IPv6
IPv6 (IP version 6)
UPNP_ADDRESSFAMILY_BOTH
IPv4 および IPv6

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、メソッドは WinError.h で定義されている COM エラーコードのいずれかを返します。

解説(Remarks)

フラグの設定

検索に反映させるには、アドレスファミリフラグを適切なタイミングで設定する必要があります。

検出されたデバイスのフィルター

シナリオ 1: コントロールポイントアプリケーションがアドレスファミリフラグを UPNP_ADDRESSFAMILY_IPV4 に設定し、検索を開始した場合。

シナリオ 2: アプリケーションがアドレスファミリフラグを UPNP_ADDRESSFAMILY_IPV6 に設定し、検索を開始した場合。

シナリオ 3: アプリケーションがアドレスファミリフラグを UPNP_ADDRESSFAMILY_BOTH に設定し、検索を開始した場合。

vtbl 4 HRESULT GetAddressFamily(INT* pdwFlags)

GetAddressFamily メソッドは、Device Finder オブジェクトのアドレスファミリフラグの現在の値を取得します。

pdwFlagsINT*out

アドレスファミリを示す整数 (4 バイト値) へのポインターです。

次の値が有効です。

意味
UPNP_ADDRESSFAMILY_IPv4
IPv4 (IP version 4)
UPNP_ADDRESSFAMILY_IPv6
IPv6 (IP version 6)
UPNP_ADDRESSFAMILY_BOTH
IPv4 および IPv6

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、メソッドは WinError.h で定義されている COM エラーコードのいずれかを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IUPnPAddressFamilyControl "{E3BF6178-694E-459F-A5A6-191EA0FFA1C7}"
#usecom global IUPnPAddressFamilyControl IID_IUPnPAddressFamilyControl "{}"
#comfunc global IUPnPAddressFamilyControl_SetAddressFamily  3 int
#comfunc global IUPnPAddressFamilyControl_GetAddressFamily  4 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。