VIDEO_PORT_DEBUG_REPORT_INTERFACE 結構 (video.h)
VIDEO_PORT_DEBUG_REPORT_INTERFACE 結構會保存偵錯報表函式的指標,這些函式是由視訊埠驅動程式所實作。
語法
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;
成員
Size
指定這個 結構的大小,以位元組為單位。
Version
指定視訊埠驅動程式所傳回的介面版本。 目前唯一支援的版本是VIDEO_PORT_DEBUG_REPORT_INTERFACE_VERSION_1。
Context
視訊埠驅動程式所提供的內容指標。
InterfaceReference
視訊埠驅動程式所實作之介面參考函式的指標。
InterfaceDereference
視訊埠驅動程式所實作之介面取值函式的指標。
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)
備註
視訊迷你埠驅動程式會提供這個結構的 Size 和 Version 成員,然後呼叫 VideoPortQueryServices,以初始化其其餘成員。
如果您的視訊迷你埠驅動程序偵測到失敗,然後從中復原,您可以建立錯誤報告,稍後可以呼叫 VIDEO_PORT_DEBUG_REPORT_INTERFACE 的回呼函式成員來進行偵錯,如下所示:
- 首先,呼叫 DbgReportCreate 來建立初始報表。
- 然後,對 DbgReportSecondaryData 進行一或多個呼叫,將數據新增至報表。
- 當您完成將數據新增至報表時,請呼叫 DbgReportComplete。
錯誤報告會儲存在檔案中,並排定在電腦重新啟動時傳送給 Microsoft。 錯誤報告包含錯誤碼和四個自變數。 錯誤碼和前三個自變數是由 DbgReportCreate 的呼叫端所提供。 報表中的第四個自變數是由操作系統提供,並指出自計算機啟動以來產生的報表數目。 例如,如果 ulpArg4 的值是 5,這表示自從上次啟動電腦以來,顯示迷你埠驅動程式會產生四個先前的錯誤報告。 只會儲存第五個報表,因為每個報表都會覆寫上一個報表。
DbgReportCreate 所傳回的VIDEO_DEBUG_REPORT結構,後續傳遞至 DbgReportSecondaryData 和 DbgReportComplete 是不透明的。 請勿嘗試直接存取其成員。
下列各節詳細說明這些回呼函式。 必須在 IRQL = PASSIVE_LEVEL呼叫這些回呼。
DbgReportCreate
DbgReportCreate 會建立初始錯誤報告。 它會在系統事件記錄檔中建立專案,並顯示對話方塊,告知用戶失敗,並有機會將錯誤報告上傳至 Microsoft。 DbgReportCreate 會傳回代表新建立偵錯報表句柄的不透明 VIDEO_DEBUG_REPORT 結構的指標。
DbgReportCreate 參數
- HwDeviceHandle [in] 與顯示配接器相關聯的內容區塊句柄。 顯示迷你埠驅動程式會在其 DxgkDdiAddDevice 函式中建立此句柄。 此參數可以是 NULL。
- ulCode [in] 錯誤報告的程序代碼。 支援下列程式代碼:THREAD_STUCK_IN_DEVICE_DRIVER VIDEO_DRIVER_DEBUG_REPORT_REQUEST、VIDEO_TDR_FATAL_ERROR和VIDEO_TDR_SUCCESS。
- ulpArg1 [in] 要加入至報表的第一個自變數。 顯示迷你埠驅動程序的開發人員會決定 ulpArg1 的值和意義。
- ulpArg2 [in] 要加入至報表的第二個自變數。 顯示迷你埠驅動程序的開發人員會決定 ulpArg2 的值和意義。
- ulpArg3 [in] 要加入至報表的第三個自變數。 顯示迷你埠驅動程序的開發人員會決定 ulpArg3 的值和意義。
- ulpArg4 [in] 保留供系統使用。
DbgReportSecondaryData
DbgReportSecondaryData 函式會將數據附加至 先前由 DbgReportCreate 建立的初始錯誤報告。 如果 DbgReportSecondaryData 成功,則會傳回 TRUE。 否則會傳回 FALSE。
呼叫 DbgReportSecondaryData ,將數據新增至先前呼叫 DbgReportCreate 所建立的初始報表。 您可以呼叫 DbgReportSecondaryData 數次,但每次呼叫時,寫入報表的數據都會覆寫先前呼叫所寫入的數據。 下列步驟提供以累加方式將數據新增至報表的良好策略。
- 取得最安全收集的數據。
- 呼叫 DbgReportSecondaryData ,將該數據寫入報表。
- 取得較有風險的數據。
- 呼叫 DbgReportSecondaryData 以將原始安全數據以及新收集的風險數據寫入報表。 您必須在此呼叫中包含安全與有風險的數據,因為此呼叫所寫入的數據會覆寫第一次呼叫 DbgReportSecondaryData 所寫入的數據。
- 繼續呼叫 DbgReportSecondaryData,每次增強數據,直到您沒有其他要新增的數據為止。
當您完成將數據新增至報表時,請呼叫 DbgReportComplete 來關閉報表。 如果計算機在呼叫 DbgReportComplete 之前停止回應,則會儲存最近成功呼叫 DbgReportSecondaryData 至報表的數據,然後在計算機重新啟動時傳送給 Microsoft。
DbgReportSecondaryData 參數
- hReport [in, out] 將附加資料的錯誤報告句柄。 顯示迷你埠驅動程式先前藉由呼叫 DbgReportCreate 來取得此句柄。
- pvData [in] 緩衝區的指標,保存要加入至報表的數據。
- ulDataSize [in] 要加入至報表的數據大小,以位元組為單位。 此參數的值必須小於或等於 DXGK_DEBUG_REPORT_MAX_SIZE。
DbgReportComplete
DbgReportComplete 函式會關閉錯誤報告,並釋放與報表相關聯的任何資源。
DbgReportComplete 會在系統事件記錄檔中建立專案,並顯示對話方塊,告知用戶失敗,以及將錯誤報告上傳至 Microsoft 的機會。
DbgReportComplete 參數
- hReport VIDEO_DEBUG_REPORT 結構的指標 ,其中包含要關閉之錯誤報告的句柄。 顯示迷你埠驅動程式先前藉由呼叫 DbgReportCreate 來取得此句柄。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP SP2 |
最低支援的伺服器 | Windows Server 2003 SP1 |
標頭 | video.h (包含 Video.h) |