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 以解锁缓冲区。 每次调用 Lock2DSize 时,都必须调用 Unlock2D 一次。
此方法等效于 IMF2DBuffer::Lock2D 方法。 但是, 首选 Lock2DSize ,因为它使调用方能够验证内存指针,并且它支持只读锁。 缓冲区不保证支持 IMF2DBuffer2 接口。 若要访问缓冲区,应按列出的顺序尝试以下方法:
- IMF2DBuffer2::Lock2DSize
- IMF2DBuffer::Lock2D
- IMFMediaBuffer::Lock
lockFlags 参数指定是针对只读访问、只写访问还是读/写访问锁定缓冲区。
- 如果已锁定缓冲区以便进行只读访问,则无法将其锁定以便进行写入访问。
- 如果已锁定缓冲区以便进行写入访问,则无法将其锁定以用于读取访问。
- 如果缓冲区已锁定以便进行读/写访问,则可以将其锁定以用于读取或写入访问。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | mfobjects.h (包括 Mfidl.h) |