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.
Importante
Usare invece l'API sensore UWP .
L'API del sensore basata su COM è deprecata e non deve essere usata nelle nuove applicazioni. Non sono pianificate funzionalità o miglioramenti aggiuntivi e il supporto sarà limitato.
Per creare un'istanza di un nodo del dispositivo per un sensore logico o riconnettersi a un nodo del dispositivo sensore logico esistente, un'applicazione o un servizio deve chiamare ILogicalSensorManager::Connect. Il parametro pPropertyStore per questo metodo richiede un puntatore a un'interfaccia IPropertyStore che contiene gli ID dei driver del sensore a cui connettersi. Ciò significa che è necessario creare un archivio proprietà e aggiungere questi dati all'archivio prima di chiamare questo metodo.
Connessione al sensore logico
Per connettersi a un sensore logico, è necessario specificare almeno un ID hardware, come definito nel file inf del driver del sensore e un GUID logico che identifica il sensore. La piattaforma usa questo GUID per identificare il sensore quando si sceglie di disconnettersi dal, o di disinstallare, il nodo del dispositivo del sensore.
Il codice di esempio seguente crea un metodo helper che si connette a un sensore logico specificato. I parametri del metodo ricevono l'ID hardware del sensore e un GUID univoco per identificare il sensore.
HRESULT ConnectToLogicalSensor(PCWSTR* wszHardwareID, GUID guidLogicalID)
{
HRESULT hr = S_OK;
ILogicalSensorManager* pLSM = NULL;
IPropertyStore* pStore = NULL;
PROPVARIANT pv = {};
// Create the property store.
hr = PSCreateMemoryPropertyStore(IID_PPV_ARGS(&pStore));
if(SUCCEEDED(hr))
{
// Create the logical sensor manager.
hr = CoCreateInstance(CLSID_LogicalSensorManager,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pLSM));
}
// Fill in the values.
if(SUCCEEDED(hr))
{
hr = InitPropVariantFromStringVector(wszHardwareID, 1, &pv);
}
if(SUCCEEDED(hr))
{
hr = pStore->SetValue(PKEY_Device_HardwareIds, pv);
}
if(SUCCEEDED(hr))
{
hr = pStore->SetValue(PKEY_Device_CompatibleIds, pv);
}
if(SUCCEEDED(hr))
{
// Connect to the logical sensor.
hr = pLSM->Connect(guidLogicalID, pStore);
}
SafeRelease(&pStore);
SafeRelease(&pLSM);
return hr;
}
Disconnessione da un sensore logico
Per disconnettersi da un sensore logico, è necessario specificare lo stesso ID logico usato quando è stato chiamato Connect.
Il codice di esempio seguente crea una funzione helper che si disconnette da un sensore logico.
HRESULT DisconnectFromLogicalSensor(GUID guidLogicalID)
{
HRESULT hr = S_OK;
ILogicalSensorManager* pLSM = NULL;
if(SUCCEEDED(hr))
{
// Create the logical sensor manager.
hr = CoCreateInstance(CLSID_LogicalSensorManager,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pLSM));
}
if(SUCCEEDED(hr))
{
hr = pLSM->Disconnect(guidLogicalID);
}
SafeRelease(&pLSM);
return hr;
}
Disinstallazione di un sensore logico
Per disinstallare un sensore logico, è necessario specificare lo stesso ID logico usato quando si chiama Connect.
Il codice di esempio seguente crea una funzione helper che disinstalla un sensore logico.
HRESULT UninstallLogicalSensor(REFGUID guidLogicalID)
{
HRESULT hr = S_OK;
ILogicalSensorManager* pLSM;
// Create the logical sensor manager.
hr = CoCreateInstance(CLSID_LogicalSensorManager,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pLSM));
if(SUCCEEDED(hr))
{
hr = pLSM->Uninstall(guidLogicalID);
}
SafeRelease(&pLSM);
return hr;
}