Condividi tramite


DD_LOCKDATA struttura (ddrawint.h)

La struttura DD_LOCKDATA contiene informazioni necessarie per eseguire un blocco come definito dalle strutture dei parametri di Microsoft DirectDraw.

Sintassi

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;

Members

lpDD

Punta a una struttura DD_DIRECTDRAW_GLOBAL che descrive il dispositivo del driver.

lpDDSurface

Punta a una struttura DD_SURFACE_LOCAL che descrive la superficie nel caso di LockD3DBuffer, un buffer associato all'area di memoria da bloccare.

bHasRect

Specifica se l'area in rArea è valida. Un valore di 0x00000001 indica un'area valida, 0x00000000 indica un'area non valida.

rArea

Specifica una struttura RECTL che definisce l'area sulla superficie da bloccare.

lpSurfData

Specifica il percorso in cui il driver può restituire un puntatore all'area di memoria bloccata.

ddRVal

Specifica il percorso in cui il driver scrive il valore restituito del callback DdLock o LockD3DBuffer . Un codice restituito di DD_OK indica l'esito positivo. Per altre informazioni, vedere Restituire valori per DirectDraw.

Lock

Usato dall'API DirectDraw e non deve essere compilato dal driver.

dwFlags

Specifica una maschera bit che indica al driver come eseguire il blocco della memoria. Questo membro è un OR bit per bit di uno dei valori seguenti:

Flag Significato
DDLOCK_DISCARDCONTENTS
Nessun presupposto viene effettuato sul contenuto del buffer di superficie o vertice durante questo blocco. Ciò consente due operazioni:
1. Microsoft Direct3D o il driver può fornire un'area di memoria alternativa come buffer del vertice. Ciò è utile quando si prevede di cancellare il contenuto del buffer dei vertici e compilare nuovi dati.
2. I driver a volte archiviano i dati di superficie in un formato riordinato. Quando l'applicazione blocca l'area, il driver viene costretto a annullare l'ordinamento dei dati di superficie prima di consentire all'applicazione di visualizzare il contenuto della superficie.

Questo flag è un suggerimento per il driver che può ignorare il processo di annullamento dell'ordinamento poiché i piani dell'applicazione sovrascrivono ogni singolo pixel nella superficie o nel rettangolo bloccato (e quindi cancellare tutti i pixel non riordinati comunque). Le applicazioni devono sempre impostare questo flag quando intendono sovrascrivere l'intera superficie o il rettangolo bloccato.

DDLOCK_DONOTWAIT Nelle interfacce IDirectDrawSurface7 e successive il valore predefinito è DDLOCK_WAIT. Se si desidera eseguire l'override del valore predefinito e usare il tempo in cui l'acceleratore è occupato (come indicato dal codice restituito DDERR_WASSTILLDRAWING) usare questo flag.
DDLOCK_EVENT Impostare se un handle eventi viene passato a Lock, che attiva l'evento quando può restituire il puntatore alla memoria di superficie richiesto.
DDLOCK_HASVOLUMETEXTUREBOXRECT Il driver deve restituire un puntatore di memoria valido all'inizio della trama subvolume specificata nel rettangolo (RECTL) in rArea. Il driver ottiene rispettivamente le coordinate frontali e indietro della sottovolume dai primi 16 bit delle coordinate sinistro e destra (a sinistra e a destra di RECTL). Le coordinate a sinistra e destra sono vincolate ai 16 bit inferiori. Se non viene specificato alcun rettangolo, il driver deve restituire un puntatore all'inizio dell'intero volume. Questo valore è disponibile in DirectX 8.1 e versioni successive.
DDLOCK_NODIRTYUPDATE
Inviato al driver dal runtime dopo che un'applicazione richiede di bloccare un'area di memoria con il flag di D3DLOCK_NO_DIRTY_UPDATE impostato. In questo caso, il driver non deve considerare l'area di memoria bloccata come sporca quando il runtime chiama la funzione DdUnlock del driver per aggiornare una superficie che contiene questa area. Invece, il driver deve considerare solo le aree specificate nelle chiamate precedenti alla funzione D3dDrawPrimitives2 usando i D3DDP2OP_ADDDIRTYRECT e D3DDP2OP_ADDDIRTYBOX enumeratori come sporchi.
Per impostazione predefinita, un blocco su una superficie aggiunge un'area sporca a tale superficie.
DDLOCK_NOOVERWRITE Usato solo con blocchi del buffer vertex Direct3D. Indica che nessun vertice a cui è stato fatto riferimento nelle chiamate IDirect3DDevice7::D rawPrimitiveVB e IDirect3DDevice7::DrawIndexedPrimitiveVB (descritto nella documentazione di Direct3D SDK) dall'inizio del frame (o l'ultimo blocco senza questo flag) vengono modificati durante il blocco. Ciò può risultare utile quando uno aggiunge solo i dati al buffer del vertice.
DDLOCK_NOSYSLOCK
Indica che un blocco a livello di sistema non deve essere preso quando questa superficie è bloccata. Questo offre diversi vantaggi quando si bloccano le superfici di memoria video, ad esempio la velocità di risposta del cursore, la possibilità di chiamare più funzioni di Microsoft Windows e di semplificare il debug. Tuttavia, un'applicazione che specifica questo flag deve essere conforme a una serie di condizioni documentate nel file della Guida.
Impossibile specificare questo flag quando si blocca il valore primario.
DDLOCK_OKTOSWAP Uguale a DDLOCK_DISCARDCONTENTS.
DDLOCK_READONLY La superficie bloccata verrà lette solo da. In Windows 2000 e versioni successive questo flag non viene mai impostato.
DDLOCK_SURFACEMEMORYPTR Il driver deve restituire un puntatore alla memoria valido nella parte superiore del rettangolo specificato in rArea. Se non viene specificato alcun rettangolo, il driver deve restituire un puntatore alla parte superiore della superficie.
DDLOCK_WAIT Impostare per indicare che Lock deve attendere fino a quando non può ottenere un puntatore alla memoria valido prima di restituire. Se questo bit è impostato, Lock non restituisce mai DDERR_WASSTILLDRAWING.
DDLOCK_WRITEONLY La superficie bloccata verrà scritta solo in. In Windows 2000 e versioni successive questo flag non viene mai impostato.

fpProcess

Specifica un puntatore a un mapping in modalità utente della memoria del driver. Il driver esegue questo mapping in DdMapMemory. Windows 2000 e versioni successive.

Requisiti

   
Intestazione ddrawint.h (include Winddi.h)

Vedi anche

DdLock

DdMapMemory

LockD3DBuffer