次の方法で共有


ベクター型の取得

一部のプロパティとデータ フィールドには、情報の配列が含まれています。 たとえば、SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE プロパティには、4 バイトの符号なし整数の配列が含まれています。 ただし、Sensor API を介してこのような配列を受け取ると、常に型 VT_VECTOR|UI1。配列内のデータの実際の型に関係なく、1 バイト文字の配列。 これらの型では、プロパティまたはデータ フィールドの正しいデータ型に配列変数をキャストするように注意する必要があります。

プロパティ、データ フィールド、およびその型の詳細については、「 定数」を参照してください。

次のコード例は、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);