使用邏輯感應器
若要具現化邏輯感應器的裝置節點,或重新連線到現有的邏輯感應器裝置節點,應用程式或服務必須呼叫 ILogicalSensorManager::Connect。 此方法的pPropertyStore 參數需要 IPropertyStore介面的指標,其中包含感應器驅動程式要連線的識別碼。 這表示您必須建立屬性存放區,並將此資料新增至存放區,再呼叫此方法。
連接到邏輯感應器
若要連線到邏輯感應器,您必須至少提供硬體識別碼,如感應器驅動程式的 .inf 檔案中所定義,以及識別感應器的邏輯 GUID 。 當您選擇從感應器裝置節點中斷連線或卸載時,平臺會使用此 GUID 來識別感應器。
下列範例程式碼會建立連線至指定邏輯感應器的協助程式方法。 方法參數會接收感應器硬體識別碼和唯一 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時所使用的相同邏輯識別碼。
下列範例程式碼會建立與邏輯感應器中斷連線的協助程式函式。
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時所使用的相同邏輯識別碼。
下列範例程式碼會建立可卸載邏輯感應器的協助程式函式。
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;
}
相關主題