Метод IMF2DBuffer2::Lock2DSize (mfobjects.h)
Предоставляет вызывающей объекту доступ к памяти в буфере.
Синтаксис
HRESULT Lock2DSize(
[in] MF2DBuffer_LockFlags lockFlags,
[out] BYTE **ppbScanline0,
[out] LONG *plPitch,
[out] BYTE **ppbBufferStart,
[out] DWORD *pcbBufferLength
);
Параметры
[in] lockFlags
Член перечисления MF2DBuffer_LockFlags , который указывает, следует ли заблокировать буфер для чтения, записи или и того, и другого.
[out] ppbScanline0
Получает указатель на первый байт верхней строки пикселей на изображении. Верхняя строка определяется как верхняя строка, когда изображение представляется средству просмотра и может быть не первой строкой в памяти.
[out] plPitch
Получает шаг поверхности в байтах. Шаг может быть отрицательным, что означает, что изображение ориентировано снизу вверх по памяти.
[out] ppbBufferStart
Получает указатель на начало доступного буфера в памяти.
[out] pcbBufferLength
Получает длину буфера в байтах.
Возвращаемое значение
Этот метод может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Недопустимый запрос. Буфер уже может быть заблокирован с несовместимым флагом блокировки. См. заметки. |
|
Недостаточно памяти для завершения операции. |
Комментарии
Завершив доступ к памяти, вызовите IMF2DBuffer::Unlock2D , чтобы разблокировать буфер. Необходимо вызывать Unlock2D один раз для каждого вызова Lock2DSize.
Этот метод эквивалентен методу IMF2DBuffer::Lock2D . Тем не менее , Lock2DSize является предпочтительным, так как он позволяет вызывающему объекту проверять указатели памяти и поддерживает блокировки только для чтения. Буфер не гарантирует поддержку интерфейса IMF2DBuffer2 . Чтобы получить доступ к буферу, следует попробовать следующие методы в указанном порядке:
- IMF2DBuffer2::Lock2DSize
- IMF2DBuffer::Lock2D
- IMFMediaBuffer::Lock
Параметр lockFlags указывает, заблокирован ли буфер для доступа только для чтения, доступа только для записи или для чтения и записи.
- Если буфер уже заблокирован для доступа только для чтения, он не может быть заблокирован для доступа на запись.
- Если буфер уже заблокирован для доступа только для записи, он не может быть заблокирован для чтения.
- Если буфер уже заблокирован для доступа на чтение и запись, он может быть заблокирован для чтения или записи.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | mfobjects.h (включая Mfidl.h) |