Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
En su lugar, usa la API de sensores de UWP.
La API de sensor basada en COM está en desuso y no debe usarse en nuevas aplicaciones. No se planean características ni mejoras adicionales y el soporte técnico será limitado.
Para crear instancias de un nodo de dispositivo para un sensor lógico o volver a conectarse a un nodo de dispositivo de sensor lógico existente, una aplicación o servicio debe llamar a ILogicalSensorManager::Connect. El parámetro pPropertyStore para este método requiere un puntero a una interfaz IPropertyStore que contiene los identificadores a los que se van a conectar los controladores del sensor. Esto significa que debe crear un almacén de propiedades y agregar estos datos al almacén antes de llamar a este método.
Conexión al sensor lógico
Para conectarse a un sensor lógico, debe proporcionar, como mínimo, un identificador de hardware, tal como se define en el archivo .inf del controlador del sensor y un GUID lógico que identifica el sensor. La plataforma usa este GUID para identificar el sensor al elegir desconectar o desinstalar el nodo del dispositivo del sensor.
El código de ejemplo siguiente crea un método auxiliar que se conecta a un sensor lógico especificado. Los parámetros del método reciben el identificador de hardware del sensor y un GUID único para identificar el sensor.
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;
}
Desconexión de un sensor lógico
Para desconectar de un sensor lógico, debe proporcionar el mismo identificador lógico que usó al llamar Connect.
El código de ejemplo siguiente crea una función auxiliar que se desconecta de un sensor lógico.
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;
}
Desinstalación de un sensor lógico
Para desinstalar un sensor lógico, debe proporcionar el mismo identificador lógico que usó cuando llamó a Connect.
El código de ejemplo siguiente crea una función auxiliar que desinstala un sensor lógico.
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;
}