estructura DXGK_DEBUG_REPORT_INTERFACE (dispmprt.h)
La estructura DXGK_DEBUG_REPORT_INTERFACE contiene punteros a funciones de la interfaz Debug Report, que implementa el controlador de puerto de visualización.
Sintaxis
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;
Miembros
Size
Tamaño, en bytes, de esta estructura.
Version
Número de versión de la interfaz Informe de depuración. Las constantes de número de versión se definen en Dispmprt.h (por ejemplo, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).
Context
Puntero a un contexto proporcionado por el controlador de puerto de presentación.
InterfaceReference
Puntero a una función de referencia de interfaz implementada por el controlador de puerto de visualización.
InterfaceDereference
Puntero a una función de desreferencia de interfaz implementada por el controlador de puerto de visualización.
DbgReportCreate
Crea un informe de errores inicial.
Si el controlador de minipuerto de pantalla detecta un error y, a continuación, se recupera de él, puede crear un informe de errores que se pueda usar más adelante para la depuración. En primer lugar, llame a DbgReportCreate para crear un informe inicial. A continuación, agregue datos al informe realizando una o varias llamadas a DbgReportSecondaryData. Cuando haya terminado de agregar datos al informe, llame a DbgReportComplete.
A continuación se indica la sintaxis de DbgReportComplete .
// 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 es un identificador de un bloque de contexto asociado a un adaptador de pantalla. El controlador de minipuerto de pantalla creó este controlador en su función DxgkDdiAddDevice* . Este parámetro puede ser NULL.
ulCode es un código para el informe de errores. Se admiten los códigos siguientes:
- THREAD_STUCK_IN_DEVICE_DRIVER
- VIDEO_DRIVER_DEBUG_REPORT_REQUEST
- VIDEO_TDR_FATAL_ERROR
- VIDEO_TDR_SUCCESS
ulpArg1 es el primer argumento que se va a agregar al informe. El desarrollador del controlador de minipuerto de pantalla determina el valor y el significado de ulpArg1.
ulpArg2 es el segundo argumento que se va a agregar al informe. El desarrollador del controlador de minipuerto de pantalla determina el valor y el significado de ulpArg2.
ulpArg3 es el tercer argumento que se va a agregar al informe. El desarrollador del controlador de minipuerto de pantalla determina el valor y el significado de ulpArg3.
ulpArg4 está reservado.
DbgReportSecondaryData
Anexa datos a un informe de error inicial creado anteriormente por DbgReportCreate.
Llame a DbgReportSecondaryData para agregar datos a un informe inicial creado por una llamada anterior a DbgReportCreate. Puede llamar a DbgReportSecondaryData varias veces, pero con cada llamada, los datos escritos en el informe sobrescriben los datos escritos por la llamada anterior. Los pasos siguientes proporcionan una buena estrategia para agregar datos incrementalmente al informe.
- Obtenga los datos más seguros que se van a recopilar.
- Llame a DbgReportSecondaryData para escribir esos datos en el informe.
- Obtenga datos que son más peligrosos para recopilar.
- Llame a DbgReportSecondaryData para escribir los datos seguros originales junto con los datos de riesgo recién recopilados en el informe. Debe incluir tanto los datos seguros como los de riesgo en esta llamada porque los datos escritos por esta llamada sobrescriben los datos escritos por la primera llamada a DbgReportSecondaryData.
- Siga llamando a DbgReportSecondaryData, mejorando los datos cada vez, hasta que no tenga más datos que agregar.
- Cuando haya terminado de agregar datos al informe, cierre el informe llamando a DbgReportComplete. El informe se almacena en un archivo y se envía a Microsoft cuando se reinicia el equipo.
- Si el equipo deja de responder antes de llamar a DbgReportComplete, los datos agregados al informe por la llamada correcta más reciente a DbgReportSecondaryData se guardan y, a continuación, se envían a Microsoft cuando se reinicia el equipo.
BOOLEAN (*DbgReportSecondaryData)(
_Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
_In_ PVOID pvData,
_In_ ULONG ulDataSize
);
hReport es un identificador del informe de errores al que se anexarán los datos. El controlador de minipuerto de pantalla obtuvo previamente este identificador mediante una llamada a DbgReportCreate.
pvData es un puntero a un búfer que contiene los datos que se van a agregar al informe.
ulDataSize es el tamaño, en bytes, de los datos que se van a agregar al informe. El valor de este parámetro debe ser menor o igual que DXGK_DEBUG_REPORT_MAX_SIZE.
DbgReportComplete
Cierra un informe de errores y libera los recursos asociados al informe.
DbgReportCreate crea una entrada en el registro de eventos del sistema y muestra un cuadro de diálogo que informa al usuario del error y presenta la oportunidad de cargar un informe de errores en Microsoft.
El informe de errores se guarda en un archivo y se programa para enviarse a Microsoft cuando se reinicia el equipo. El informe de errores contiene un código de error y cuatro argumentos. El autor de la llamada de DbgReportCreate proporciona el código de error y los tres primeros argumentos. El sistema operativo proporciona el cuarto argumento del informe e indica el número de informes generados desde que se inició el equipo. Por ejemplo, si el valor del cuarto argumento es 5, esto significa que el controlador de miniporte de pantalla generó cuatro informes de errores anteriores desde que se inició por última vez el equipo. Solo se guarda el quinto informe porque cada informe sobrescribe el anterior.
// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
- hReport es un identificador del informe de errores que se va a cerrar. El controlador de minipuerto de pantalla obtuvo previamente este identificador mediante una llamada a DbgReportCreate.
IRQL: PASSIVE_LEVEL
Comentarios
El controlador de minipuerto de pantalla proporciona los miembros Size y Version de esta estructura y, a continuación, llama a DxgkCbQueryServices*, que rellena los miembros restantes de esta estructura.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Encabezado | dispmprt.h (incluir Dispmprt.h) |