Freigeben über


PDD_CREATESURFACE Rückruffunktion (ddrawint.h)

Die Rückruffunktion CreateD3DBuffer wird verwendet, um einen Befehl auf Treiberebene oder einen Scheitelpunktpuffer der angegebenen Beschreibung zu erstellen.

Syntax

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

Parameter

unnamedParam1

Verweist auf eine DD_CREATESURFACEDATA-Struktur , die die zum Erstellen des Puffers erforderlichen Informationen enthält.

Rückgabewert

CreateD3DBuffer gibt einen der folgenden Rückrufcodes zurück:

Hinweise

Dieser Rückruf wird nur verwendet, wenn der Treiber Befehl und Scheitelpunktpuffer auf Treiberebene verwaltet.

Standardmäßig wird der Treiber nicht benachrichtigt, wenn eine primäre Oberfläche unter Windows 2000 und höheren Versionen erstellt wird. Wenn der Treiber jedoch die GUID_NTPrivateDriverCaps GUID in einem DdGetDriverInfo-Aufruf unterstützt und das DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION-Flag im dwPrivateCaps-Member der DD_NTPRIVATEDRIVERCAPS-Struktur festgelegt ist, wird der Treiber benachrichtigt.

Die Tonhöhe muss im lPitch-Element der DD_SURFACE_GLOBAL - und DDSURFACEDESC-Struktur zurückgegeben werden. Für den linearen Arbeitsspeicher sollte der Treiber dwBlockSizeX auf die Größe (in Bytes) des Speicherbereichs festlegen und dwBlockSizeY auf 1 festlegen. Beide sind Elemente der DD_SURFACE_GLOBAL-Struktur.

Dieser Aufruf verfügt über denselben Prototyp wie DdCreateSurface. Der CreateD3DBuffer-Rückruf wird stattdessen verwendet, wenn auf der betreffenden Oberfläche das DDSCAPS_EXECUTEBUFFER-Flag im ddsCaps-Member der DD_SURFACE_LOCAL-Struktur festgelegt ist. Die Puffererstellungsflags sind DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER und DDSCAPS2_COMMANDBUFFER.

Der Treiber bestimmt den Typ des angeforderten Puffers, indem er den ddsCaps-Member der DD_SURFACE_LOCAL-Struktur auf die folgenden Flags überprüft:

Flag Bedeutung
DDSCAPS2_COMMANDBUFFER Der Treiber sollte einen Befehlspuffer zuordnen.
DDSCAPS2_VERTEXBUFFER Der Treiber sollte einen expliziten Vertexpuffer zuordnen.
 
Hinweis Wenn keines der beiden Flags festgelegt ist, sollte der Treiber einen impliziten Vertexpuffer zuweisen. Implizite Vertexpuffer sollten nicht im Videospeicher platziert werden, da von ihnen lese-/schreibzugriff erwartet wird. Nur explizite Vertexpuffer mit dem DDSCAPS_WRITEONLY-Flags können sicher im Videospeicher platziert werden.
 
Der Treiber kann den Pufferspeicher selbst zuordnen oder die Speicherverwaltung von Microsoft DirectDraw anfordern. Wenn der Treiber die Zuordnung ausführt, muss er einen gültigen Zeiger auf den Arbeitsspeicher im fpVidMem-Member der DD_SURFACE_GLOBAL Struktur schreiben.

Alternativ kann der Treiber anfordern, dass DirectDraw den Puffer zuordnen soll, indem er einen der folgenden Werte in fpVidMem zurückgibt:

Wert Bedeutung
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw sollte den Pufferspeicher aus dem Offscreenspeicher zuordnen.
DDHAL_PLEASEALLOC_USERMEM DirectDraw sollte den Pufferspeicher aus dem Benutzerspeicher zuordnen. Der Treiber muss auch die Größe des Arbeitsspeicherbereichs in dwUserMemSize in Bytes zurückgeben.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile ddrawint.h (include Winddi.h)

Weitere Informationen

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo