Compartilhar via


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:

  1. Primeiro, chame DbgReportCreate para criar um relatório inicial.
  2. Em seguida, adicione dados ao relatório fazendo uma ou mais chamadas para DbgReportSecondaryData.
  3. 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.

  1. Obtenha os dados que são mais seguros de coletar.
  2. Chame DbgReportSecondaryData para gravar esses dados no relatório.
  3. Obtenha dados que sejam mais arriscados de coletar.
  4. 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.
  5. 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)

Confira também

INTERFACE

VideoPortQueryServices