异步搜索

Device Finder 对象支持同步和异步搜索。 异步搜索立即将控制权返回给调用应用程序。 然后,使用应用程序已注册的回调接口,在找到每个设备时通知应用程序。

异步搜索最适合图形用户界面和执行持续监视的应用程序。

异步搜索的一般结构为:

  1. 创建搜索对象
  2. 开始搜索
  3. 接收回调通知并执行相应的处理步骤。
  4. 不再需要搜索时,请取消搜索并释放关联的对象。

注意

在回调代码中,应用程序无法释放接收通知的对象(例如新设备),应用程序也无法取消搜索。

 

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