estrutura VIDEO_PORT_DEBUG_REPORT_INTERFACE (video.h)
A estrutura VIDEO_PORT_DEBUG_REPORT_INTERFACE contém ponteiros para as funções de Relatório de Depuração, que são implementadas pelo driver de porta de vídeo.
Sintaxe
typedef struct _VIDEO_PORT_DEBUG_REPORT_INTERFACE
{
IN USHORT Size;
IN USHORT Version;
OUT PVOID Context;
OUT PINTERFACE_REFERENCE InterfaceReference;
OUT PINTERFACE_DEREFERENCE InterfaceDereference;
OUT
PVIDEO_DEBUG_REPORT
(*DbgReportCreate)(
IN PVOID HwDeviceExtension,
IN ULONG ulCode,
IN ULONG_PTR ulpArg1,
IN ULONG_PTR ulpArg2,
IN ULONG_PTR ulpArg3,
IN ULONG_PTR ulpArg4
);
OUT
BOOLEAN
(*DbgReportSecondaryData)(
IN OUT PVIDEO_DEBUG_REPORT pReport,
IN PVOID pvData,
IN ULONG ulDataSize
);
OUT
VOID
(*DbgReportComplete)(
IN OUT PVIDEO_DEBUG_REPORT pReport
);
} VIDEO_PORT_DEBUG_REPORT_INTERFACE, *PVIDEO_PORT_DEBUG_REPORT_INTERFACE;
Membros
Size
Especifica o tamanho, em bytes, dessa estrutura.
Version
Especifica a versão da interface retornada pelo driver de porta de vídeo. Atualmente, a única versão com suporte é VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1.
Context
Ponteiro para um contexto fornecido pelo driver de porta de vídeo.
InterfaceReference
Ponteiro para uma função de referência de interface implementada pelo driver de porta de vídeo.
InterfaceDereference
Ponteiro para uma função de desreferência de interface implementada pelo driver de porta de vídeo.
OUT (IN PVOID HwDeviceExtension,IN ULONG ulCode,IN ULONG_PTR ulpArg1,IN ULONG_PTR ulpArg2,IN ULONG_PTR ulpArg3,IN ULONG_PTR ulpArg4) PVIDEO_DEBUG_REPORT( *DbgReportCreate unnamedParam1)
OUT (IN OUT PVIDEO_DEBUG_REPORT pReport,IN PVOID pvData,IN ULONG ulDataSize) BOOLEAN( *DbgReportSecondaryData unnamedParam1)
OUT (IN OUT PVIDEO_DEBUG_REPORT pReport) VOID( *DbgReportComplete unnamedParam1)
Comentários
O driver de miniporto de vídeo fornece os membros Size e Version dessa estrutura e, em seguida, chama VideoPortQueryServices, que inicializa seus membros restantes.
Se o driver de miniporto de vídeo detectar uma falha e, em seguida, se recuperar dela, você poderá criar um relatório de erros que pode ser usado posteriormente para depuração chamando os membros da função de retorno de chamada de VIDEO_PORT_DEBUG_REPORT_INTERFACE da seguinte maneira:
- 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.
O relatório de erros é salvo em um arquivo e agendado para ser enviado à Microsoft quando o computador for reinicializado. O relatório de erros 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 de ulpArg4 for 5, isso significa que quatro relatórios de erros anteriores foram gerados pelo driver de miniporta 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.
A estrutura VIDEO_DEBUG_REPORT retornada por DbgReportCreate e posteriormente passada para DbgReportSecondaryData e DbgReportComplete é opaca. Não tente acessar seus membros diretamente.
As seções a seguir descrevem essas funções de retorno de chamada em detalhes. Esses retornos de chamada devem ser chamados em IRQL = PASSIVE_LEVEL.
DbgReportCreate
DbgReportCreate cria um relatório de erro inicial. Ele 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 erros para a Microsoft. DbgReportCreate retorna um ponteiro para uma estrutura de VIDEO_DEBUG_REPORT opaca que representa um identificador para o relatório de depuração recém-criado.
Parâmetros DbgReportCreate
- HwDeviceHandle [in] Um identificador para um bloco de contexto associado a um adaptador de exibição. O driver de miniporta de exibição criou esse identificador em sua função DxgkDdiAddDevice. Este parâmetro pode ser NULL.
- ulCode [in] 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 e VIDEO_TDR_SUCCESS.
- ulpArg1 [in] 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 [in] 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 [in] 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 [in] Reservado para uso do sistema.
DbgReportSecondaryData
A função DbgReportSecondaryData acrescenta dados a um relatório de erro inicial que foi criado anteriormente por DbgReportCreate. Se DbgReportSecondaryData for bem-sucedido, ele retornará TRUE. Caso contrário, retornará FALSE.
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 sejam mais arriscados de coletar.
- 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. Se o computador parar de responder antes de você 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.
Parâmetros DbgReportSecondaryData
- hReport [in, out] Um identificador para o relatório de erros ao qual os dados serão acrescentados. O driver de miniporta de exibição obteve esse identificador anteriormente chamando DbgReportCreate.
- pvData [in] Um ponteiro para um buffer que contém os dados a serem adicionados ao relatório.
- ulDataSize [in] 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
A função DbgReportComplete fecha um relatório de erros e libera todos os recursos associados ao relatório.
DbgReportComplete cria uma entrada no log de eventos do sistema e exibe uma caixa de diálogo que informa ao usuário sobre a falha e a oportunidade de carregar um relatório de erros para a Microsoft.
Parâmetros DbgReportComplete
- hReport Um ponteiro para uma estrutura VIDEO_DEBUG_REPORT que contém um identificador para o relatório de erros que deve ser fechado. O driver de miniporta de exibição obteve esse identificador anteriormente chamando DbgReportCreate.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP SP2 |
Servidor mínimo com suporte | Windows Server 2003 SP1 |
Cabeçalho | video.h (incluir Video.h) |