使用逻辑传感器
若要实例化逻辑传感器的设备节点,或重新连接到现有逻辑传感器设备节点,应用程序或服务必须调用 ILogicalSensorManager::Connect。 此方法的 pPropertyStore 参数需要指向 IPropertyStore 接口的指针,该接口包含传感器驱动程序要连接到的 ID。 这意味着,在调用此方法之前,必须创建属性存储并将此数据添加到存储区。
连接到逻辑传感器
若要连接到逻辑传感器,必须至少提供传感器驱动程序的 .inf 文件中定义的硬件 ID,以及标识传感器的逻辑 GUID 。 选择与传感器设备节点断开连接或卸载时,平台使用此 GUID 来标识传感器。
以下示例代码创建一个连接到指定逻辑传感器的帮助程序方法。 方法参数接收传感器硬件 ID 和用于标识传感器的唯一 GUID 。
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;
}
断开与逻辑传感器的连接
若要断开与逻辑传感器的连接,必须提供调用 Connect 时使用的同一逻辑 ID。
以下示例代码创建一个与逻辑传感器断开连接的帮助程序函数。
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;
}
卸载逻辑传感器
若要卸载逻辑传感器,必须提供调用 Connect 时使用的同一逻辑 ID。
以下示例代码创建一个卸载逻辑传感器的帮助程序函数。
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;
}
相关主题