Sdílet prostřednictvím


Načítání typů vektorů

Důležité

Místo toho použijte rozhraní API senzoru UWP.

Rozhraní API snímače založené na modelu COM je zastaralé a nemělo by se používat v nových aplikacích. Neplánují se žádné další funkce ani vylepšení a podpora bude omezená.

Některé vlastnosti a datová pole obsahují pole informací. Například vlastnost SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE obsahuje pole čtyřbajtových bez znaménka celých čísel. Pokud však tato pole obdržíte prostřednictvím rozhraní API senzoru, jsou vždy reprezentována jako typ VT_VECTOR|UI1, pole jednobajtů znaků bez ohledu na skutečný typ dat v poli. U těchto typů je nutné pečlivě přetypovat proměnné pole na správný datový typ vlastnosti nebo datového pole.

Informace o vlastnostech, datových polích a jejich typech naleznete v tématu Konstanty.

Následující příklad kódu ukazuje, jak přetypovat data načtená v SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE na správný typ.

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