Partager via


PDD_CREATESURFACE fonction de rappel (ddrawint.h)

La fonction de rappel CreateD3DBuffer est utilisée pour créer une commande au niveau du pilote ou une mémoire tampon de vertex de la description spécifiée.

Syntaxe

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

Paramètres

unnamedParam1

Pointe vers une structure DD_CREATESURFACEDATA qui contient les informations requises pour créer la mémoire tampon.

Valeur retournée

CreateD3DBuffer retourne l’un des codes de rappel suivants :

Remarques

Ce rappel est utilisé uniquement si le pilote gère les mémoires tampons de commande et de vertex au niveau du pilote.

Par défaut, le pilote n’est pas averti lorsqu’une surface principale est créée sur Windows 2000 et versions ultérieures. Toutefois, si le pilote prend en charge le GUID GUID_NTPrivateDriverCaps dans un appel DdGetDriverInfo et que l’indicateur DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION est défini dans le membre dwPrivateCaps de la structure DD_NTPRIVATEDRIVERCAPS , le pilote est averti.

Le pitch doit être retourné dans le membre lPitch des structures DD_SURFACE_GLOBAL et DDSURFACEDESC . Pour la mémoire linéaire, le pilote doit définir dwBlockSizeX sur la taille, en octets, de la région de mémoire et définir dwBlockSizeY sur 1. Les deux sont membres de la structure DD_SURFACE_GLOBAL.

Cet appel a le même prototype que DdCreateSurface. Le rappel CreateD3DBuffer est utilisé à la place lorsque la surface en question a l’indicateur DDSCAPS_EXECUTEBUFFER défini dans le membre ddsCaps de la structure DD_SURFACE_LOCAL . Les indicateurs de création de mémoire tampon sont DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER et DDSCAPS2_COMMANDBUFFER.

Le pilote détermine le type de mémoire tampon demandée en vérifiant le membre ddsCaps de la structure DD_SURFACE_LOCAL pour les indicateurs suivants :

Indicateur Signification
DDSCAPS2_COMMANDBUFFER Le pilote doit allouer une mémoire tampon de commandes.
DDSCAPS2_VERTEXBUFFER Le pilote doit allouer une mémoire tampon de vertex explicite.
 
Note Si aucun indicateur n’est défini, le pilote doit allouer une mémoire tampon de vertex implicite. Les tampons de vertex implicites ne doivent pas être placés dans la mémoire vidéo, car ils sont censés être en lecture/écriture. Seules les mémoires tampons de vertex explicites dont l’indicateur DDSCAPS_WRITEONLY est défini peuvent être placées en toute sécurité dans la mémoire vidéo.
 
Le pilote peut allouer la mémoire tampon elle-même ou demander à Microsoft DirectDraw d’effectuer la gestion de la mémoire. Si le pilote effectue l’allocation, il doit écrire un pointeur valide vers la mémoire dans le membre fpVidMem de la structure DD_SURFACE_GLOBAL .

Le pilote peut également demander à DirectDraw d’allouer la mémoire tampon en retournant l’une des valeurs suivantes dans fpVidMem :

Valeur Signification
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw doit allouer la mémoire tampon à partir de la mémoire hors écran.
DDHAL_PLEASEALLOC_USERMEM DirectDraw doit allouer la mémoire tampon à partir de la mémoire utilisateur. Le pilote doit également retourner la taille, en octets, de la région de mémoire dans dwUserMemSize.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête ddrawint.h (incluez Winddi.h)

Voir aussi

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo