擷取向量類型
某些屬性和數據欄位包含資訊的陣列。 例如,SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE屬性包含 4 位元組無符號整數的陣列。 不過,當您透過感測器 API 接收這類陣列時,它們一律會以 VT_VECTOR|UI1 類型表示,這是單位元組字元的陣列,不論陣列中實際數據類型為何。 針對這些類型,您必須小心地將陣列變數轉換成屬性或數據欄位的正確資料型別。
如需屬性、資料欄位及其類型的相關信息,請參閱 常數。
下列範例程式代碼示範如何將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);