Abrufen von Vektortypen

Einige Eigenschaften und Datenfelder enthalten Arrays von Informationen. Die SENSOR PROPERTY LIGHT RESPONSE CURVE-Eigenschaft enthält beispielsweise ein Array von _ _ _ _ 4-Byte-Ganzzahlen ohne Vorzeichen. Wenn Sie solche Arrays jedoch über die Sensor-API empfangen, werden sie immer als Typ VT VECTOR UI1 dargestellt, ein Array von Einzel _ bytezeichen, unabhängig vom tatsächlichen Typ der Daten im | Array. Bei diesen Typen müssen Sie darauf achten, Arrayvariablen in den richtigen Datentyp für die Eigenschaft oder das Datenfeld zu ändern.

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