Compartir a través de


Recuperación de tipos de vectores

Algunas propiedades y campos de datos contienen matrices de información. Por ejemplo, la propiedad SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE contiene una matriz de enteros de 4 bytes sin signo. Sin embargo, cuando recibe estas matrices a través de sensor API, siempre se representan como tipo VT_VECTOR| UI1, una matriz de caracteres de un solo byte, independientemente del tipo real de los datos de la matriz. Para estos tipos, debe tener cuidado de convertir variables de matriz en el tipo de datos correcto para la propiedad o el campo de datos.

Para obtener información sobre las propiedades, los campos de datos y sus tipos, vea Constantes.

En el código de ejemplo siguiente se muestra cómo convertir los datos recuperados en SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE al tipo correcto.

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