非同期検索
Device Finder オブジェクトを使用すると、同期検索と非同期検索の両方が有効になります。 非同期検索は、呼び出し元のアプリケーションに制御を直ちに返します。 その後、アプリケーションが登録したコールバック インターフェイスを使用して、検出された各デバイスについてアプリケーションに通知されます。
非同期検索は、グラフィカル ユーザー インターフェイスと、継続的な監視を実行するアプリケーションに最適です。
非同期検索の一般的な構造は次のとおりです。
- 検索オブジェクトを作成する
- 検索を開始する
- コールバック通知を受信し、適切な処理手順を実行します。
- 検索が不要になったら、検索を取り消し、関連付けられているオブジェクトを解放します。
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