Udostępnij przez


Pobieranie typów wektorów

Ważne

Zamiast tego użyj API czujników UWP.

Interfejs API czujnika oparty na modelu COM jest przestarzały i nie powinien być używany w nowych aplikacjach. Nie są planowane żadne dodatkowe funkcje ani ulepszenia, a pomoc techniczna będzie ograniczona.

Niektóre właściwości i pola danych zawierają tablice informacji. Na przykład właściwość SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE zawiera tablicę 4-bajtowych liczb całkowitych bez znaku. Jednak po otrzymaniu takich tablic za pośrednictwem interfejsu API czujnika, są one zawsze reprezentowane jako typ VT_VECTOR|UI1, tablica znaków jednobajtowych, niezależnie od rzeczywistego typu danych w tablicy. W przypadku tych typów należy dokładnie sprawdzić, czy zmienne w tablicy są rzutowane na właściwy typ danych dla właściwości lub pola danych.

Aby uzyskać informacje o właściwościach, polach danych i ich typach, zobacz Stałe.

Poniższy przykładowy kod pokazuje, jak rzutować dane pobrane w SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE do poprawnego typu.

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