共用方式為


使用邏輯感測器

這很重要

請改用 UWP 感應器 API

COM 型感測器 API 已被取代,不應該用於新的應用程式。 沒有計劃提供其他功能或增強功能,並且支援將受到限制。

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

下列範例程式碼會建立一個輔助函式,用來解除安裝邏輯感應器。

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;
}

關於邏輯感測器