Condividi tramite


struttura DXGK_DEBUG_REPORT_INTERFACE (dispmprt.h)

La struttura DXGK_DEBUG_REPORT_INTERFACE contiene puntatori alle funzioni nell'interfaccia Debug report, implementata dal driver della porta di visualizzazione.

Sintassi

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;

Members

Size

Dimensione, in byte, della struttura.

Version

Numero di versione dell'interfaccia Del report di debug. Le costanti del numero di versione sono definite in Dispmprt.h (ad esempio, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).

Context

Puntatore a un contesto fornito dal driver della porta di visualizzazione.

InterfaceReference

Puntatore a una funzione di riferimento dell'interfaccia implementata dal driver della porta di visualizzazione.

InterfaceDereference

Puntatore a una funzione di dereferenziazione dell'interfaccia implementata dal driver della porta di visualizzazione.

DbgReportCreate

Crea un report di errore iniziale.

Se il driver miniport di visualizzazione rileva un errore e quindi lo recupera, è possibile creare una segnalazione errori che può essere usata in un secondo momento per il debug. Prima di tutto, chiamare DbgReportCreate per creare un report iniziale. Aggiungere quindi dati al report effettuando una o più chiamate a DbgReportSecondaryData. Al termine dell'aggiunta di dati al report, chiamare DbgReportComplete.

Di seguito è riportata la sintassi per 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 è un handle per un blocco di contesto associato a una scheda di visualizzazione. Il driver miniport di visualizzazione ha creato questo handle nella funzione DxgkDdiAddDevice* . Questo parametro può essere NULL.

  • ulCode è un codice per la segnalazione degli errori. Sono supportati i codici seguenti:

    • THREAD_STUCK_IN_DEVICE_DRIVER
    • VIDEO_DRIVER_DEBUG_REPORT_REQUEST
    • VIDEO_TDR_FATAL_ERROR
    • VIDEO_TDR_SUCCESS
  • ulpArg1 è il primo argomento da aggiungere al report. Lo sviluppatore del driver miniport di visualizzazione determina il valore e il significato di ulpArg1.

  • ulpArg2 è il secondo argomento da aggiungere al report. Lo sviluppatore del driver miniport di visualizzazione determina il valore e il significato di ulpArg2.

  • ulpArg3 è il terzo argomento da aggiungere al report. Lo sviluppatore del driver miniport di visualizzazione determina il valore e il significato di ulpArg3.

  • ulpArg4 è riservato.

DbgReportSecondaryData

Aggiunge i dati a un report di errore iniziale creato in precedenza da DbgReportCreate.

Chiamare DbgReportSecondaryData per aggiungere dati a un report iniziale creato da una chiamata precedente a DbgReportCreate. È possibile chiamare DbgReportSecondaryData più volte, ma con ogni chiamata, i dati scritti nel report sovrascrivono i dati scritti dalla chiamata precedente. La procedura seguente offre una buona strategia per l'aggiunta incrementale dei dati al report.

  1. Ottenere i dati più sicuri da raccogliere.
  2. Chiamare DbgReportSecondaryData per scrivere tali dati nel report.
  3. Ottenere dati più rischiosi da raccogliere.
  4. Chiamare DbgReportSecondaryData per scrivere i dati attendibili originali insieme ai dati rischiosi appena raccolti nel report. È necessario includere sia i dati sicuri che i dati rischiosi in questa chiamata perché i dati scritti da questa chiamata sovrascrivono i dati scritti dalla prima chiamata a DbgReportSecondaryData.
  5. Continuare a chiamare DbgReportSecondaryData, migliorando i dati ogni volta, fino a quando non sono presenti altri dati da aggiungere.
  6. Al termine dell'aggiunta di dati al report, chiudere il report chiamando DbgReportComplete. Il report viene archiviato in un file e inviato a Microsoft al riavvio del computer.
  7. Se il computer smette di rispondere prima di chiamare DbgReportComplete, i dati aggiunti al report dalla chiamata riuscita più recente a DbgReportSecondaryData vengono salvati e quindi inviati a Microsoft al riavvio del computer.
BOOLEAN (*DbgReportSecondaryData)(
  _Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
  _In_    PVOID                    pvData,
  _In_    ULONG                    ulDataSize
);
  • hReport è un handle per il report degli errori a cui verranno aggiunti i dati. Il driver miniport di visualizzazione ottenuto in precedenza questo handle chiamando DbgReportCreate.

  • pvData è un puntatore a un buffer che contiene i dati da aggiungere al report.

  • ulDataSize è la dimensione, in byte, dei dati da aggiungere al report. Il valore di questo parametro deve essere minore o uguale a DXGK_DEBUG_REPORT_MAX_SIZE.

DbgReportComplete

Chiude una segnalazione errori e libera tutte le risorse associate al report.

DbgReportCreate crea una voce nel registro eventi di sistema e visualizza una finestra di dialogo che informa l'utente dell'errore e presenta la possibilità di caricare una segnalazione errori in Microsoft.

La segnalazione errori viene salvata in un file e pianificata per l'invio a Microsoft al riavvio del computer. Il report degli errori contiene un codice di errore e quattro argomenti. Il codice di errore e i primi tre argomenti vengono forniti dal chiamante di DbgReportCreate. Il quarto argomento del report viene fornito dal sistema operativo e indica il numero di report generati dall'avvio del computer. Ad esempio, se il valore del quarto argomento è 5, significa che quattro segnalazioni di errori precedenti sono state generate dal driver miniport di visualizzazione dall'ultimo avvio del computer. Viene salvato solo il quinto report perché ogni report sovrascrive quello precedente.

// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
   IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
  • hReport è un handle per il report degli errori che deve essere chiuso. Il driver miniport di visualizzazione ottenuto in precedenza questo handle chiamando DbgReportCreate.

IRQL: PASSIVE_LEVEL

Commenti

Il driver miniport di visualizzazione fornisce i membri Size e Version di questa struttura e quindi chiama DxgkCbQueryServices, che riempie i membri rimanenti *di questa struttura.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Intestazione dispmprt.h (include Dispmprt.h)