Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Gli oggetti dispositivo espongono una proprietà denominata Services che restituisce una raccolta di oggetti Service che contiene un oggetto servizio per ogni servizio esportato dal dispositivo. Le applicazioni possono attraversare questa raccolta in sequenza o richiedere un determinato servizio usando il relativo ID servizio.
Esempio di VBScript
L'esempio seguente è il codice VBScript che estrae gli oggetti Service per due dei servizi esportati da un dispositivo.
' Get the service objects
services = device.Services
Set appService = services( "urn:upnp-org:serviceId:DVDVideo" )
Set xportService = services( "urn:upnp-org:serviceId:AVTransport" )
La prima riga estrae la collezione di servizi dall'oggetto Device eseguendo una query sulla proprietà Services. Le due righe successive ottengono i due oggetti Service desiderati dall'insieme specificando i rispettivi ID di servizio. La raccolta di servizi può anche essere attraversata in sequenza usando un per ogni ciclo successivo.
Esempio di C++
L'esempio seguente illustra il codice C++ necessario per ottenere oggetti Service da un dispositivo. Prima, il codice di esempio esegue una query sulla proprietà IUPnPDevice::Services sull'interfaccia passata alla funzione. Una raccolta di servizi viene restituita utilizzando l'interfaccia IUPnPServices. Per ottenere oggetti servizio individuali, usare il metodo Item e specificare gli ID dei servizi richiesti. Per attraversare la raccolta in sequenza, usare i metodi IEnumVARIANT::Reset, IEnumVARIANT::Nexte IEnumVARIANT::Skip. Questo esempio è simile all'esempio usato per attraversare la raccolta IUPnPDevices.
#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;
}