estrutura DXGK_DEBUG_REPORT_INTERFACE (dispmprt.h)
A estrutura DXGK_DEBUG_REPORT_INTERFACE contém ponteiros para funções na interface Relatório de Depuração, que é implementada pelo driver de porta de exibição.
Sintaxe
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;
Membros
Size
O tamanho, em bytes, dessa estrutura.
Version
O número de versão da interface de relatório de depuração. As constantes de número de versão são definidas em Dispmprt.h (por exemplo, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).
Context
Um ponteiro para um contexto fornecido pelo driver de porta de exibição.
InterfaceReference
Um ponteiro para uma função de referência de interface implementada pelo driver de porta de exibição.
InterfaceDereference
Um ponteiro para uma função de desreferência de interface implementada pelo driver de porta de exibição.
DbgReportCreate
Cria um relatório de erro inicial.
Se o driver de miniporto de exibição detectar uma falha e se recuperar dela, você poderá criar um relatório de erro que poderá ser usado posteriormente para depuração. Primeiro, chame DbgReportCreate para criar um relatório inicial. Em seguida, adicione dados ao relatório fazendo uma ou mais chamadas para DbgReportSecondaryData. Quando terminar de adicionar dados ao relatório, chame DbgReportComplete.
A sintaxe de DbgReportComplete segue.
// 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 é um identificador para um bloco de contexto associado a um adaptador de exibição. O driver de miniporto de exibição criou esse identificador em sua função DxgkDdiAddDevice* . Este parâmetro pode ser NULL.
ulCode é um código para o relatório de erros. Há suporte para os seguintes códigos:
- THREAD_STUCK_IN_DEVICE_DRIVER
- VIDEO_DRIVER_DEBUG_REPORT_REQUEST
- VIDEO_TDR_FATAL_ERROR
- VIDEO_TDR_SUCCESS
ulpArg1 é o primeiro argumento a ser adicionado ao relatório. O desenvolvedor do driver de miniporto de exibição determina o valor e o significado de ulpArg1.
ulpArg2 é o segundo argumento a ser adicionado ao relatório. O desenvolvedor do driver de miniporto de exibição determina o valor e o significado de ulpArg2.
ulpArg3 é o terceiro argumento a ser adicionado ao relatório. O desenvolvedor do driver de miniporto de exibição determina o valor e o significado de ulpArg3.
ulpArg4 é reservado.
DbgReportSecondaryData
Acrescenta dados a um relatório de erro inicial que foi criado anteriormente por DbgReportCreate.
Chame DbgReportSecondaryData para adicionar dados a um relatório inicial que foi criado por uma chamada anterior para DbgReportCreate. Você pode chamar DbgReportSecondaryData várias vezes, mas com cada chamada, os dados gravados no relatório substituem os dados gravados pela chamada anterior. As etapas a seguir fornecem uma boa estratégia para adicionar dados incrementalmente ao relatório.
- Obtenha os dados que são mais seguros de coletar.
- Chame DbgReportSecondaryData para gravar esses dados no relatório.
- Obtenha dados que são mais arriscados de serem coletados.
- Chame DbgReportSecondaryData para gravar os dados seguros originais junto com os dados arriscados recém-coletados no relatório. Você deve incluir os dados seguros e arriscados nessa chamada porque os dados gravados por essa chamada substituem os dados gravados pela primeira chamada para DbgReportSecondaryData.
- Continue chamando DbgReportSecondaryData, aprimorando os dados a cada vez, até não ter mais dados a serem adicionados.
- Quando terminar de adicionar dados ao relatório, feche o relatório chamando DbgReportComplete. O relatório é armazenado em um arquivo e enviado à Microsoft quando o computador é reinicializado.
- Se o computador parar de responder antes de chamar DbgReportComplete, os dados adicionados ao relatório pela chamada bem-sucedida mais recente para DbgReportSecondaryData serão salvos e enviados à Microsoft quando o computador for reinicializado.
BOOLEAN (*DbgReportSecondaryData)(
_Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
_In_ PVOID pvData,
_In_ ULONG ulDataSize
);
hReport é um identificador para o relatório de erros ao qual os dados serão acrescentados. O driver de miniporte de exibição obteve esse identificador anteriormente chamando DbgReportCreate.
pvData é um ponteiro para um buffer que contém os dados a serem adicionados ao relatório.
ulDataSize é o tamanho, em bytes, dos dados a serem adicionados ao relatório. O valor desse parâmetro deve ser menor ou igual a DXGK_DEBUG_REPORT_MAX_SIZE.
DbgReportComplete
Fecha um relatório de erro e libera todos os recursos associados ao relatório.
DbgReportCreate cria uma entrada no log de eventos do sistema e exibe uma caixa de diálogo que informa o usuário sobre a falha e apresenta a oportunidade de carregar um relatório de erro para a Microsoft.
O relatório de erro é salvo em um arquivo e agendado para ser enviado à Microsoft quando o computador é reinicializado. O relatório de erro contém um código de erro e quatro argumentos. O código de erro e os três primeiros argumentos são fornecidos pelo chamador de DbgReportCreate. O quarto argumento no relatório é fornecido pelo sistema operacional e indica o número de relatórios gerados desde que o computador foi iniciado. Por exemplo, se o valor do quarto argumento for 5, isso significa que quatro relatórios de erro anteriores foram gerados pelo driver de miniporto de exibição desde que o computador foi iniciado pela última vez. Somente o quinto relatório é salvo porque cada relatório substitui o anterior.
// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
- hReport é um identificador para o relatório de erro que deve ser fechado. O driver de miniporte de exibição obteve esse identificador anteriormente chamando DbgReportCreate.
IRQL: PASSIVE_LEVEL
Comentários
O driver de miniporto de exibição fornece os membros Size e Version dessa estrutura e, em seguida, chama DxgkCbQueryServices*, que preenche os membros restantes dessa estrutura.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Cabeçalho | dispmprt.h (inclua Dispmprt.h) |