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) |