Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Geräteobjekte machen eine Eigenschaft namens Services verfügbar, die eine Auflistung von Service-Objekten zurückgibt, die ein Dienstobjekt für jeden vom Gerät exportierten Dienst enthält. Anwendungen können diese Sammlung sequenziell durchlaufen oder einen bestimmten Dienst mithilfe seiner Dienst-ID anfordern.
VBScript-Beispiel
Das folgende Beispiel ist VBScript-Code, der Dienstobjekte für zwei der von einem Gerät exportierten Dienste extrahiert.
' Get the service objects
services = device.Services
Set appService = services( "urn:upnp-org:serviceId:DVDVideo" )
Set xportService = services( "urn:upnp-org:serviceId:AVTransport" )
Die erste Zeile extrahiert die Diensteauflistung aus dem Device-Objekt, indem die Services-Eigenschaft abfragt. Die nächsten beiden Zeilen rufen die beiden gewünschten Service-Objekte aus der Auflistung ab, indem sie ihre Dienst-IDs angeben. Die Dienstesammlung kann auch sequenziell durchlaufen werden, indem ein für jedes ... nächste Schleife.
C++-Beispiel
Das folgende Beispiel zeigt den C++-Code, der zum Abrufen von Service-Objekten von einem Gerät erforderlich ist. Zunächst fragt der Beispielcode die IUPnPDevice::Services-Eigenschaft für die Schnittstelle ab, die an die Funktion übergeben wurde. Dadurch wird eine Dienstauflistung mithilfe der IUPnPServices-Schnittstelle zurückgegeben. Verwenden Sie zum Abrufen einzelner Dienstobjekte die Item-Methode , und geben Sie die angeforderten Dienst-IDs an. Um die Auflistung sequenziell zu durchlaufen, verwenden Sie die Methoden IEnumVARIANT::Reset, IEnumVARIANT::Next und IEnumVARIANT::Skip . Dieses Beispiel ähnelt dem Beispiel, das zum Durchlaufen der IUPnPDevices-Auflistung verwendet wird.
#include <windows.h>
#include <upnp.h>
#pragma comment(lib, "oleaut32.lib")
HRESULT ExtractServices(IUPnPDevice * pDevice)
{
// Create a BSTR to hold the service name
BSTR bstrServiceName = SysAllocString(L"urn:upnp-org:servicId:DVDVideo");
if (NULL == bstrServiceName)
{
return E_OUTOFMEMORY;
}
// Get the list of services available on the device
IUPnPServices * pServices = NULL;
HRESULT hr = pDevice->get_Services(&pServices);
if (SUCCEEDED(hr))
{
// Retrieve the service we are interested in
IUPnPService * pAppService = NULL;
hr = pServices->get_Item(bstrServiceName, &pAppService);
if (SUCCEEDED(hr))
{
// Do something interesting with the service object
pAppService->Release();
}
pServices->Release();
}
SysFreeString(bstrServiceName);
return hr;
}