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.
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) |