Freigeben über


DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP Rückruffunktion (dispmprt.h)

Das Betriebssystem ruft die Kernelmodusanzeigetreiber (KMD) DxgkddiStopDeviceAndReleasePostDisplayOwnership-Funktion auf, um anzufordern, dass KMD das Anzeigegerät zurücksetzt und den Besitz des aktuellen Post-Geräts (Power-On Self-Test) freigibt.

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 zu einem Kontextblock, der einem Anzeigeadapter zugeordnet ist. Die DxgkDdiAddDevice-Funktion von KMD hat dieses Handle zuvor für das DirectX-Grafikkernsubsystem bereitgestellt (Dxgkrnl).

[in] TargetId

Ein D3DDDI_VIDEO_PRESENT_TARGET_ID Wert, der den Bezeichner des Videodatenziels auf dem Displayadapter angibt, mit dem das Anzeigegerät verbunden ist. Dieser Bezeichner kann für das Ziel sein, das während des vorherigen Aufrufs von DxgkDdiCommitVidPnim aktuellen Video present Network -Zustand (VidPN) verbleibt.

Weitere Informationen zur Verwendung des TargetId--Parameters finden Sie im 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 eine der fehlercodes zurückgegeben, die in ntstatus.hdefiniert sind. Weitere Informationen finden Sie im Abschnitt "Hinweise".

Bemerkungen

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

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

Zulässige Farbformate

Der KMD sollte nur ein 32-Bit-Farbformat melden. Daher darf das ColorFormat->ColorFormat-Element nur eines der folgenden beiden D3DDDIFORMAT Formate enthalten:

  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Video, in dem die Zielinitialisierung präsentiert wird

Die KMD muss die DisplayInfo->TargetId Member auf den Zielbezeichner der Anzeige festlegen, die aktiv bleibt. In der Regel ist dieser Bezeichner der TargetId Parameter, den das Betriebssystem an den Treiber übergeben hat.

Ebenso muss die KMD die DisplayInfo->AcpiId- Mitglied auf den ACPI-Bezeichner der Anzeige festlegen, die aktiv bleibt.

Erforderliche Schritte des KMD

Die KMD muss die folgenden Schritte ausführen, wenn die DxgkDdiStopDeviceAndReleasePostDisplayOwnership Funktion aufgerufen wird:

  1. Beenden Sie das anzeigegerät, das dem Videodatenziel zugeordnet ist, das durch den Parameter TargetId angegeben ist, muss jedoch die Anzeige beibehalten, die mit diesem Ziel eingeschaltet und sichtbar ist.

  2. Überprüfen Sie die Konnektivität der Anzeige, die diesem Ziel zugeordnet ist. Wenn das Ziel nicht über eine Anzeige verbunden ist, muss die KMD den Aufruf dieser Funktion abschließen und den STATUS_NOT_SUPPORTED Fehlercode zurückgeben.

  3. Deaktivieren Sie das Signal für alle anderen Displays, die mit dem Anzeigeadapter 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. Halten Sie den aktuellen Anzeigemodus auf dem angegebenen Ziel, und stellen Sie diesen Modus im Rahmen dieses Funktionsaufrufs wieder im Betriebssystem bereit.

  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 seine systemeigene Auflösung oder auf einen Modus mit hoher Auflösung festzulegen. In diesem Fall muss die Anzeigeauflösung auf mindestens 800 x 600 Pixel in D3DDDIFMT_R8G8B8 (24 Bit pro Pixel) oder auf D3DDDIFMT_X8R8G8B8 (32 bpp) Farbformate festgelegt werden.

  6. Wenn kein Ziel aktiv ist, sollte der Treiber versuchen, ein Ziel zu aktivieren, vorzugsweise das interne Panel, falls 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 Gammahierarchie des Geräts auf seine Standardwerte festlegen.

  9. Der Treiber muss den aktuellen Framepuffer auf einen linearen Modus festlegen. Der Treiber führt dies entweder mithilfe des Standard-Swizzle-Bereichs oder durch Deaktivieren des Swizzle-Modus aus.

  10. Der Treiber muss den aktuellen Framepuffer für die CPU zugänglich machen, indem der aktuelle Framepuffer linear dem CPU-Adressraum zugeordnet wird.

  11. Der Treiber muss sicherstellen, dass die Sichtbarkeit des angegebenen Ziels auf "aktiviert" festgelegt ist.

Nachdem der KMD diese Schritte ausgeführt hat, muss er die aktuellen Anzeigeeinstellungen für das Gerät zurückgeben. Der Treiber gibt diese Informationen zurück, indem die Member der DXGK_DISPLAY_INFORMATION Struktur festgelegt werden, auf die vom DisplayInfo-Parameter verwiesen wird.

Nachdem das Gerät beendet wurde, werden diese Anzeigeinformationen möglicherweise vom generischen Windows-Anzeigetreiber zum Verwalten des Anzeigegeräts verwendet.

Weitere Anforderungen

Auf Systemen, die die Unified Extensible Firmware Interface (UEFI) unterstützen, ist kein VGA-Standardeingabe-/Ausgabesystem (BIOS) vorhanden. Zur Unterstützung von PnP-Stoppvorgängen auf diesen Systemen bietet WDDM 1.2 und höher Unterstützung für das Betriebssystem zum Zurücksetzen des POST-Geräts und zum Abrufen der Anzeigeinformationen während eines PnP-Stoppvorgangs. Das Betriebssystem führt dies durch Aufrufen der DxgkDdiStopDeviceAndReleasePostDisplayOwnership-Funktion durch.

Ein PnP-Stoppvorgang kann als Reaktion auf Anforderungen durch Prozesse wie den Geräte-Manager oder während eines Treiberupgradevorgangs auftreten.

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

Für KMD ist es optional, DxgkCbAcquirePostDisplayOwnershipaufzurufen. Das Betriebssystem ruft jedoch möglicherweise weiterhin die DxgkDdiStopDeviceAndReleasePostDisplayOwnership Funktion auf, unabhängig davon, ob der Treiber einen vorherigen Aufruf an DxgkCbAcquirePostDisplayOwnershipausgeführt hat.

Wenn der Treiber erfolgreich einen Aufruf dieser Funktion abgeschlossen hat, ruft das Betriebssystem die DxgkDdiStopDevice- funktion von KMD nicht auf. Wenn der Treiber einen Aufruf dieser Funktion nicht abschließen kann, ruft das Betriebssystem DxgkDdiStopDeviceauf, und das Geräteverhalten entspricht in Windows 7.

Wenn der KMD bei nur UEFI-Systemen einen Aufruf dieser Funktion fehlschlägt, wird ein schwarzer Bildschirm angezeigt, und der IHV-Treiber wird 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 and Play (PnP) in WDDM 1.2 und höher.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8 (WDDM 1.2)
mindestens unterstützte Server- Windows Server 2012
Zielplattform- Desktop
Header- dispmprt.h
IRQL- PASSIVE_LEVEL

Siehe auch

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice-

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice-