Freigeben über


Abrufen von Vektortypen

Einige Eigenschaften und Datenfelder enthalten Arrays von Informationen. Die eigenschaft SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE enthält beispielsweise ein Array von 4-Byte-Ganzzahlen ohne Vorzeichen. Wenn Sie solche Arrays jedoch über die Sensor-API erhalten, werden sie immer als Typ VT_VECTOR| UI1, ein Array von Einzelbytezeichen, unabhängig vom tatsächlichen Typ der Daten im Array. Für diese Typen müssen Sie darauf achten, Arrayvariablen in den richtigen Datentyp für das Eigenschafts- oder Datenfeld zu umwandeln.

Informationen zu Eigenschaften, Datenfeldern und deren Typen finden Sie unter Konstanten.

Der folgende Beispielcode zeigt, wie die in SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE abgerufenen Daten in den richtigen Typ umgewandelt werden.

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