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)

備註

視訊迷你埠驅動程式會提供這個結構的 SizeVersion 成員,然後呼叫 VideoPortQueryServices,以初始化其其餘成員。

如果您的視訊迷你埠驅動程序偵測到失敗,然後從中復原,您可以建立錯誤報告,稍後可以呼叫 VIDEO_PORT_DEBUG_REPORT_INTERFACE 的回呼函式成員來進行偵錯,如下所示:

  1. 首先,呼叫 DbgReportCreate 來建立初始報表。
  2. 然後,對 DbgReportSecondaryData 進行一或多個呼叫,將數據新增至報表。
  3. 當您完成將數據新增至報表時,請呼叫 DbgReportComplete

錯誤報告會儲存在檔案中,並排定在電腦重新啟動時傳送給 Microsoft。 錯誤報告包含錯誤碼和四個自變數。 錯誤碼和前三個自變數是由 DbgReportCreate 的呼叫端所提供。 報表中的第四個自變數是由操作系統提供,並指出自計算機啟動以來產生的報表數目。 例如,如果 ulpArg4 的值是 5,這表示自從上次啟動電腦以來,顯示迷你埠驅動程式會產生四個先前的錯誤報告。 只會儲存第五個報表,因為每個報表都會覆寫上一個報表。

DbgReportCreate 所傳回的VIDEO_DEBUG_REPORT結構,後續傳遞至 DbgReportSecondaryDataDbgReportComplete 是不透明的。 請勿嘗試直接存取其成員。

下列各節詳細說明這些回呼函式。 必須在 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 數次,但每次呼叫時,寫入報表的數據都會覆寫先前呼叫所寫入的數據。 下列步驟提供以累加方式將數據新增至報表的良好策略。

  1. 取得最安全收集的數據。
  2. 呼叫 DbgReportSecondaryData ,將該數據寫入報表。
  3. 取得較有風險的數據。
  4. 呼叫 DbgReportSecondaryData 以將原始安全數據以及新收集的風險數據寫入報表。 您必須在此呼叫中包含安全與有風險的數據,因為此呼叫所寫入的數據會覆寫第一次呼叫 DbgReportSecondaryData 所寫入的數據。
  5. 繼續呼叫 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)

另請參閱

介面

VideoPortQueryServices