Bagikan melalui


Metode IMF2DBuffer2::Lock2DSize (mfobjects.h)

Memberi pemanggil akses ke memori di buffer.

Sintaks

HRESULT Lock2DSize(
  [in]  MF2DBuffer_LockFlags lockFlags,
  [out] BYTE                 **ppbScanline0,
  [out] LONG                 *plPitch,
  [out] BYTE                 **ppbBufferStart,
  [out] DWORD                *pcbBufferLength
);

Parameter

[in] lockFlags

Anggota enumerasi MF2DBuffer_LockFlags yang menentukan apakah akan mengunci buffer untuk membaca, menulis, atau keduanya.

[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. Langkah-langkahnya mungkin negatif, menunjukkan bahwa gambar berorientasi dari bawah ke atas dalam memori.

[out] ppbBufferStart

Menerima penunjuk ke awal buffer yang dapat diakses dalam memori.

[out] pcbBufferLength

Menerima panjang buffer, dalam byte.

Nilai kembali

Metode ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
S_OK
Berhasil.
MF_E_INVALIDREQUEST
Permintaan tidak valid. Buffer mungkin sudah dikunci dengan bendera penguncian yang tidak kompatibel. Lihat Keterangan.
E_OUTOFMEMORY
Memori tidak cukup untuk menyelesaikan operasi.

Keterangan

Ketika Anda selesai mengakses memori, panggil IMF2DBuffer::Unlock2D untuk membuka kunci buffer. Anda harus memanggil Unlock2D sekali untuk setiap panggilan ke Lock2DSize.

Metode ini setara dengan metode IMF2DBuffer::Lock2D . Namun, Lock2DSize lebih disukai karena memungkinkan pemanggil untuk memvalidasi penunjuk memori, dan karena mendukung kunci baca-saja. Buffer tidak dijamin untuk mendukung antarmuka IMF2DBuffer2 . Untuk mengakses buffer, Anda harus mencoba metode berikut dalam urutan yang tercantum:

  1. IMF2DBuffer2::Lock2DSize
  2. IMF2DBuffer::Lock2D
  3. IMFMediaBuffer::Lock
Parameter ppbBufferStart dan pcbBufferLength menerima batas memori buffer. Gunakan nilai-nilai ini untuk melindungi dari buffer overruns. Gunakan nilai ppbScanline0 dan plPitch untuk mengakses data gambar. Jika gambar di bawah ke atas dalam memori, ppbScanline0 akan menunjuk ke baris pemindaian terakhir dalam memori dan plPitch akan negatif. Untuk informasi selengkapnya, lihat Image Stride.

Parameter lockFlags menentukan apakah buffer dikunci untuk akses baca-saja, akses tulis-saja, atau akses baca/tulis.

  • Jika buffer sudah dikunci untuk akses baca-saja, buffer tidak dapat dikunci untuk akses tulis.
  • Jika buffer sudah dikunci untuk akses tulis-saja, buffer tidak dapat dikunci untuk akses baca.
  • Jika buffer sudah dikunci untuk akses baca/tulis, buffer dapat dikunci untuk akses baca atau tulis.
Jika memungkinkan, gunakan kunci baca-saja atau tulis-saja, dan hindari mengunci buffer untuk akses baca/tulis. Jika buffer mewakili permukaan DirectX Graphics Infrastructure (DXGI), kunci baca/tulis dapat menyebabkan salinan tambahan antara memori CPU dan memori GPU.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header mfobjects.h (termasuk Mfidl.h)

Lihat juga

IMF2DBuffer2