Partager via


structure DD_LOCKDATA (ddrawint.h)

La structure de DD_LOCKDATA contient les informations nécessaires pour effectuer un verrou tel que défini par les structures de paramètres Microsoft DirectDraw.

Syntaxe

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;

Membres

lpDD

Pointe vers une structure DD_DIRECTDRAW_GLOBAL qui décrit l’appareil du pilote.

lpDDSurface

Pointe vers une structure DD_SURFACE_LOCAL qui décrit la surface( dans le cas de LockD3DBuffer, une mémoire tampon) associée à la région de mémoire à verrouiller.

bHasRect

Spécifie si la zone dans rArea est valide. La valeur 0x00000001 indique une zone valide, 0x00000000 indique une zone non valide.

rArea

Spécifie une structure RECTL qui définit la zone sur la surface à verrouiller.

lpSurfData

Spécifie l’emplacement dans lequel le pilote peut retourner un pointeur vers la région mémoire qu’il a verrouillée.

ddRVal

Spécifie l’emplacement dans lequel le pilote écrit la valeur de retour du rappel DdLock ou LockD3DBuffer . Un code de retour de DD_OK indique la réussite. Pour plus d’informations, consultez Valeurs de retour pour DirectDraw.

Lock

Utilisé par l’API DirectDraw et ne doit pas être renseigné par le pilote.

dwFlags

Spécifie un masque de bits qui indique au pilote comment effectuer le verrouillage de la mémoire. Ce membre est un or au niveau du bit de l’une des valeurs suivantes :

Indicateur Signification
DDLOCK_DISCARDCONTENTS
Aucune hypothèse n’est faite concernant le contenu de la mémoire tampon de surface ou de vertex pendant ce verrouillage. Cela permet deux choses :
1. Microsoft Direct3D ou le pilote peut fournir une autre zone de mémoire comme mémoire tampon de vertex. Cela est utile lorsque l’on prévoit d’effacer le contenu de la mémoire tampon de vertex et de remplir de nouvelles données.
2. Les pilotes stockent parfois des données surface dans un format réorganisé. Lorsque l’application verrouille la surface, le pilote est forcé d’annuler cette réorganisation des données de surface avant de permettre à l’application de voir le contenu de la surface.

Cet indicateur indique au pilote qu’il peut ignorer le processus de désorganisation, car l’application prévoit de remplacer chaque pixel dans la surface ou le rectangle verrouillé (et donc d’effacer les pixels non réorganisés de toute façon). Les applications doivent toujours définir cet indicateur lorsqu’elles ont l’intention de remplacer l’ensemble de la surface ou du rectangle verrouillé.

DDLOCK_DONOTWAIT Sur les interfaces IDirectDrawSurface7 et ultérieures, la valeur par défaut est DDLOCK_WAIT. Si vous souhaitez remplacer la valeur par défaut et utiliser l’heure à laquelle l’accélérateur est occupé (comme indiqué par le code de retour DDERR_WASSTILLDRAWING), utilisez cet indicateur.
DDLOCK_EVENT Définissez si un handle d’événement est passé à Lock, ce qui déclenche l’événement lorsqu’il peut retourner le pointeur de mémoire surface demandé.
DDLOCK_HASVOLUMETEXTUREBOXRECT Le pilote doit retourner un pointeur de mémoire valide vers le début de la texture sous-volume spécifiée dans le rectangle (RECTL) dans rArea. Le pilote obtient les coordonnées avant et arrière de la sous-activité à partir des 16 bits supérieurs des coordonnées gauche et droite (membres gauche et droit de RECTL) respectivement. Les coordonnées gauche et droite sont limitées aux 16 bits inférieurs. Si aucun rectangle n’est spécifié, le pilote doit retourner un pointeur vers le haut du volume entier. Cette valeur est disponible dans DirectX 8.1 et versions ultérieures.
DDLOCK_NODIRTYUPDATE
Envoyé au pilote par le runtime après qu’une application demande de verrouiller une région de mémoire avec l’indicateur D3DLOCK_NO_DIRTY_UPDATE défini. Dans ce cas, le pilote ne doit pas considérer la région de mémoire qu’il verrouille comme sale lorsque le runtime appelle la fonction DdUnlock du pilote pour mettre à jour une surface contenant cette région. Au lieu de cela, le pilote ne doit considérer que les régions spécifiées dans les appels précédents à sa fonction D3dDrawPrimitives2 en utilisant les énumérateurs D3DDP2OP_ADDDIRTYRECT et D3DDP2OP_ADDDIRTYBOX comme sale.
Par défaut, un verrou sur une surface ajoute une sale région à cette surface.
DDLOCK_NOOVERWRITE Utilisé uniquement avec les verrous de mémoire tampon de vertex Direct3D. Indique qu’aucun sommet auquel il a été fait référence dans IDirect3DDevice7::D rawPrimitiveVB et IDirect3DDevice7::D rawIndexedPrimitiveVB (décrit dans la documentation du SDK Direct3D) depuis le début du cadre (ou le dernier verrou sans cet indicateur) n’est modifié pendant le verrouillage. Cela peut être utile lorsque l’on ajoute uniquement des données au tampon de vertex.
DDLOCK_NOSYSLOCK
Indique qu’un verrou à l’échelle du système ne doit pas être effectué lorsque cette surface est verrouillée. Cela présente plusieurs avantages lors du verrouillage des surfaces de mémoire vidéo, tels que la réactivité du curseur, la possibilité d’appeler davantage de fonctions Microsoft Windows et la facilité de débogage. Toutefois, une application spécifiant cet indicateur doit respecter un certain nombre de conditions documentées dans le fichier d’aide.
Cet indicateur ne peut pas être spécifié lors du verrouillage du principal.
DDLOCK_OKTOSWAP Identique à DDLOCK_DISCARDCONTENTS.
DDLOCK_READONLY La surface verrouillée sera uniquement lue à partir de. Sur Windows 2000 et versions ultérieures, cet indicateur n’est jamais défini.
DDLOCK_SURFACEMEMORYPTR Le pilote doit retourner un pointeur de mémoire valide vers le haut du rectangle spécifié dans rArea. Si aucun rectangle n’est spécifié, le pilote doit retourner un pointeur vers le haut de la surface.
DDLOCK_WAIT Définissez pour indiquer que Lock doit attendre qu’il puisse obtenir un pointeur de mémoire valide avant de retourner. Si ce bit est défini, Verrou ne retourne jamais DDERR_WASSTILLDRAWING.
DDLOCK_WRITEONLY La surface verrouillée sera uniquement écrite dans. Sur Windows 2000 et versions ultérieures, cet indicateur n’est jamais défini.

fpProcess

Spécifie un pointeur vers un mappage en mode utilisateur de la mémoire du pilote. Le pilote effectue ce mappage dans DdMapMemory. Windows 2000 et versions ultérieures uniquement.

Spécifications

   
En-tête ddrawint.h (inclure Winddi.h)

Voir aussi

DdLock

DdMapMemory

LockD3DBuffer