Compartir a través de


Método IWICBitmapLock::GetDataPointer (wincodec.h)

Obtiene el puntero al píxel superior izquierdo del rectángulo bloqueado.

Sintaxis

HRESULT GetDataPointer(
  [out] UINT             *pcbBufferSize,
  [out] WICInProcPointer *ppbData
);

Parámetros

[out] pcbBufferSize

Tipo: UINT*

Puntero que recibe el tamaño del búfer.

[out] ppbData

Tipo: BYTE**

Puntero que recibe un puntero al píxel superior izquierdo del rectángulo bloqueado.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

El puntero proporcionado por este método no debe usarse fuera de la duración del propio bloqueo.

GetDataPointer no está disponible en aplicaciones de apartamento multiproceso.

Ejemplos

En el ejemplo siguiente, los datos a los que apunta IWICBitmapLock son ceros.


    IWICImagingFactory *pFactory = NULL;
    IWICBitmap *pBitmap = NULL;

    UINT uiWidth = 640;
    UINT uiHeight = 480;
    WICPixelFormatGUID formatGUID = GUID_WICPixelFormat32bppARGB;

    WICRect rcLock = { 0, 0, uiWidth, uiHeight };
    IWICBitmapLock *pLock = NULL;

    HRESULT hr = CoCreateInstance(
        CLSID_WICImagingFactory,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_IWICImagingFactory,
        (LPVOID*)&pFactory
        );

    if (SUCCEEDED(hr))
    {
        hr = pFactory->CreateBitmap(uiWidth, uiHeight, formatGUID, WICBitmapCacheOnDemand, &pBitmap);
    }

    if (SUCCEEDED(hr))
    {
        hr = pBitmap->Lock(&rcLock, WICBitmapLockWrite, &pLock);

        if (SUCCEEDED(hr))
        {
            UINT cbBufferSize = 0;
            UINT cbStride = 0;
            BYTE *pv = NULL;

            // Retrieve the stride.
            hr = pLock->GetStride(&cbStride);

            if (SUCCEEDED(hr))
            {
                hr = pLock->GetDataPointer(&cbBufferSize, &pv);
            }
            if (SUCCEEDED(hr))
            {
                // Access the bitmap memory starting at pv, where
                // each row begins cbStride bytes after the start
                // of the preceding row.
            }

            // Release the bitmap lock.
            pLock->Release();
        }
    }

    if (pBitmap)
    {
        pBitmap->Release();
    }

    if (pFactory)
    {
        pFactory->Release();
    }

    return hr;

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP con SP2, Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincodec.h
Library Windowscodecs.lib
Archivo DLL Windowscodecs.dll