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