PDD_CREATESURFACE funzione di callback (ddrawint.h)

La funzione di callback CreateD3DBuffer viene usata per creare un comando a livello di driver o un buffer del vertice della descrizione specificata.

Sintassi

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

Parametri

unnamedParam1

Punta a una struttura DD_CREATESURFACEDATA che contiene le informazioni necessarie per creare il buffer.

Valore restituito

CreateD3DBuffer restituisce uno dei codici di callback seguenti:

Commenti

Questo callback viene usato solo se il driver gestisce i buffer dei vertici e dei comandi a livello di driver.

Per impostazione predefinita, il driver non riceve una notifica quando viene creata una superficie primaria in Windows 2000 e versioni successive. Tuttavia, se il driver supporta il GUID GUID_NTPrivateDriverCaps in una chiamata DdGetDriverInfo e il flag di DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION viene impostato nel membro dwPrivateCaps della struttura DD_NTPRIVATEDRIVERCAPS , il driver viene notificato.

Il passo deve essere restituito nel membro lPitch delle strutture DD_SURFACE_GLOBAL e DDSURFACEDESC . Per la memoria lineare, il driver deve impostare dwBlockSizeX sulle dimensioni, in byte, dell'area di memoria e impostare dwBlockSizeY su 1. Entrambi sono membri della struttura DD_SURFACE_GLOBAL.

Questa chiamata ha lo stesso prototipo di DdCreateSurface. Il callback CreateD3DBuffer viene usato invece quando l'area in questione ha il flag DDSCAPS_EXECUTEBUFFER impostato nel membro ddsCaps della struttura DD_SURFACE_LOCAL . I flag di creazione del buffer sono DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER e DDSCAPS2_COMMANDBUFFER.

Il driver determina il tipo di buffer richiesto controllando il membro ddsCaps della struttura di DD_SURFACE_LOCAL per i flag seguenti:

Contrassegno Significato
DDSCAPS2_COMMANDBUFFER Il driver deve allocare un buffer dei comandi.
DDSCAPS2_VERTEXBUFFER Il driver deve allocare un buffer del vertice esplicito.
 
Nota Se nessun flag è impostato, il driver deve allocare un buffer di vertice implicito. I buffer dei vertici impliciti non devono essere inseriti nella memoria video perché devono essere letti/scritti. Solo i buffer dei vertici espliciti con il set di flag DDSCAPS_WRITEONLY possono essere posizionati in modo sicuro nella memoria video.
 
Il driver può allocare la memoria buffer stessa oppure può richiedere che Microsoft DirectDraw esegua la gestione della memoria. Se il driver esegue l'allocazione, deve scrivere un puntatore valido alla memoria nel membro fpVidMem della struttura DD_SURFACE_GLOBAL .

In alternativa, il driver può richiedere che DirectDraw alloca il buffer restituendo uno dei valori seguenti in fpVidMem:

Valore Significato
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw deve allocare la memoria del buffer dalla memoria offscreen.
DDHAL_PLEASEALLOC_USERMEM DirectDraw deve allocare la memoria del buffer dalla memoria utente. Il driver deve restituire anche le dimensioni, in byte, dell'area di memoria in dwUserMemSize.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione ddrawint.h (include Winddi.h)

Vedi anche

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo