检索矢量类型

重要

请改用 UWP 传感器 API

基于 COM 的传感器 API 已弃用,不应在新应用程序中使用。 没有计划其他功能或增强功能,并且支持将受到限制。

某些属性和数据字段包含信息数组。 例如,SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE属性包含一个由 4 字节无符号整数构成的数组。 但是,通过传感器 API 接收此类数组时,它们始终表示为类型 VT_VECTOR|UI1,为单字节字符数组,无论数组中的数据实际类型是什么。 对于这些类型,必须小心地将数组变量转换为属性或数据字段的正确数据类型。

有关属性、数据字段及其类型的信息,请参阅 常量

以下示例代码演示如何将从SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE检索到的数据转换为正确的类型。

PROPVARIANT pvCurve;
PropVariantInit(&pvCurve);

// Retrieve the property value.
hr = pSensor->GetProperty(SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE, &pvCurve);
if (SUCCEEDED(hr))
{
    if ((VT_UI1|VT_VECTOR) == V_VT(pvCurve)) // Note actual type of UI1
    {
        // Cast the array to UINT, a 4-byte unsigned integer.

        // Item count for the array.
        UINT  cElement = pvCurve.caub.cElems/sizeof(UINT);
        // Array pointer.
        UINT* pElement = (UINT*)(pvCurve.caub.pElems);

        // Use the array.
    }
}

// Remember to free the PROPVARIANT when done.
PropVariantClear(&pvCurve);