struttura VIDEO_PORT_DEBUG_REPORT_INTERFACE (video.h)
La struttura VIDEO_PORT_DEBUG_REPORT_INTERFACE contiene puntatori alle funzioni del report di debug, implementate dal driver della porta video.
Sintassi
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;
Membri
Size
Specifica le dimensioni, in byte, di questa struttura.
Version
Specifica la versione dell'interfaccia restituita dal driver della porta video. Attualmente, l'unica versione supportata è VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1.
Context
Puntatore a un contesto fornito dal driver della porta video.
InterfaceReference
Puntatore a una funzione di riferimento dell'interfaccia implementata dal driver della porta video.
InterfaceDereference
Puntatore a una funzione di dereferenziazione dell'interfaccia implementata dal driver della porta video.
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)
Osservazioni
Il driver miniport video fornisce i membri Size e Version di questa struttura e quindi chiama VideoPortQueryServices, che inizializza i membri rimanenti.
Se il driver miniport video rileva un errore e quindi lo recupera, è possibile creare un report degli errori che può essere usato in un secondo momento per il debug chiamando i membri della funzione di callback di VIDEO_PORT_DEBUG_REPORT_INTERFACE come indicato di seguito:
- Prima di tutto, chiamare DbgReportCreare 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.
La segnalazione degli errori viene salvata in un file e pianificata per l'invio a Microsoft al riavvio del computer. La segnalazione 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 nel report viene fornito dal sistema operativo e indica il numero di report generati dall'avvio del computer. Ad esempio, se il valore di ulpArg4 è 5, significa che quattro segnalazioni di errori precedenti sono state generate dal driver miniport di visualizzazione dall'ultimo avvio del computer. Solo il quinto report viene salvato perché ogni report sovrascrive quello precedente.
La struttura VIDEO_DEBUG_REPORT restituita da DbgReportCreate e successivamente passata a DbgReportSecondaryData e DbgReportComplete è opaca. Non tentare di accedere direttamente ai relativi membri.
Le sezioni seguenti descrivono in dettaglio queste funzioni di callback. Questi callback devono essere chiamati in IRQL = PASSIVE_LEVEL.
DbgReportCreate
DbgReportCreare crea un report di errore iniziale. 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. DbgReportCreate restituisce un puntatore a una struttura di VIDEO_DEBUG_REPORT opaca che rappresenta un handle per il report di debug appena creato.
DbgReportCrea parametri
- HwDeviceHandle [in] Handle a 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 [in] Codice A per il report degli errori. Sono supportati i codici seguenti: THREAD_STUCK_IN_DEVICE_DRIVER VIDEO_DRIVER_DEBUG_REPORT_REQUEST, VIDEO_TDR_FATAL_ERROR e VIDEO_TDR_SUCCESS.
- ulpArg1 [in] Il primo argomento da aggiungere al report. Lo sviluppatore del driver miniport di visualizzazione determina il valore e il significato di ulpArg1.
- ulpArg2 [in] Il secondo argomento da aggiungere al report. Lo sviluppatore del driver miniport di visualizzazione determina il valore e il significato di ulpArg2.
- ulpArg3 [in] Terzo argomento da aggiungere al report. Lo sviluppatore del driver miniport di visualizzazione determina il valore e il significato di ulpArg3.
- ulpArg4 [in] Riservato per l'uso del sistema.
DbgReportSecondaryData
La funzione DbgReportSecondaryData aggiunge dati a un report di errore iniziale creato in precedenza da DbgReportCreate. Se DbgReportSecondaryData ha esito positivo, restituisce TRUE. In caso contrario, restituisce FALSE.
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.
- Ottenere i dati più sicuri da raccogliere.
- Chiamare DbgReportSecondaryData per scrivere tali dati nel report.
- Ottenere dati più rischiosi da raccogliere.
- 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.
- Continuare a chiamare DbgReportSecondaryData, migliorando i dati ogni volta, fino a quando non sono disponibili altri dati da aggiungere.
Al termine dell'aggiunta di dati al report, chiudere il report chiamando DbgReportComplete. 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 quando il computer viene riavviato.
Parametri DbgReportSecondaryData
- hReport [in, out] Handle al report degli errori a cui verranno aggiunti i dati. Il driver miniport di visualizzazione ottenuto in precedenza questo handle chiamando DbgReportCreate.
- pvData [in] Puntatore a un buffer che contiene i dati da aggiungere al report.
- ulDataSize [in] Dimensioni, 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
La funzione DbgReportComplete chiude una segnalazione errori e libera tutte le risorse associate al report.
DbgReportComplete crea una voce nel registro eventi di sistema e visualizza una finestra di dialogo che informa l'utente dell'errore e la possibilità di caricare una segnalazione errori in Microsoft.
Parametri DbgReportComplete
- hReport Puntatore a una struttura VIDEO_DEBUG_REPORT che contiene un handle per il report degli errori da chiudere. Il driver miniport di visualizzazione ottenuto in precedenza questo handle chiamando DbgReportCreate.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP SP2 |
server minimo supportato | Windows Server 2003 SP1 |
intestazione | video.h (includere Video.h) |