Metode IMF2DBuffer::Lock2D (mfobjects.h)

Memberi pemanggil akses ke memori di buffer.

Sintaks

HRESULT Lock2D(
  [out] BYTE **ppbScanline0,
  [out] LONG *plPitch
);

Parameter

[out] ppbScanline0

Menerima penunjuk ke byte pertama dari baris atas piksel dalam gambar. Baris atas didefinisikan sebagai baris atas saat gambar disajikan kepada penampil, dan mungkin bukan baris pertama dalam memori.

[out] plPitch

Menerima langkah permukaan, dalam byte. Langkahnya mungkin negatif, menunjukkan bahwa gambar berorientasi dari bawah ke atas dalam memori.

Mengembalikan nilai

Metode mengembalikan HRESULT. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil.
D3DERR_INVALIDCALL
Tidak dapat mengunci permukaan Direct3D.
MF_E_INVALIDREQUEST
Buffer tidak dapat dikunci saat ini.

Keterangan

Jika p adalah penunjuk ke byte pertama dalam baris piksel, p + (*plPitch) menunjuk ke byte pertama di baris piksel berikutnya. Buffer mungkin berisi padding setelah setiap baris piksel, sehingga langkahnya mungkin lebih lebar dari lebar gambar dalam byte. Jangan mengakses memori yang dicadangkan untuk padding byte, karena mungkin tidak dapat diakses baca atau dapat ditulis. Untuk informasi selengkapnya, lihat Image Stride.

Penunjuk yang dikembalikan dalam pbScanline0 tetap valid selama penelepon memegang kunci. Ketika Anda selesai mengakses memori, panggil IMF2DBuffer::Unlock2D untuk membuka kunci buffer. Anda harus memanggil Unlock2D sekali untuk setiap panggilan ke Lock2D. Setelah Anda membuka kunci buffer, pointer yang dikembalikan dalam pbScanline0 tidak lagi valid dan tidak boleh digunakan. Umumnya, yang terbaik adalah memanggil Lock2D hanya ketika Anda perlu mengakses memori buffer, dan tidak lebih awal.

Nilai yang dikembalikan oleh metode IMFMediaBuffer::GetCurrentLength dan IMFMediaBuffer::GetMaxLength tidak berlaku untuk buffer yang dikembalikan oleh metode Lock2D . Untuk alasan yang sama, Anda tidak perlu memanggil IMFMediaBuffer::SetCurrentLength setelah memanipulasi data dalam buffer yang dikembalikan oleh metode Lock2D .

Metode IMFMediaBuffer::Lock gagal saat kunci Lock2D ditahan, dan sebaliknya. Aplikasi hanya boleh menggunakan salah satu metode ini pada satu waktu.

Ketika buffer yang mendasar adalah permukaan Direct3D, metode gagal jika permukaan tidak dapat dikunci.

Persyaratan

   
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header mfobjects.h (termasuk Mfidl.h)
Pustaka Mfuuid.lib

Lihat juga

IMF2DBuffer

Buffer Media

Buffer Video Tidak Dikompresi