Método IMF2DBuffer::Lock2D (mfobjects.h)
Proporciona al autor de la llamada acceso a la memoria del búfer.
Sintaxis
HRESULT Lock2D(
[out] BYTE **ppbScanline0,
[out] LONG *plPitch
);
Parámetros
[out] ppbScanline0
Recibe un puntero al primer byte de la fila superior de píxeles de la imagen. La fila superior se define como la fila superior cuando se presenta la imagen al visor y es posible que no sea la primera fila en la memoria.
[out] plPitch
Recibe el intervalo de superficie, en bytes. El paso puede ser negativo, lo que indica que la imagen está orientada desde la parte inferior hacia arriba en la memoria.
Valor devuelto
El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.
Código devuelto | Descripción |
---|---|
|
El método se ha llevado a cabo de forma correcta. |
|
No se puede bloquear la superficie de Direct3D. |
|
El búfer no se puede bloquear en este momento. |
Comentarios
Si p es un puntero al primer byte de una fila de píxeles, p + (*plPitch) apunta al primer byte de la siguiente fila de píxeles. Un búfer puede contener relleno después de cada fila de píxeles, por lo que el intervalo puede ser más ancho que el ancho de la imagen en bytes. No tenga acceso a la memoria que está reservada para bytes de relleno, ya que es posible que no sea accesible para lectura o escritura. Para obtener más información, consulte Image Stride.
El puntero devuelto en pbScanline0 sigue siendo válido siempre que el autor de la llamada contenga el bloqueo. Cuando haya terminado de acceder a la memoria, llame a IMF2DBuffer::Unlock2D para desbloquear el búfer. Debes llamar a Unlock2D una vez para cada llamada a Lock2D. Después de desbloquear el búfer, el puntero devuelto en pbScanline0 ya no es válido y no debe usarse. Por lo general, es mejor llamar a Lock2D solo cuando necesite acceder a la memoria del búfer y no antes.
Los valores devueltos por los métodos IMFMediaBuffer::GetCurrentLength y IMFMediaBuffer::GetMaxLength no se aplican al búfer devuelto por el método Lock2D . Por la misma razón, no es necesario llamar a IMFMediaBuffer::SetCurrentLength después de manipular los datos en el búfer devuelto por el método Lock2D .
El método IMFMediaBuffer::Lock produce un error mientras se mantiene el bloqueo Lock2D y viceversa. Las aplicaciones solo deben usar uno de estos métodos a la vez.
Cuando el búfer subyacente es una superficie direct3D, se produce un error en el método si la superficie no se puede bloquear.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | 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 | mfobjects.h (include Mfidl.h) |
Library | Mfuuid.lib |