Freigeben über


PFND3DDDI_SETASYNCCALLBACKSCB Rückruffunktion (d3dumddi.h)

Die funktion pfnSetAsyncCallbacksCb benachrichtigt die Microsoft Direct3D-Laufzeit, ob die Laufzeit Aufrufe der Rückruffunktionen der Laufzeit über einen Workerthread startet oder beendet.

Syntax

PFND3DDDI_SETASYNCCALLBACKSCB Pfnd3dddiSetasynccallbackscb;

HRESULT Pfnd3dddiSetasynccallbackscb(
  HANDLE hDevice,
  BOOL Enable
)
{...}

Parameter

hDevice

Ein Handle für das Anzeigegerät (Grafikkontext).

Enable

Ein boolescher Wert, der angibt, ob die Laufzeit Aufrufe der Rückruffunktionen der Laufzeit aus einem Workerthread startet oder beendet. TRUE gibt an, dass die Laufzeit mit dem Empfangen von Aufrufen der Rückruffunktionen von einem Arbeitsthread beginnt; FALSE gibt an, dass die Laufzeit keine Aufrufe mehr an die Rückruffunktionen eines Arbeitsthreads empfängt.

Rückgabewert

pfnSetAsyncCallbacksCb gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Die Direct3D-Laufzeit wurde erfolgreich benachrichtigt.
E_INVALIDARG Parameter wurden überprüft und ermittelt, dass sie falsch sind.

Diese Funktion kann auch andere HRESULT-Werte zurückgeben.

Bemerkungen

Wenn ein Anzeigetreiber im Benutzermodus seine eigenen Optimierungen mit mehreren Prozessorn implementiert (d. h., der Treiber erstellt einen Workerthread und verarbeitet Befehle in diesem Thread), muss der Treiber pfnSetAsyncCallbacksCb aufrufen, um die Direct3D-Laufzeit zu benachrichtigen, ob die Laufzeit Aufrufe der Rückruffunktionen der Laufzeit aus dem Workerthread startet oder beendet. Darüber hinaus dürfen solche Treiber die LockAsync-, UnlockAsync-und Funktionen umbenennen nicht implementieren. Dadurch wird sichergestellt, dass die Laufzeit nicht versucht, eigene Optimierungen mit mehreren Prozessorn zu verwenden.

Der Anzeigetreiber für den Benutzermodus kann pfnSetAsyncCallbacksCb- nur im Hauptanwendungsthread aufrufen (d. a. den Thread, der in den Treiber aufgerufen wurde). Der Workerthread des Treibers kann pfnSetAsyncCallbacksCbnicht aufrufen. Zu jedem Zeitpunkt kann nur ein Thread, der auf ein bestimmtes Renderinggerät verweist, in einer der Rückruffunktionen der Laufzeit ausgeführt werden.

Bevor der Benutzermodustreiber eine der Rückruffunktionen der Laufzeit in einem anderen Thread als dem Hauptanwendungsthread aufruft, muss der Treiber TRUE- an den parameter Enable in einem Aufruf von pfnSetAsyncCallbacksCbübergeben. Bevor der Benutzermodustreiber eine der Rückruffunktionen der Laufzeit im Hauptanwendungsthread aufruft, muss der Treiber FALSE- an den Parameter Enable in einem Aufruf von pfnSetAsyncCallbacksCbübergeben.

Innerhalb der Implementierung von Flush für jedes Renderinggerät ruft der Treiber pfnSetAsyncCallbacksCb auf und übergibt FALSE- an den parameter Enable.

Wenn der Treiber TRUE an den Parameter Enable in einem Aufruf von pfnSetAsyncCallbacksCbübergibt, versetzt sich die Laufzeit in einen Zustand, in dem sie nicht sofort auf geräteverlusten Situationen in ihren Rückruffunktionen reagiert. Wenn die Laufzeit ein Gerät erkennt, das in einer Rückruffunktion in diesem Zustand verloren geht, wird ein Bit festgelegt, das angibt, dass das Ereignis aufgetreten ist. Wenn der Treiber FALSE- an den Parameter Enable in einem Aufruf von pfnSetAsyncCallbacksCbübergibt, überprüft die Laufzeit das Bit, um zu ermitteln, ob ein Gerät verloren gegangen ist. Wenn das Bit festgelegt ist, führt die Laufzeit die typische Behandlung durch das Gerät verloren. Nach diesem Punkt empfängt der Treiber die meisten Aufrufe seiner Funktionen aus der Laufzeit nicht mehr.

Nur DirectX 9- und DirectX 9L-Versionen der Laufzeit unterstützen pfnSetAsyncCallbacksCb. DirectX 10 und höhere Versionen der Laufzeit legen das pfnSetAsyncCallbacksCb Member der D3DDDI_DEVICECALLBACKS Struktur auf NULL- fest, wenn die Laufzeit den CreateDevice(D3D10)--Funktion des Benutzermodusanzeigetreibers aufruft, um ein Renderinggerät zu erstellen.

Hinweis DirectX-Versionen vor 9 keine Optimierungen mit mehreren Prozessorn unterstützen.
 
Treiber können die Rückruffunktionen der Laufzeit nur aus einem Workerthread aufrufen, wenn die Laufzeit zuvor das pfnSetAsyncCallbacksCb Member von D3DDDI_DEVICECALLBACKS auf nicht-NULL- in einem Aufruf der CreateDevice--Funktion des Treibers festgelegt hat.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Desktop
Header- d3dumddi.h (include D3dumddi.h)

Siehe auch

CreateDevice-

CreateDevice(D3D10)

D3DDDI_DEVICECALLBACKS

Flush

LockAsync-

umbenennen

UnlockAsync-