共用方式為


非同步搜尋

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