Récupération des types de vecteurs
Certaines propriétés et champs de données contiennent des tableaux d’informations. Par exemple, la propriété SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE contient un tableau d’entiers non signés de 4 octets. Toutefois, lorsque vous recevez de tels tableaux via l’API Sensor, ils sont toujours représentés sous forme de type VT_VECTOR| UI1, un tableau de caractères d’un octet, quel que soit le type réel des données dans le tableau. Pour ces types, vous devez faire attention à caster les variables de tableau en type de données correct pour la propriété ou le champ de données.
Pour plus d’informations sur les propriétés, les champs de données et leurs types, consultez Constantes.
L’exemple de code suivant montre comment caster les données récupérées dans SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE vers le type correct.
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);