DXGKDDI_SUSPENDCONTEXT Rückruffunktion (d3dkmddi.h)
DxgkddiSuspendContext weist die GPU an, einen Kontext anzusetzen. Wenn die GPU den Abschluss des Anhaltevorgangs innerhalb des TDR-Timeouts (Timeouterkennung und -wiederherstellung) nicht bestätigt, erkennt das Betriebssystem das Modultimeout und führt eine Modulzurücksetzung durch.
Syntax
DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;
NTSTATUS DxgkddiSuspendcontext(
IN_CONST_HANDLE hAdapter,
IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}
Parameter
hAdapter
[in] Der Hardwarekontext, der vorgebeutet und als angehalten markiert wird. Diese Art von Vorabanforderung verfügt nicht über eine Nachfrist und wird von der GPU so schnell wie möglich berücksichtigt.
pSuspendContext
[in] Zeiger auf eine DXGKARG_SUSPENDCONTEXT Struktur, die zusätzliche Argumente für diese Funktion enthält.
Rückgabewert
DxgkddiSuspendContext gibt STATUS_SUCCESS zurück, wenn der Kontext zum Zeitpunkt dieses Aufrufs bereits angehalten wurde. Andernfalls wird dieser Wert auf STATUS_PENDING festgelegt, und der Anhaltevorgang wird beendet, wenn contextSuspendFence über einen Interrupt signalisiert wird.
Bemerkungen
Registrieren Sie Ihre Implementierung dieser Rückruffunktion, indem Sie sie in DRIVER_INITIALIZATION_DATAfestlegen.
Obwohl die Roundrobin-Preemption von der GPU initiiert werden kann, benötigt das Betriebssystem dennoch eine Möglichkeit, den Kontext aus anderen Gründen vorzuentziehen; Wenn sie beispielsweise ihre Zuordnungen verschieben oder einen GPU-Stromübergang durchführen muss.
Der Kontext-Anhaltewert ist erforderlich, um Fälle zu behandeln, in dem das Betriebssystem einen Kontext anhält, nicht auf die Bestätigung des Anhaltens, Fortsetzen und Anhalten eines Kontexts wartet. Der Anhaltewert ermöglicht es dem Betriebssystem, zwischen der vorherigen Anhaltebestätigung und dem neuesten zu unterscheiden.
Sobald ein Kontext angehalten wurde, wird davon ausgegangen, dass alle Verweise darauf von der GPU entfernt werden, und das Betriebssystem kann den Kontext zerstören oder seinen Speicher verschieben. Im Gegensatz zu WDDM 2.3 oder früheren Versionen ist im WDDM 2.4-Planungsmodus kein separater NULL-Kontextschalterbefehl vorhanden (zuvor durch das ContextSwitch Flag in DxgkDdiSubmitCommandVirtual) im WDDM 2.4-Planungsmodus vorhanden, da DxgkddiSuspendContext diese Arbeit ausführen soll.
Anforderungen
Anforderung | Wert |
---|---|
Header- | d3dkmddi.h |