Метод IMF2DBuffer::Lock2D (mfobjects.h)
Предоставляет вызывающей объекту доступ к памяти в буфере.
Синтаксис
HRESULT Lock2D(
[out] BYTE **ppbScanline0,
[out] LONG *plPitch
);
Параметры
[out] ppbScanline0
Получает указатель на первый байт верхней строки пикселей на изображении. Верхняя строка определяется как верхняя строка, когда изображение представляется средству просмотра и может быть не первой строкой в памяти.
[out] plPitch
Получает шаг поверхности в байтах. Шаг может быть отрицательным, что означает, что изображение ориентировано снизу вверх по памяти.
Возвращаемое значение
Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.
Код возврата | Описание |
---|---|
|
Метод выполнен успешно. |
|
Не удается заблокировать поверхность Direct3D. |
|
В настоящее время буфер не может быть заблокирован. |
Комментарии
Если p является указателем на первый байт в строке пикселей, p + (*plPitch) указывает на первый байт в следующей строке пикселей. Буфер может содержать заполнение после каждой строки пикселей, поэтому шаг может быть шире ширины изображения в байтах. Не получайте доступ к памяти, зарезервированной для байтов заполнения, так как она может быть недоступна для чтения или записи. Дополнительные сведения см. в разделе Шаг изображения.
Указатель, возвращенный в pbScanline0 , остается действительным до тех пор, пока вызывающий объект удерживает блокировку. Завершив доступ к памяти, вызовите IMF2DBuffer::Unlock2D , чтобы разблокировать буфер. Необходимо вызывать Unlock2D один раз для каждого вызова Lock2D. После разблокировки буфера указатель, возвращенный в pbScanline0 , становится недействительным и не должен использоваться. Как правило, lock2D лучше вызывать только в том случае, если требуется доступ к буферной памяти, а не раньше.
Значения, возвращаемые методами IMFMediaBuffer::GetCurrentLength и IMFMediaBuffer::GetMaxLength , не применяются к буферу, возвращаемого методом Lock2D . По этой же причине не нужно вызывать IMFMediaBuffer::SetCurrentLength после обработки данных в буфере, возвращаемых методом Lock2D .
Метод IMFMediaBuffer::Lock завершается сбоем, пока блокировка Lock2D удерживается, и наоборот. Приложения должны одновременно использовать только один из этих методов.
Если базовым буфером является поверхность Direct3D, метод завершается сбоем, если поверхность не блокируется.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | mfobjects.h (включая Mfidl.h) |
Библиотека | Mfuuid.lib |