PFND3DDDI_PRESENT Rückruffunktion (d3dumddi.h)

Die Funktion "Präsentieren " benachrichtigt den Benutzermodusanzeigetreiber, dass eine Anwendung das Rendern abgeschlossen hat und fordert an, dass der Treiber die Quelloberfläche anzeigt, indem er entweder kopiert oder gekippt wird oder dass der Treiber einen Farbfüllungsvorgang ausführt.

Syntax

PFND3DDDI_PRESENT Pfnd3dddiPresent;

HRESULT Pfnd3dddiPresent(
  HANDLE hDevice,
  const D3DDDIARG_PRESENT *unnamedParam2
)
{...}

Parameter

hDevice

Ein Handle zum Anzeigegerät (Grafikkontext).

unnamedParam2

pData [in]

Ein Zeiger auf eine D3DDDIARG_PRESENT Struktur, die die zu anzeigende Ressource beschreibt.

Rückgabewert

Present gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Die Ressource wird erfolgreich angezeigt.
E_OUTOFMEMORY Present konnte den erforderlichen Arbeitsspeicher nicht zuweisen, damit er abgeschlossen ist.

Bemerkungen

Die Microsoft Direct3D-Runtime ruft die Funktion " Präsentieren" des Benutzermodus auf, um den Anzeigetreiber für den Benutzermodus zu benachrichtigen, dass eine Anwendung das Rendering abgeschlossen hat und anfordert, dass der Treiber die Quelloberfläche anzeigt oder dass der Treiber einen Farbfüllungsvorgang ausführt. Wenn das hSrcResource-Element der D3DDDIARG_PRESENT Struktur, auf die der pData-Parameter verweist, nicht NULL ist, fordert Present an, dass der Benutzermodus-Anzeigetreiber neue Inhalte auf dem Bildschirm anzeigt; wenn hSrcResourceNULL ist, stellen Sie anforderungen an, dass der Anzeigetreiber des Benutzermodus einen Farbfüllungsvorgang auf dem Bildschirm ausführt.

Wenn das hDstResource-Element der D3DDDIARG_PRESENT Struktur NULL ist, ist die Zieloberfläche unbekannt. Darüber hinaus werden die Zieloberfläche und eine Liste der Clipping-Rechtecks im Kernelmodus bestimmt, bevor der Hardwarebefehlsstrom über DMA an den Grafikprozessor gesendet wird.

Daher kann der Benutzermodusanzeigetreiber keine Hardwareanweisungen generieren, um den vorliegenden Vorgang auszuführen. Diese Hardwareanweisungen müssen vom Display-Miniport-Treiber generiert werden. Wenn das hSrcResource-Element von D3DDDIARG_PRESENT jedoch nicht NULL ist, muss der Benutzermodusanzeigetreiber den Zuordnungshandpunkt zur Quelloberfläche abgeleitet und diesen Handle in das hSrcAllocation-Element der D3DDDICB_PRESENT-Struktur in einen Aufruf der pfnPresentCb-Funktion einfügen. Der Display-Miniporttreiber kann dann erfolgreich die Hardwareanweisungen generieren. Der Benutzermodus-Anzeigetreiber leitet in der Regel den Zuordnungshandpunkt aus den Ressourceninformationen in der D3DDDIARG_PRESENT Struktur ab.

Wenn das hDstResource-Element von D3DDDIARG_PRESENT nicht NULL ist, ist die Zieloberfläche für die Gegenwart bekannt und der Benutzermodusanzeigetreiber muss das hDstAllocation-Element von D3DDDICB_PRESENT mit dem entsprechenden Zuordnungshandpunkt ausfüllen.

Wenn ein Benutzermodus-Anzeigetreiber eine DDI-Version von weniger als 0x0000000C verfügbar macht (der Treiber gibt diesen Wert im DriverVersion-Element der D3D10DDIARG_OPENADAPTER-Struktur in einem Aufruf der OpenAdapter-Funktiondes Treibers zurück), ruft die Direct3D-Runtime zuerst die Funktion "Löschmodus" des Benutzermodus auf, um alle herausragenden Hardwarebefehle im Befehlspuffer zu übermitteln, bevor die Laufzeit die Funktion " Präsentieren" des Benutzermodus anzeigt. Auf diese Weise wird die Funktion " Präsentieren " des Benutzermodus mit Rendervorgängen serialisiert (d. b. Aufrufe der PfnRenderCb-Funktion ). Wenn ein Benutzermodus-Anzeigetreiber eine DDI-Version von 0x0000000C oder höher verfügbar macht und die aufrufende Anwendung im Fenstermodus ausgeführt wird, ruft die Laufzeit auch "Flush " auf, bevor er "Present" aufruft. Wenn ein Benutzermodus-Anzeigetreiber eine DDI-Version von 0x0000000C oder höher verfügbar macht und die aufrufende Anwendung im Vollbildmodus ausgeführt wird , wird die Laufzeit vor dem Aufrufen "Present" nicht aufgerufen. Dieses Verhalten ermöglicht Treibern, die ihre eigene Threaderstellung implementieren, um Anrufe in der Warteschlange anzuzeigen. Ein Treiber, der eine DDI-Version von 0x0000000C oder höher verfügbar macht, muss pfnRenderCb aufrufen, um alle ausstehenden Befehlspuffer intern zu löschen, bevor der Treiber die pfnPresentCb-Funktion aufruft.

Requirements (Anforderungen)

   
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und späteren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Header d3dumddi.h (einschließlich D3dumddi.h)

Weitere Informationen

D3DDDIARG_PRESENT

D3DDDI_DEVICEFUNCS

DxgkDdiPresent

DxgkDdiRender

Leerung

pfnRenderCb