DXGK_DEBUG_REPORT_INTERFACE Struktur (dispmprt.h)
Die DXGK_DEBUG_REPORT_INTERFACE Struktur enthält Zeiger auf Funktionen in der Debugbericht-Schnittstelle, die vom Anzeigeporttreiber implementiert wird.
Syntax
typedef struct _DXGK_DEBUG_REPORT_INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
DXGK_DEBUG_REPORT_HANDLE( )(HANDLE DeviceHandle,ULONG ulCode,ULONG_PTR ulpArg1,ULONG_PTR ulpArg2,ULONG_PTR ulpArg3,ULONG_PTR ulpArg4) *DbgReportCreate;
BOOLEAN( )(DXGK_DEBUG_REPORT_HANDLE hReport,PVOID pvData,ULONG ulDataSize) *DbgReportSecondaryData;
VOID( )(DXGK_DEBUG_REPORT_HANDLE hReport) *DbgReportComplete;
} DXGK_DEBUG_REPORT_INTERFACE, *PDXGK_DEBUG_REPORT_INTERFACE;
Angehörige
Size
Die Größe dieser Struktur in Byte.
Version
Die Versionsnummer der Debugbericht-Schnittstelle. Versionsnummernkonstanten werden in Dispmprt.h definiert (z. B. DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).
Context
Ein Zeiger auf einen Kontext, der vom Anzeigeporttreiber bereitgestellt wird.
InterfaceReference
Ein Zeiger auf eine Schnittstellenverweisfunktion, die vom Anzeigeporttreiber implementiert wird.
InterfaceDereference
Ein Zeiger auf eine Schnittstellen-Ableitungsfunktion, die vom Anzeigeporttreiber implementiert wird.
DbgReportCreate
Erstellt einen anfänglichen Fehlerbericht.
Wenn ihr Anzeigeminiporttreiber einen Fehler erkennt und dann wiederhergestellt wird, können Sie einen Fehlerbericht erstellen, der später zum Debuggen verwendet werden kann. Rufen Sie zunächst DbgReportCreate auf, um einen anfänglichen Bericht zu erstellen. Fügen Sie dann dem Bericht Daten hinzu, indem Sie einen oder mehrere Aufrufe an DbgReportSecondaryData. Wenn Sie mit dem Hinzufügen von Daten zum Bericht fertig sind, rufen Sie DbgReportCompleteauf.
Die Syntax für DbgReportComplete folgt.
// IRQL: PASSIVE_LEVEL
DXGK_DEBUG_REPORT_HANDLE (*DbgReportCreate)(
_In_ HANDLE DeviceHandle,
_In_ ULONG ulCode,
_In_ ULONG_PTR ulpArg1,
_In_ ULONG_PTR ulpArg2,
_In_ ULONG_PTR ulpArg3,
_In_ ULONG_PTR ulpArg4
);
DeviceHandle- ist ein Handle zu einem Kontextblock, der einem Anzeigeadapter zugeordnet ist. Der Anzeige-Miniporttreiber hat diesen Handle in seiner DxgkDdiAddDevice-*-Funktion erstellt. Dieser Parameter kann NULL sein.
ulCode- ist ein Code für den Fehlerbericht. Die folgenden Codes werden unterstützt:
- THREAD_STUCK_IN_DEVICE_DRIVER
- VIDEO_DRIVER_DEBUG_REPORT_REQUEST
- VIDEO_TDR_FATAL_ERROR
- VIDEO_TDR_SUCCESS
ulpArg1 ist das erste Argument, das dem Bericht hinzugefügt werden soll. Der Entwickler des Display Miniporttreibers bestimmt den Wert und die Bedeutung von ulpArg1.
ulpArg2 ist das zweite Argument, das dem Bericht hinzugefügt werden soll. Der Entwickler des Display Miniporttreibers bestimmt den Wert und die Bedeutung von ulpArg2.
ulpArg3 ist das dritte Argument, das dem Bericht hinzugefügt werden soll. Der Entwickler des Display Miniporttreibers bestimmt den Wert und die Bedeutung von ulpArg3.
ulpArg4 ist reserviert.
DbgReportSecondaryData
Fügt Daten an einen anfänglichen Fehlerbericht an, der zuvor von DbgReportCreateerstellt wurde.
Rufen Sie DbgReportSecondaryData- auf, um daten zu einem ursprünglichen Bericht hinzuzufügen, der durch einen vorherigen Aufruf von DbgReportCreateerstellt wurde. Sie können DbgReportSecondaryData- mehrmals aufrufen, aber bei jedem Aufruf überschreibt die in den Bericht geschriebenen Daten die vom vorherigen Aufruf geschriebenen Daten. Die folgenden Schritte bieten eine gute Strategie zum inkrementellen Hinzufügen von Daten zum Bericht.
- Rufen Sie die Daten ab, die am sichersten zu sammeln sind.
- Rufen Sie DbgReportSecondaryData- auf, um diese Daten in den Bericht zu schreiben.
- Rufen Sie Daten ab, die riskanter sind, um sie zu sammeln.
- Rufen Sie DbgReportSecondaryData- auf, um die ursprünglichen sicheren Daten zusammen mit den neu gesammelten riskanten Daten in den Bericht zu schreiben. Sie müssen sowohl die sicheren als auch die riskanten Daten in diesen Aufruf einschließen, da die von diesem Aufruf geschriebenen Daten die Daten überschreiben, die vom ersten Aufruf an DbgReportSecondaryDatageschrieben wurden.
- Rufen Sie weiterhin DbgReportSecondaryData-auf, und erhöhen Sie die Daten jedes Mal, bis Sie keine weiteren Daten hinzufügen müssen.
- Wenn Sie mit dem Hinzufügen von Daten zum Bericht fertig sind, schließen Sie den Bericht, indem Sie DbgReportComplete-aufrufen. Der Bericht wird in einer Datei gespeichert und beim Neustart des Computers an Microsoft gesendet.
- Wenn der Computer nicht mehr reagiert, bevor Sie DbgReportCompleteaufrufen, werden die Daten, die dem Bericht durch den letzten erfolgreichen Aufruf von DbgReportSecondaryData gespeichert und dann an Microsoft gesendet, wenn der Computer neu gestartet wird.
BOOLEAN (*DbgReportSecondaryData)(
_Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
_In_ PVOID pvData,
_In_ ULONG ulDataSize
);
hReport- ist ein Handle für den Fehlerbericht, an den Daten angefügt werden. Der Display-Miniporttreiber hat dieses Handle zuvor durch Aufrufen DbgReportCreateabgerufen.
pvData- ist ein Zeiger auf einen Puffer, der die daten enthält, die dem Bericht hinzugefügt werden sollen.
ulDataSize die Größe der Daten in Bytes, die dem Bericht hinzugefügt werden sollen. Der Wert dieses Parameters muss kleiner oder gleich DXGK_DEBUG_REPORT_MAX_SIZE sein.
DbgReportComplete
Schließt einen Fehlerbericht und gibt alle ressourcen frei, die dem Bericht zugeordnet sind.
DbgReportCreate erstellt einen Eintrag im Systemereignisprotokoll und zeigt ein Dialogfeld an, das den Benutzer über den Fehler informiert und die Möglichkeit zum Hochladen eines Fehlerberichts an Microsoft darstellt.
Der Fehlerbericht wird in einer Datei gespeichert und soll beim Neustart des Computers an Microsoft gesendet werden. Der Fehlerbericht enthält einen Fehlercode und vier Argumente. Der Fehlercode und die ersten drei Argumente werden vom Aufrufer von DbgReportCreate bereitgestellt. Das vierte Argument im Bericht wird vom Betriebssystem bereitgestellt und gibt die Anzahl der berichte an, die seit dem Start des Computers generiert wurden. Wenn z. B. der Wert des vierten Arguments 5 ist, bedeutet dies, dass vier vorherige Fehlerberichte seit dem letzten Start des Computers vom Miniporttreiber der Anzeige generiert wurden. Nur der fünfte Bericht wird gespeichert, da jeder Bericht den vorherigen überschreibt.
// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
- hReport- ist ein Handle für den Fehlerbericht, der geschlossen werden soll. Der Display-Miniporttreiber hat dieses Handle zuvor durch Aufrufen DbgReportCreateabgerufen.
IRQL: PASSIVE_LEVEL
Bemerkungen
Der Miniporttreiber für die Anzeige stellt die Size und Version Member dieser Struktur bereit und ruft dann DxgkCbQueryServices*auf, der die verbleibenden Elemente dieser Struktur ausfüllt.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Vista |
Header- | dispmprt.h (include Dispmprt.h) |