DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP Rückruffunktion (dispmprt.h)

Wird vom Betriebssystem aufgerufen, um den Display-Miniporttreiber zum Zurücksetzen des Anzeigegeräts anzufordern und den Besitz des aktuellen Post-Geräts (Power-On Self-Test) freizugeben.

Ab Windows 8 ruft das Betriebssystem diese Funktion während eines PnP-Vorgangs (Plug & Play) auf.

Um dem Betriebssystem mitzuteilen, dass diese Funktion unterstützt wird, muss der Treiber den NonVGASupport-Member der DXGK_DRIVERCAPS-Struktur festlegen, wenn die DxgkDdiQueryAdapterInfo-Funktion aufgerufen wird.

Syntax

DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;

NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
  [out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}

Parameter

[in] MiniportDeviceContext

Ein Handle für einen Kontextblock, der einem Anzeigeadapter zugeordnet ist. Die DxgkDdiAddDevice-Funktion des Anzeigeminiporttreibers hat dieses Handle zuvor für das Microsoft DirectX-Grafikkernsubsystem bereitgestellt.

[in] TargetId

Ein D3DDDI_VIDEO_PRESENT_TARGET_ID Wert, der den Bezeichner des vorhandenen Videoziels auf der Grafikkarte angibt, mit der das Anzeigegerät verbunden ist. Dieser Bezeichner kann für das Ziel gelten, das während des vorherigen Aufrufs von DxgkDdiCommitVidPn im aktuellen Video present Network-Zustand (VidPN) verbleibt.

Weitere Informationen zur Verwendung des TargetId-Parameters finden Sie im folgenden Abschnitt Hinweise.

[out] DisplayInfo

Ein Zeiger auf eine DXGK_DISPLAY_INFORMATION Struktur, die vom Betriebssystem zugewiesen wird.

Rückgabewert

Gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist. Andernfalls wird einer der in "Ntstatus.h" definierten Fehlercodes zurückgegeben. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Hinweise

Zulässige Farbformate

Der Anzeigeminiporttreiber sollte nur ein 32-Bit-Farbformat melden. Daher darf das DisplayInfo->ColorFormat-Element nur eines der folgenden beiden Formate enthalten:
  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Video zur Zielinitialisierung

Der Anzeigeminiporttreiber muss das DisplayInfo->TargetId-Element auf den Zielbezeichner der weiterhin aktiven Anzeige festlegen. In der Regel ist dieser Bezeichner der Wert des TargetId-Parameters , den das Betriebssystem an den Treiber übergeben hat.

In ähnlicher Weise muss der Anzeigeminiporttreiber das DisplayInfo-AcpiId-Element> auf den ACPI-Bezeichner der Anzeige festlegen, die aktiv bleibt.

Erforderliche Schritte nach Anzeige des Miniporttreibers

Der Anzeigeminiporttreiber muss die folgenden Schritte ausführen, wenn seine DxgkDdiStopDeviceAndReleasePostDisplayOwnership-Funktion aufgerufen wird:
  1. Der Treiber muss das Anzeigegerät beenden, das dem durch den TargetId-Parameter angegebenen Videoziel zugeordnet ist, aber die Anzeige, die diesem Ziel zugeordnet ist, eingeschaltet und sichtbar halten.
  2. Der Treiber muss die Konnektivität der anzeige überprüfen, die diesem Ziel zugeordnet ist. Wenn das Ziel keine Anzeige angeschlossen hat, muss der Treiber den Aufruf dieser Funktion abschließen und den STATUS_NOT_SUPPORTED Fehlercode zurückgeben.
  3. Der Treiber muss das Signal für alle anderen Displays deaktivieren, die mit dem Grafikkarte verbunden sind. Wenn dies nicht möglich ist, sollte der Treiber versuchen, ein leeres Bild auf allen anderen Displays zu platzieren. Wenn dies nicht möglich ist, muss der Treiber das letzte Bild auf dem Bildschirm unverändert lassen.
  4. Der Treiber muss den aktuellen Anzeigemodus auf dem angegebenen Ziel beibehalten und diesen Modus im Rahmen dieses Funktionsaufrufs dem Betriebssystem zurückgeben.
  5. Wenn der Treiber den aktuellen Anzeigemodus nicht beibehalten kann oder das Ziel nicht Teil der aktiven Topologie ist, sollte der Treiber ein alternatives aktives Ziel auswählen und versuchen, die aktuelle Auflösung dieses Ziels beizubehalten. Wenn dies nicht möglich ist, sollte der Treiber versuchen, die Anzeige auf die native Auflösung oder auf einen hochauflösenden Modus festzulegen. In diesem Fall muss die Anzeigeauflösung auf mindestens 800 x 600 Pixel in D3DDDIFMT_R8G8B8 (24 Bits pro Pixel) oder D3DDDIFMT_X8R8G8B8 (32 bpp) Farbformate der D3DDDIFORMAT-Enumeration festgelegt werden.
  6. Wenn kein Ziel aktiv ist, sollte der Treiber versuchen, ein Ziel zu aktivieren, vorzugsweise den internen Bereich, wenn es verfügbar ist.
  7. Wenn möglich, muss der Treiber den aktuellen Framepuffer löschen und den Hardwarecursor und alle Anzeigeüberlagerungen deaktivieren.
  8. Wenn möglich, muss der Treiber die Gammarampe des Geräts auf seine Standardwerte festlegen.
  9. Der Treiber muss den aktuellen Framepuffer so festlegen, dass er sich in einem linearen Modus befindet. Dazu verwendet der Treiber entweder den Standard-Swizzle-Bereich oder deaktiviert den Swizzle-Modus.
  10. Der Treiber muss den aktuellen Framepuffer für die CPU zugänglich machen, indem er den aktuellen Framepuffer linear dem CPU-Adressraum zugeordnet.
  11. Der Treiber muss sicherstellen, dass die Sichtbarkeit des angegebenen Ziels auf "aktiviert" festgelegt ist.
Nachdem der Anzeigeminiporttreiber diese Schritte ausgeführt hat, müssen die aktuellen Anzeigeeinstellungen für das Gerät zurückgegeben werden. Der Treiber gibt diese Informationen zurück, indem er die Elemente der DXGK_DISPLAY_INFORMATION-Struktur festlegt, auf die vom DisplayInfo-Parameter verwiesen wird.
Hinweis Nachdem das Gerät beendet wurde, werden diese Anzeigeinformationen möglicherweise vom generischen Windows-Anzeigetreiber verwendet, um das Anzeigegerät zu verwalten.
 

Andere Vorraussetzungen

Auf Systemen, die die Unified Extensible Firmware Interface (UEFI) unterstützen, ist kein VGA Basic Input/Output System (BIOS) vorhanden. Um PnP-Stoppvorgänge auf diesen Systemen zu unterstützen, bietet Windows Display Driver Model (WDDM) 1.2 und höher Unterstützung für das Betriebssystem, um das POST-Gerät zurückzusetzen und seine Anzeigeinformationen während eines PnP-Stoppvorgangs abzurufen. Dazu ruft das Betriebssystem die DxgkDdiStopDeviceAndReleasePostDisplayOwnership-Funktion des Anzeigeminiporttreibers auf.

Ein PnP-Stoppvorgang kann als Reaktion auf Anforderungen von Prozessen wie dem Geräte-Manager oder während eines Treiberupgradeprozesses auftreten.

Ab Windows 8 ruft das Betriebssystem die DxgkDdiStopDeviceAndReleasePostDisplayOwnership-Funktion des Treibers nur auf dem POST-Gerät während eines PnP-Stoppvorgangs auf.

Hinweis Es ist optional, dass der Display-Miniporttreiber DxgkCbAcquirePostDisplayOwnership aufruft. Das Betriebssystem kann jedoch weiterhin die DxgkDdiStopDeviceAndReleasePostDisplayOwnership-Funktion des Gerätetreibers aufrufen, wenn der Treiber zuvor nicht DxgkCbAcquirePostDisplayOwnership aufgerufen hat.
 
Wenn der Treiber einen Aufruf dieser Funktion erfolgreich abgeschlossen hat, ruft das Betriebssystem die DxgkDdiStopDevice-Funktion nicht auf. Wenn der Treiber einen Aufruf dieser Funktion nicht abschließen kann, ruft das Betriebssystem die DxgkDdiStopDevice-Funktion auf, und das Geräteverhalten ist dasselbe wie in Windows 7.

Wenn der Display-Miniporttreiber auf nur UEFI-Systemen einen Aufruf dieser Funktion auslässt, wird ein schwarzer Bildschirm angezeigt, und der IHV-Treiber ist nicht installiert. Die Problemumgehung für dieses Szenario besteht darin, dass der Benutzer den Computer neu startet.

Weitere Informationen zur Verwendung dieser Funktion in PnP-Szenarien finden Sie unter Plug & Play (PnP) in WDDM 1.2 und höher.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Desktop
Kopfzeile dispmprt.h
IRQL PASSIVE_LEVEL

Weitere Informationen

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice