IUPnPAddressFamilyControl::SetAddressFamily メソッド (upnp.h)
SetAddressFamily メソッドは、Device Finder オブジェクトのアドレス ファミリ フラグを設定します。このフラグを使用して、検出されたデバイスをフィルター処理します。
アプリケーションは、検索を開始する前にアドレス ファミリ フラグを設定します。 アプリケーションには、指定されたアドレス ファミリの IP アドレスを持つデバイスについてのみ通知されます。
構文
HRESULT SetAddressFamily(
[in] LONG dwFlags
);
パラメーター
[in] dwFlags
見つかったデバイスをフィルター処理するために Device Finder オブジェクトによって使用されるアドレス ファミリを指定する整数 (4 バイト値)。
次の値が有効です。
値 | 説明 |
---|---|
|
IPv4 (IP バージョン 4) |
|
IPv6 (IP バージョン 6) |
|
IPv4 および IPv6 |
戻り値
メソッドが成功した場合、戻り値はS_OK。 それ以外の場合、メソッドは WinError.h で定義されている COM エラー コードのいずれかを返します。
解説
フラグの設定
検索に影響を与えるためには、適切なタイミングでアドレス ファミリ フラグを設定する必要があります。
- 非同期検索の場合は、 IUPnPDeviceFinder::CreateAsyncFind メソッドを呼び出す前にアドレス ファミリ フラグを設定します。
- 同期検索の場合は、IUPnPDeviceFinder::FindByUDN メソッドまたは IUPnPDeviceFinder::FindByType メソッドを呼び出す前に、アドレス ファミリ フラグを設定します。
検出されたデバイスのフィルター処理
シナリオ 1: コントロール ポイント アプリケーションでアドレス ファミリ フラグをUPNP_ADDRESSFAMILY_IPV4に設定し、検索を開始します。
- デバイス ファインダーが IPv6 アドレスを持つデバイスを検出した場合、デバイス Finder はデバイスのアプリケーションに通知しません。 同じデバイスが後で IPv4 アドレスを取得した場合、Device Finder はデバイスのアプリケーションに通知し、IPv4 アドレスを指定します。
- デバイス ファインダーが IPv4 アドレスを持つデバイスを検出した場合、Device Finder はデバイスのアプリケーションに通知し、IPv4 アドレスを指定します。 同じデバイスが後で IPv6 アドレスを取得した場合、デバイス Finder はデバイスの追加アドレスをアプリケーションに通知しません。
- IPv4 アドレスと IPv6 アドレスの両方を持つデバイスが Device Finder によって検出された場合、デバイスのアプリケーションに通知されますが、IPv4 アドレスのみが提供されます。
- アプリケーションに認識されているデバイスがアドレスの変更を読み上げる場合、Device Finder は、新しいアドレスが IPv4 アドレスの場合にのみ、変更をアプリケーションに通知します。
- アプリケーションに既知のデバイスに IPv4 アドレスと IPv6 アドレスの両方があり、Device Finder がデバイスの IPv6 アドレスからバイバイ メッセージを受信した場合、アプリケーションが IPv4 アドレスのみを認識している場合でも、Device Finder はアプリケーションに通知します。 つまり、アプリケーションに既知のデバイスがネットワークを離れた場合、デバイス Finder はデバイスのアドレスに関係なくアプリケーションに通知します。
シナリオ 2: アプリケーションでアドレス ファミリ フラグをUPNP_ADDRESSFAMILY_IPV6に設定し、検索を開始します。
- シナリオ 1 で説明されているように、同様の規則のセットが適用されますが、逆のアドレス ファミリに適用されます。
シナリオ 3: アプリケーションでアドレス ファミリ フラグをUPNP_ADDRESSFAMILY_BOTHに設定し、検索を開始します。
- デバイス ファインダーが IPv4 アドレスまたは IPv6 アドレスを持つデバイスを検出した場合、Device Finder はデバイスのアプリケーションに通知し、アドレスを指定します。 同じデバイスが後で別のアドレス ファミリのアドレスを取得した場合、Device Finder はデバイスの追加アドレスをアプリケーションに通知しません。
- Device Finder は、IPv4 アドレスと IPv6 アドレスの両方を持つデバイスを検出した場合、デバイスのアプリケーションに通知しますが、ランダムに選択されたアドレスの 1 つだけを提供します。
- アプリケーションに認識されているデバイスがアドレスの変更を読み上げる場合、Device Finder は変更をアプリケーションに通知します。
- アプリケーションに既知のデバイスがネットワークから離れた場合、Device Finder はアプリケーションに通知します。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | サポートなし |
対象プラットフォーム | Windows |
ヘッダー | upnp.h |
[DLL] | Upnp.dll |