次の方法で共有


非同期検索

Device Finder オブジェクトを使用すると、同期検索と非同期検索の両方が有効になります。 非同期検索は、呼び出し元のアプリケーションに制御を直ちに返します。 その後、アプリケーションが登録したコールバック インターフェイスを使用して、検出された各デバイスについてアプリケーションに通知されます。

非同期検索は、グラフィカル ユーザー インターフェイスと、継続的な監視を実行するアプリケーションに最適です。

非同期検索の一般的な構造は次のとおりです。

  1. 検索オブジェクトを作成する
  2. 検索を開始する
  3. コールバック通知を受信し、適切な処理手順を実行します。
  4. 検索が不要になったら、検索を取り消し、関連付けられているオブジェクトを解放します。

Note

コールバック コードでは、アプリケーションは、通知を受け取るオブジェクト (新しいデバイスなど) を解放することも、アプリケーションで検索をキャンセルすることもできません。

 

C++ の例

C++ アプリケーションでは、検索に渡すコールバック オブジェクトを実装する必要があります。 このアクションを示すサンプル コードについては、「 C++ での非同期 検索」を参照してください。

VBScript の例

VBScript コードは、コールバック関数のアドレスを渡す必要があります。

Sub DeviceFinderCallback (device, UDN, calltype)

  select case calltype
    Case 0
      output = "Found: " & vbCrLf
      output = output & "DisplayName: " & device.FriendlyName & vbCrLf
      output = output & "Type: " & device.Type & vbCrLf
      output = output & "UDN: " & device.UniqueDeviceName & vbCrLf
      MsgBox output

    Case 1
      MsgBox "device removed: " & UDN

    Case 2
      MsgBox "search complete"

    end select
End Sub

Dim devicefinder
Dim findData

Set devicefinder = CreateObject("UPnP.UPnPDeviceFinder")

Sub StartFind()
  findData = devicefinder.CreateAsyncFind("upnp:rootdevice", 0, _
   GetRef("DeviceFinderCallback"))

  devicefinder.StartAsyncFind(findData)
End Sub

Sub StopFind()
  deviceFinder.CancelAsyncFind(findData)
End Sub