Bagikan melalui


struktur DD_LOCKDATA (ddrawint.h)

Struktur DD_LOCKDATA berisi informasi yang diperlukan untuk melakukan penguncian seperti yang ditentukan oleh struktur parameter Microsoft DirectDraw.

Sintaks

typedef struct _DD_LOCKDATA {
  PDD_DIRECTDRAW_GLOBAL lpDD;
  PDD_SURFACE_LOCAL     lpDDSurface;
  DWORD                 bHasRect;
  RECTL                 rArea;
  LPVOID                lpSurfData;
  HRESULT               ddRVal;
  VOID                  *Lock;
  DWORD                 dwFlags;
  FLATPTR               fpProcess;
} *PDD_LOCKDATA, DD_LOCKDATA;

Anggota

lpDD

Menunjuk ke struktur DD_DIRECTDRAW_GLOBAL yang menjelaskan perangkat driver.

lpDDSurface

Menunjuk ke struktur DD_SURFACE_LOCAL yang menjelaskan permukaan--dalam kasus LockD3DBuffer, buffer--yang terkait dengan wilayah memori yang akan dikunci.

bHasRect

Menentukan apakah area di rArea valid. Nilai 0x00000001 menunjukkan area yang valid, 0x00000000 menunjukkan area yang tidak valid.

rArea

Menentukan struktur RECTL yang menentukan area di permukaan untuk dikunci.

lpSurfData

Menentukan lokasi di mana driver dapat mengembalikan penunjuk ke wilayah memori yang dikuncinya.

ddRVal

Menentukan lokasi di mana driver menulis nilai pengembalian dari panggilan balik DdLock atau LockD3DBuffer . Kode pengembalian DD_OK menunjukkan keberhasilan. Untuk informasi selengkapnya, lihat Mengembalikan Nilai untuk DirectDraw.

Lock

Digunakan oleh API DirectDraw dan tidak boleh diisi oleh driver.

dwFlags

Menentukan bitmask yang memberi tahu driver cara melakukan penguncian memori. Anggota ini adalah bitwise ATAU dari salah satu nilai berikut:

Bendera Makna
DDLOCK_DISCARDCONTENTS
Tidak ada asumsi yang dibuat tentang isi permukaan atau buffer vertex selama kunci ini. Ini memungkinkan dua hal:
1. Microsoft Direct3D atau driver dapat menyediakan area memori alternatif sebagai buffer vertex. Ini berguna ketika satu rencana untuk menghapus konten buffer vertex dan mengisi data baru.
2. Driver terkadang menyimpan data permukaan dalam format yang diurutkan ulang. Ketika aplikasi mengunci permukaan, driver dipaksa untuk membatalkan urutan data permukaan ini sebelum memungkinkan aplikasi untuk melihat konten permukaan.

Bendera ini adalah petunjuk bagi driver bahwa bendera ini dapat melewati proses pengurutan ulang karena aplikasi berencana untuk menimpa setiap piksel di permukaan atau persegi panjang terkunci (sehingga tetap menghapus piksel yang tidak diurutkan ulang). Aplikasi harus selalu mengatur bendera ini ketika mereka berniat menimpa seluruh permukaan atau persegi panjang terkunci.

DDLOCK_DONOTWAIT Pada antarmuka IDirectDrawSurface7 dan yang lebih tinggi, defaultnya adalah DDLOCK_WAIT. Jika Anda ingin mengganti default dan menggunakan waktu saat akselerator sibuk (sebagaimana ditandai dengan kode pengembalian DDERR_WASSTILLDRAWING) maka gunakan bendera ini.
DDLOCK_EVENT Atur jika handel peristiwa sedang diteruskan ke Kunci, yang memicu peristiwa ketika dapat mengembalikan penunjuk memori permukaan yang diminta.
DDLOCK_HASVOLUMETEXTUREBOXRECT Driver harus mengembalikan penunjuk memori yang valid ke awal tekstur subvolume yang ditentukan dalam persegi panjang (RECTL) di rArea. Driver memperoleh koordinat depan dan belakang subvolume dari 16 bit teratas koordinat kiri dan kanan (anggota kiri dan kanan RECTL) masing-masing. Koordinat kiri dan kanan dibatasi hingga 16 bit bawah. Jika tidak ada persegi panjang yang ditentukan, driver harus mengembalikan penunjuk ke bagian atas seluruh volume. Nilai ini tersedia di DirectX 8.1 dan yang lebih baru.
DDLOCK_NODIRTYUPDATE
Dikirim ke driver oleh runtime setelah aplikasi meminta untuk mengunci wilayah memori dengan bendera D3DLOCK_NO_DIRTY_UPDATE diatur. Dalam hal ini, driver tidak boleh menganggap wilayah memori yang dikuncinya sebagai kotor ketika runtime memanggil fungsi DdUnlock driver untuk memperbarui permukaan yang berisi wilayah ini. Sebaliknya, driver hanya boleh mempertimbangkan wilayah yang ditentukan dalam panggilan sebelumnya ke fungsi D3dDrawPrimitives2 menggunakan enumerator D3DDP2OP_ADDDIRTYRECT dan D3DDP2OP_ADDDIRTYBOX sebagai kotor.
Secara default, kunci pada permukaan menambahkan wilayah kotor ke permukaan tersebut.
DDLOCK_NOOVERWRITE Hanya digunakan dengan kunci buffer vertex Direct3D. Menunjukkan bahwa tidak ada simpul yang disebut dalam panggilan IDirect3DDevice7::D rawPrimitiveVB dan IDirect3DDevice7::D rawIndexedPrimitiveVB (dijelaskan dalam dokumentasi Direct3D SDK) sejak awal bingkai (atau kunci terakhir tanpa bendera ini) dimodifikasi selama kunci. Ini dapat berguna ketika seseorang hanya menambahkan data ke buffer vertex.
DDLOCK_NOSYSLOCK
Menunjukkan bahwa kunci seluruh sistem tidak boleh diambil ketika permukaan ini dikunci. Ini memiliki beberapa keuntungan saat mengunci permukaan memori video, seperti respons kursor, kemampuan untuk memanggil lebih banyak fungsi Microsoft Windows, dan penelusuran kesalahan yang lebih mudah. Namun, aplikasi yang menentukan bendera ini harus mematuhi sejumlah kondisi yang didokumentasikan dalam file bantuan.
Bendera ini tidak dapat ditentukan saat mengunci bendera utama.
DDLOCK_OKTOSWAP Sama seperti DDLOCK_DISCARDCONTENTS.
DDLOCK_READONLY Permukaan yang dikunci hanya akan dibaca. Pada Windows 2000 dan yang lebih baru, bendera ini tidak pernah diatur.
DDLOCK_SURFACEMEMORYPTR Driver harus mengembalikan penunjuk memori yang valid ke bagian atas persegi panjang yang ditentukan dalam rArea. Jika tidak ada persegi panjang yang ditentukan, driver harus mengembalikan penunjuk ke bagian atas permukaan.
DDLOCK_WAIT Atur untuk menunjukkan bahwa Kunci harus menunggu hingga dapat memperoleh penunjuk memori yang valid sebelum kembali. Jika bit ini diatur, Lock tidak pernah mengembalikan DDERR_WASSTILLDRAWING.
DDLOCK_WRITEONLY Permukaan yang dikunci hanya akan ditulis. Pada Windows 2000 dan yang lebih baru, bendera ini tidak pernah diatur.

fpProcess

Menentukan penunjuk ke pemetaan mode pengguna memori driver. Driver melakukan pemetaan ini di DdMapMemory. Hanya Windows 2000 dan yang lebih baru.

Persyaratan

   
Header ddrawint.h (termasuk Winddi.h)

Lihat juga

DdLock

DdMapMemory

LockD3DBuffer