// dispmprt.h
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;
View the official Windows Driver Kit DDI referenceNo description available.
The DXGK_DEBUG_REPORT_INTERFACE structure contains pointers to functions in the Debug Report interface, which is implemented by the display port driver.
SizeThe size, in bytes, of this structure.
VersionThe version number of the Debug Report interface. Version number constants are defined in Dispmprt.h (for example, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).
ContextA pointer to a context that is provided by the display port driver.
InterfaceReferenceA pointer to an interface reference function that is implemented by the display port driver.
InterfaceDereferenceA pointer to an interface dereference function that is implemented by the display port driver.
DbgReportCreateCreates an initial error report.
If your display miniport driver detects a failure and then recovers from it, you can create an error report that can later be used for debugging. First, call DbgReportCreate to create an initial report. Then add data to the report by making one or more calls to DbgReportSecondaryData. When you have finished adding data to the report, call DbgReportComplete.
The syntax for DbgReportComplete follows.
// 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 is a handle to a context block associated with a display adapter. The display miniport driver created this handle in its DxgkDdiAddDevice* function. This parameter can be NULL.
ulCode is a code for the error report. The following codes are supported:
ulpArg1 is the first argument to be added to the report. The developer of the display miniport driver determines the value and meaning of ulpArg1.
ulpArg2 is the second argument to be added to the report. The developer of the display miniport driver determines the value and meaning of ulpArg2.
ulpArg3 is the third argument to be added to the report. The developer of the display miniport driver determines the value and meaning of ulpArg3.
ulpArg4 is reserved.
DbgReportSecondaryDataAppends data to an initial error report that was previously created by DbgReportCreate.
Call DbgReportSecondaryData to add data to an initial report that was created by a previous call to DbgReportCreate. You can call DbgReportSecondaryData several times, but with each call, the data written to the report overwrites the data written by the previous call. The following steps give a good strategy for incrementally adding data to the report.
BOOLEAN (*DbgReportSecondaryData)(
_Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
_In_ PVOID pvData,
_In_ ULONG ulDataSize
);
hReport is a handle to the error report to which data will be appended. The display miniport driver previously obtained this handle by calling DbgReportCreate.
pvData is a pointer to a buffer that holds the data to be added to the report.
ulDataSize is the size, in bytes, of the data to be added to the report. The value of this parameter must be less than or equal to DXGK_DEBUG_REPORT_MAX_SIZE.
DbgReportCompleteCloses an error report and frees any resources associated with the report.
DbgReportCreate creates an entry in the system event log and displays a dialog box that informs the user of the failure and presents the opportunity to upload an error report to Microsoft.
The error report is saved in a file and scheduled to be sent to Microsoft when the computer is rebooted. The error report contains an error code and four arguments. The error code and the first three arguments are provided by the caller of DbgReportCreate. The fourth argument in the report is provided by the operating system and indicates the number of reports generated since the computer was started. For example, if the value of the fourth argument is 5, this means that four previous error reports were generated by the display miniport driver since the computer was last started. Only the fifth report is saved because each report overwrites the previous one.
// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
IRQL: PASSIVE_LEVEL
The display miniport driver supplies the Size and Version members of this structure, and then calls DxgkCbQueryServices*, which fills in the remaining members of this structure.