IDirectDrawSurface7::Metode kunci (ddraw.h)
Mendapatkan pointer ke memori permukaan.
Sintaks
HRESULT Lock(
[in] LPRECT unnamedParam1,
[in, out] LPDDSURFACEDESC2 unnamedParam2,
[in] DWORD unnamedParam3,
[in] HANDLE unnamedParam4
);
Parameter
[in] unnamedParam1
Penunjuk ke struktur RECT yang mengidentifikasi wilayah permukaan yang sedang dikunci. Jika parameter ini NULL, seluruh permukaan dikunci.
[in, out] unnamedParam2
Penunjuk ke struktur DDSURFACEDESC2 yang menjelaskan detail relevan tentang permukaan dan yang menerima informasi tentang permukaan.
[in] unnamedParam3
Kombinasi bendera yang menentukan cara mengunci permukaan. Bendera berikut didefinisikan:
DDLOCK_DONOTWAIT
Pada antarmuka IDirectDrawSurface7 , defaultnya adalah DDLOCK_WAIT. Jika Anda ingin mengganti default dan menggunakan waktu saat akselerator sibuk (sebagaimana ditandai dengan nilai pengembalian DDERR_WASSTILLDRAWING), gunakan DDLOCK_DONOTWAIT.
DDLOCK_EVENT
Saat ini tidak diimplementasikan.
DDLOCK_NOOVERWRITE
Baru untuk DirectX 7.0. Hanya digunakan dengan kunci vertex-buffer Direct3D. Menunjukkan bahwa tidak ada simpul yang dirujuk dalam operasi gambar sejak awal bingkai (atau kunci terakhir tanpa bendera ini) dimodifikasi selama kunci. Ini dapat berguna ketika Anda hanya ingin menambahkan data ke buffer vertex.
DDLOCK_NOSYSLOCK
Jangan mengambil Win16Mutex (juga dikenal sebagai Win16Lock). Bendera ini diabaikan saat mengunci permukaan utama.
DDLOCK_DISCARDCONTENTS
Baru untuk DirectX 7.0. Hanya digunakan dengan kunci vertex-buffer Direct3D. Menunjukkan bahwa tidak ada asumsi yang dibuat tentang isi buffer vertex selama kunci ini. Ini memungkinkan Direct3D atau driver untuk menyediakan area memori alternatif sebagai buffer vertex. Ini berguna ketika Anda berencana untuk menghapus konten buffer vertex dan mengisi data baru.
DDLOCK_OKTOSWAP
Bendera ini usang dan digantikan oleh bendera DDLOCK_DISCARDCONTENTS.
DDLOCK_READONLY
Menunjukkan bahwa permukaan yang dikunci hanya dapat dibaca.
DDLOCK_SURFACEMEMORYPTR
Menunjukkan bahwa penunjuk memori yang valid ke bagian atas persegi panjang yang ditentukan harus dikembalikan. Jika tidak ada persegi panjang yang ditentukan, penunjuk ke bagian atas permukaan akan dikembalikan. Ini adalah default.
DDLOCK_WAIT
Jika kunci tidak dapat diperoleh karena operasi transfer blok bit (bitblt) sedang berlangsung, Kunci mencoba lagi sampai kunci diperoleh atau terjadi kesalahan lain, seperti DDERR_SURFACEBUSY.
DDLOCK_WRITEONLY
Menunjukkan bahwa permukaan yang dikunci diaktifkan untuk menulis.
[in] unnamedParam4
Menangani peristiwa. Parameter ini saat ini tidak digunakan dan harus diatur ke NULL.
Mengembalikan nilai
Jika metode berhasil, nilai yang dikembalikan adalah DD_OK.
Jika gagal, metode dapat mengembalikan salah satu nilai kesalahan berikut:
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
- DDERR_SURFACEBUSY
- DDERR_SURFACELOST
- DDERR_WASSTILLDRAWING
Keterangan
Di IDirectDrawSurface7, perilaku default Kunci adalah menunggu akselerator selesai. Oleh karena itu, dalam kondisi default, Lock tidak pernah mengembalikan DDERR_WASSTILLDRAWING. Jika Anda ingin melihat kode kesalahan dan tidak menunggu sampai operasi bitblt berhasil, gunakan bendera DDLOCK_DONOTWAIT.
Setelah mengambil pointer memori permukaan, Anda dapat mengakses memori permukaan hingga metode IDirectDrawSurface7::Unlock yang sesuai dipanggil. Ketika permukaan tidak terkunci, penunjuk ke memori permukaan tidak valid.
Jangan panggil fungsi bitblt DirectDraw ke bitblt dari wilayah permukaan yang terkunci. Jika Anda melakukannya, bitblt mengembalikan DDERR_SURFACEBUSY atau DDERR_LOCKEDSURFACES. Fungsi blit GDI juga gagal secara diam-diam saat digunakan pada permukaan memori video terkunci.
Kecuali Anda menyertakan bendera DDLOCK_NOSYSLOCK, Lock menyebabkan DirectDraw menahan Win16Mutex (juga dikenal sebagai Win16Lock) sampai Anda memanggil metode IDirectDrawSurface7::Unlock . Debugger GUI tidak dapat beroperasi saat Win16Mutex ditahan.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | ddraw.h |
Pustaka | Ddraw.lib |
DLL | Ddraw.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk