DXGKDDI_GETDISPLAYSTATEINTRUSIVE Rückruffunktion (dispmprt.h)

Das Betriebssystem ruft die DxgkDdiGetDisplayStateNonIntrusive-Routine eines Anzeigeminiporttreibers auf, um Anzeigezustandsinformationen vom Treiber zu sammeln.

Syntax

DXGKDDI_GETDISPLAYSTATEINTRUSIVE DxgkddiGetdisplaystateintrusive;

NTSTATUS DxgkddiGetdisplaystateintrusive(
  [in]     HANDLE Context,
  [in/out] PDXGKARG_GETDISPLAYSTATEINTRUSIVE pArgs
)
{...}

Parameter

[in] Context

Zeiger auf einen privaten Kontext, der von DxgkDdiQueryInterface zurückgegeben wird.

[in/out] pArgs

Zeiger auf eine DXGKARG_GETDISPLAYSTATEINTRUSIVE-Struktur .

Rückgabewert

DxgkDdiGetDisplayStateIntrusive gibt bei Erfolg STATUS_SUCCESS zurück. Andernfalls wird ein Fehlercode wie einer der folgenden zurückgegeben.

Fehlercode Bedeutung
STATUS_DRIVER_INTERNAL_ERROR Im Treiber ist ein generischer Softwarefehler aufgetreten.
STATUS_ACCESS_DENIED Die Hardware wird derzeit von anderen Threads verwendet, und dieser DDI kann keinen Zugriff darauf erhalten.
STATUS_DEVICE_HARDWARE_ERROR Ein generischer HW-Fehler ist aufgetreten.
STATUS_DEVICE_POWERED_OFF Das Gerät ist ausgeschaltet.

Hinweise

Das Betriebssystem ruft DxgkDdiGetDisplayStateIntrusive auf, um Anzeigezustandsinformationen vom Treiber zu sammeln, wenn sich der Benutzer bereits in einem fehlerhaften Zustand befindet. Im Gegensatz zu DxgkDdiGetDisplayStateNonIntrusive kann die DxgkDdiGetDisplayStateIntrusive-Routine des Treibers aufdringlichere Vorgänge ausführen, die sichtbare Nebenwirkungen für den Benutzer haben. Ein aufdringlicher Vorgang wird wie folgt definiert (nicht intrusive Vorgänge weisen keine dieser Eigenschaften auf):

  • Dies verursacht Nebenwirkungen (Störungen), die für den Benutzer sichtbar sind (z. B. vorübergehendes Beenden des Scanvorgangs und destruktive Überwachung der Konnektivitätsprüfung).

  • Es ist langsam und wirkt sich auf die System- oder Anzeigeleistung aus, wenn es häufig aufgerufen wird (mehrmals in einer Sekunde).

  • Der Zustand des Anzeigesubsystems (oder eines anderen Subsystems) wird direkt oder indirekt geändert.

Der Treiber sollte den Zustand des Systems beim Sammeln von Daten nicht absichtlich ändern.

Das Betriebssystem ruft diese Routine viel seltener im Vergleich zu Aufrufen von DxgkDdiGetDisplayStateNonIntrusive auf. In den meisten Fehlerszenarien ruft das Betriebssystem zuerst DxgkDdiGetDisplayStateNonIntrusive und dann DxgkDdiGetDisplayStateIntrusive auf, um sicherzustellen, dass unbeabsichtigte Auswirkungen des aufdringlichen Aufrufs nicht auf die nicht intrusive Datensammlung wirken.

DXGKRNL ruft diese Routine auf, wobei NumOfTargets auf die Anzahl der Ziele festgelegt ist, für die das Betriebssystem meldet, dass ein Monitor mit der entsprechenden ausgefüllten VidPnTargetId verbunden ist. Wenn der Treiber der Ansicht ist, dass kein Monitor an ein bestimmtes Ziel angeschlossen ist, sollte er den ReturnSubStatus festlegen, damit dieses Ziel DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED wird.

Hinweis

Wenn der Treiber bei einem bestimmten vidpntarget beim Sammeln von Informationen einen Fehler auftritt, sollte er ReturnSubStatus verwenden, um den Fehlerzustand festzulegen und mit dem nächsten vidpntarget fortzufahren und den Gesamtaufruf nicht zu schlagen, es sei denn, alle Pfade haben Fehler. Treiber sollten im Idealfall Fehler aufzeichnen, die während dieses Aufrufs in einem internen Fehlerprotokoll aufgetreten sind. Wenn das Betriebssystem DxgkDdiCollectDiagnosticInfo zum Sammeln von Blackbox-Informationen aufruft, werden diese Fehler als Teil einer internen Protokollsammlung erfasst, um IHVs beim Debuggen zu unterstützen.

Das Betriebssystem verfügt über ein ausreichendes Timeout (ca. 5 Sekunden), damit DxgkDdiGetDisplayStateIntrusive abgeschlossen werden kann, sodass der Treiber mehr Zeit hat, um den gesamten relevanten Zustand zu erfassen. Nach einem Timeout kann das Betriebssystem den Computer überprüfen und ein Speicherabbild sammeln, wenn der Treiber in diesem Aufruf hängen bleibt. Daher sollte der Miniport versuchen, diesen Aufruf immer innerhalb des Zeitrahmens abzuschließen.

Die Synchronisierungsebene für diesen DDI ist die Synchronisierung auf Nullebene.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 2004
Kopfzeile dispmprt.h

Weitere Informationen

DXGKARG_GETDISPLAYSTATEINTRUSIVE

DxgkDdiCollectDiagnosticInfo

DxgkDdiGetDisplayStateNonIntrusive

DxgkDdiQueryInterface