DXGKDDI_PREEMPTCOMMAND Rückruffunktion (d3dkmddi.h)
Die DxgkDdiPreemptCommand-Funktion entfernt einen DMA-Puffer (Direct Memory Access), der zuvor an die Hardwarebefehlsausführungseinheit übermittelt und derzeit in die Warteschlange gestellt wurde.
Syntax
DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;
NTSTATUS DxgkddiPreemptcommand(
[in] IN_CONST_HANDLE hAdapter,
[in] IN_CONST_PDXGKARG_PREEMPTCOMMAND pPreemptCommand
)
{...}
Parameter
[in] hAdapter
Ein Handle für einen Kontextblock, der einem Anzeigeadapter zugeordnet ist. Der Anzeigeminiporttreiber hat dieses Handle zuvor für das Microsoft DirectX-Grafikkernsubsystem im Ausgabeparameter MiniportDeviceContext der DxgkDdiAddDevice-Funktion bereitgestellt.
[in] pPreemptCommand
Ein Zeiger auf eine DXGKARG_PREEMPTCOMMAND Struktur, die den Befehl beschreibt, der verwendet wird, um einen DMA-Puffer zu löschen, der zuvor an die Hardwarebefehlsausführungseinheit übermittelt wurde.
Rückgabewert
Gibt nach erfolgreichem Abschluss STATUS_SUCCESS zurück. Wenn der Treiber stattdessen einen Fehlercode zurückgibt, führt das Betriebssystem zu einer Systemfehlerüberprüfung. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Hinweise
Wenn der Treiber feststellt, dass die Hardware bereits alle übermittelten DMA-Puffer verarbeitet hat und dass die Hardware den GPU-Planer (Graphics Processing Unit) über die Vervollständigungen informiert hat, wenn seine DxgkDdiPreemptCommand-Funktion aufgerufen wird, um die DMA-Puffer zu löschen, sollte der Treiber die folgenden Vorgänge ausführen, anstatt den preempt fence zu übermitteln, der durch das PreemptionFenceId-Mitglied von DXGKARG_PREEMPTCOMMAND identifiziert wird:
- Heben Sie IRQL auf die Interruptebene an. Beispielsweise kann der Treiber die DxgkCbSynchronizeExecution-Funktion aufrufen, um mit seiner DxgkDdiInterruptRoutine-Funktion zu synchronisieren.
-
Informieren Sie den GPU-Planer über die Informationen zum Vorzeitigen Erlösen. Der Treiber kann entweder die DxgkCbNotifyInterrupt-Funktion direkt aufrufen oder seine DxgkDdiInterruptRoutine-Funktion aufrufen (z. B. wenn der Treiber auch andere Updates ausführen muss).
Beachten Sie, dass der GPU-Planer Instanzen verarbeitet, in denen die Hardware aufgrund von Timeouterkennungs- und Wiederherstellungsvorgängen (Timeout Detection and Recovery, TDR) nicht mehr reagiert.
- 0x2
- Der NTSTATUS-Fehlercode, der vom fehlerhaften Treiberaufruf zurückgegeben wurde
- Ein Zeiger auf die DXGKARG_PREEMPTCOMMAND-Struktur
- Ein Zeiger auf eine interne Planerdatenstruktur
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Zielplattform | Desktop |
Kopfzeile | d3dkmddi.h |
IRQL | DISPATCH_LEVEL |