Bagikan melalui


PFND3DDDI_LOCK fungsi panggilan balik (d3dumddi.h)

Fungsi Lock mengunci sumber daya atau permukaan yang diberikan dalam sumber daya.

Sintaks

PFND3DDDI_LOCK Pfnd3dddiLock;

HRESULT Pfnd3dddiLock(
  HANDLE hDevice,
  D3DDDIARG_LOCK *unnamedParam2
)
{...}

Parameter

hDevice

Handel ke perangkat tampilan (konteks grafis).

unnamedParam2

pData [masuk, keluar]

Penunjuk ke struktur D3DDDIARG_LOCK yang menjelaskan sumber daya atau permukaan dalam sumber daya untuk dikunci.

Menampilkan nilai

Lock mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
S_OK Sumber daya berhasil dikunci.
E_OUTOFMEMORY Kunci tidak dapat mengalokasikan memori yang diperlukan untuk menyelesaikannya.
D3DDDIERR_WASSTILLDRAWING Sumber daya tidak menganggur ketika runtime Microsoft Direct3D yang disebut fungsi Kunci dengan bendera bit-field DoNotWait diatur dalam anggota Bendera D3DDDIARG_LOCK .

Keterangan

Runtime Microsoft Direct3D memanggil fungsi Kunci driver tampilan mode pengguna untuk mengunci sumber daya atau permukaan dalam sumber daya. Sumber daya atau permukaan terkunci ini dapat dibaca dari atau ditulis ke dengan menggunakan operasi baca dan tulis dari CPU. Ketika runtime memanggil Lock, driver tampilan mode pengguna harus memanggil fungsi panggilan balik pfnLockCb runtime untuk mengunci alokasi yang sesuai dengan sumber daya atau permukaan. Perhatikan bahwa karena driver tampilan mode pengguna dapat mengalokasikan beberapa alokasi untuk setiap sumber daya atau permukaan, driver tampilan mode pengguna mungkin diperlukan untuk mengonversi atau memproses pointer alokasi yang dikembalikan dari pfnLockCb sebelum mengembalikan panggilan Kunci ke runtime.

Biasanya, panggilan ke Lock diikuti dengan mencocokkan panggilan ke fungsi Buka Kunci driver sebelum driver menerima panggilan apa pun ke fungsi draw-primitifnya (yaitu, panggilan ke DrawIndexedPrimitive, DrawIndexedPrimitive2, DrawPrimitive, dan DrawPrimitive2). Pesanan ini menjamin bahwa driver tidak pernah diminta untuk menarik dari sumber daya yang terkunci. Namun, terkadang, ketika melakukan transformasi dan pencahayaan perangkat lunak, runtime harus memanggil salah satu fungsi draw-primitive driver sebelum membuka kunci sumber daya (saat ini, hanya buffer vertex yang menunjukkan perilaku ini). Runtime menandai buffer vertex di mana perilaku yang tidak biasa ini mungkin terjadi dengan bendera bit-field MightDrawFromLocked di anggota Bendera struktur D3DDDIARG_CREATERESOURCE dan D3DDDIARG_LOCK (yaitu, baik saat pembuatan maupun pada waktu kunci). Ketika perangkat keras secara aktif merender dari buffer vertex terkunci, driver tidak diperlukan untuk mengambil tindakan khusus karena runtime tidak akan menimpa data apa pun di buffer vertex terkunci .

Runtime memanggil fungsi Kunci driver tampilan mode pengguna untuk mengunci permukaan memori sistem yang telah dialokasikan sebelumnya juga. Operasi ini memungkinkan driver tampilan mode pengguna untuk menyinkronkan referensi dengan benar ke permukaan seperti itu yang mungkin ada di aliran perintah perangkat keras. Driver tampilan mode pengguna dapat menyelesaikan sinkronisasi dengan:

  • Flushing (yaitu, memanggil fungsi panggilan balik pfnRenderCb runtime) perintah yang luar biasa seperlunya.
  • Memanggil pfnLockCb dengan handel alokasi yang sesuai untuk perintah yang telah dikirimkan ke perangkat keras.
Driver tampilan mode pengguna mengembalikan penunjuk ke memori untuk permukaan terkunci dan pitch permukaan di pSurfData dan anggota Pitch dari struktur D3DDDIARG_LOCK. Namun, untuk permukaan memori sistem yang telah dialokasikan sebelumnya, runtime mengabaikan memori dan pitch yang ditetapkan driver, meskipun driver masih dapat gagal dalam panggilan Kunci (dan dengan demikian gagal kembali ke aplikasi). Runtime mengatur bendera bit-field NotifyOnly di anggota Bendera struktur D3DDDIARG_LOCK untuk membedakan panggilan Kunci yang mengunci permukaan memori sistem yang telah dialokasikan sebelumnya dari panggilan Kunci lainnya.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Universal
Header d3dumddi.h (termasuk D3dumddi.h)

Lihat juga

D3DDDIARG_LOCK

D3DDDI_ALLOCATIONINFO

D3DDDI_DEVICEFUNCS

pfnLockCb

pfnRenderCb