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.

  1. Obtenga los datos más seguros que se van a recopilar.
  2. Llame a DbgReportSecondaryData para escribir esos datos en el informe.
  3. Obtenga datos que son más peligrosos para recopilar.
  4. 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.
  5. Siga llamando a DbgReportSecondaryData, mejorando los datos cada vez, hasta que no tenga más datos que agregar.
  6. 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.
  7. 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)