Utilisation de capteurs logiques
Pour instancier un nœud d’appareil pour un capteur logique ou pour se reconnecter à un nœud d’appareil de capteur logique existant, une application ou un service doit appeler ILogicalSensorManager::Connect. Le paramètre pPropertyStore pour cette méthode nécessite un pointeur vers une interface IPropertyStore qui contient les ID auxquels les pilotes de capteur doivent se connecter. Cela signifie que vous devez créer un magasin de propriétés et ajouter ces données au magasin avant d’appeler cette méthode.
Connexion au capteur logique
Pour vous connecter à un capteur logique, vous devez fournir, au minimum, un ID matériel, tel que défini dans le fichier .inf du pilote de capteur, et un GUID logique qui identifie le capteur. La plateforme utilise ce GUID pour identifier le capteur lorsque vous choisissez de vous déconnecter ou de désinstaller le nœud de l’appareil du capteur.
L’exemple de code suivant crée une méthode d’assistance qui se connecte à un capteur logique spécifié. Les paramètres de méthode reçoivent l’ID matériel du capteur et un GUID unique pour identifier le capteur.
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;
}
Déconnexion d’un capteur logique
Pour vous déconnecter d’un capteur logique, vous devez fournir le même ID logique que celui que vous avez utilisé lorsque vous avez appelé Connect.
L’exemple de code suivant crée une fonction d’assistance qui se déconnecte d’un capteur logique.
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;
}
Désinstallation d’un capteur logique
Pour désinstaller un capteur logique, vous devez fournir le même ID logique que celui que vous avez utilisé lorsque vous avez appelé Connect.
L’exemple de code suivant crée une fonction d’assistance qui désinstalle un capteur logique.
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;
}
Rubriques connexes