共用方式為


使用邏輯感應器

若要具現化邏輯感應器的裝置節點,或重新連線到現有的邏輯感應器裝置節點,應用程式或服務必須呼叫 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;
}

關於邏輯感應器