논리 센서 사용
논리 센서에 대한 디바이스 노드를 인스턴스화하거나 기존 논리 센서 디바이스 노드에 다시 연결하려면 애플리케이션 또는 서비스가 ILogicalSensorManager::Connect를 호출해야 합니다. 이 메서드의 pPropertyStore 매개 변수에는 연결할 센서 드라이버의 ID가 포함된 IPropertyStore 인터페이스에 대한 포인터가 필요합니다. 즉, 이 메서드를 호출하기 전에 속성 저장소를 만들고 이 데이터를 저장소에 추가해야 합니다.
논리 센서에 연결
논리 센서에 연결하려면 최소한 센서 드라이버의 .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;
}
관련 항목