DXGK_DEBUG_REPORT_INTERFACE 結構 (dispmprt.h)

DXGK_DEBUG_REPORT_INTERFACE 結構包含偵錯報表介面中函式的指標,由顯示埠驅動程序實作。

語法

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;

成員

Size

這個結構的大小,以位元組為單位。

Version

偵錯報表介面的版本號碼。 版本號碼常數定義於 Dispmprt.h (例如,DXGK_DEBUG_REPORT_INTERFACE_VERSION_1) 。

Context

顯示埠驅動程式提供之內容的指標。

InterfaceReference

介面參考函式的指標,由顯示埠驅動程序實作。

InterfaceDereference

顯示埠驅動程式所實作之介面取值函式的指標。

DbgReportCreate

建立初始錯誤報告。

如果您的顯示迷你埠驅動程序偵測到失敗,然後從中復原,您可以建立錯誤報告,稍後可用於偵錯。 首先,呼叫 DbgReportCreate 來建立初始報表。 然後,對 DbgReportSecondaryData 進行一或多個呼叫,將數據新增至報表。 當您完成將數據新增至報表時,請呼叫 DbgReportComplete

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 是與顯示配接器相關聯的內容區塊句柄。 顯示迷你埠驅動程式會在 其 DxgkDdiAddDevice* 函式中建立此句柄。 此參數可以是 NULL。

  • ulCode 是錯誤報告的程序代碼。 支援下列程式代碼:

    • THREAD_STUCK_IN_DEVICE_DRIVER
    • VIDEO_DRIVER_DEBUG_REPORT_REQUEST
    • VIDEO_TDR_FATAL_ERROR
    • VIDEO_TDR_SUCCESS
  • ulpArg1 是第一個要新增至報表的自變數。 顯示迷你埠驅動程序的開發人員會決定 ulpArg1 的值和意義。

  • ulpArg2 是要新增至報表的第二個自變數。 顯示迷你埠驅動程序的開發人員會決定 ulpArg2 的值和意義。

  • ulpArg3 是要新增至報表的第三個自變數。 顯示迷你埠驅動程序的開發人員會決定 ulpArg3 的值和意義。

  • ulpArg4 已保留。

DbgReportSecondaryData

將數據附加至先前由 DbgReportCreate 建立的初始錯誤報告。

呼叫 DbgReportSecondaryData ,將數據新增至先前呼叫 DbgReportCreate 所建立的初始報表。 您可以呼叫 DbgReportSecondaryData 數次,但每次呼叫時,寫入報表的數據都會覆寫先前呼叫所寫入的數據。 下列步驟提供以累加方式將數據新增至報表的良好策略。

  1. 取得最安全收集的數據。
  2. 呼叫 DbgReportSecondaryData ,將該數據寫入報表。
  3. 取得較有風險的數據。
  4. 呼叫 DbgReportSecondaryData 以將原始安全數據以及新收集的風險數據寫入報表。 您必須在此呼叫中包含安全與有風險的數據,因為此呼叫所寫入的數據會覆寫第一次呼叫 DbgReportSecondaryData 所寫入的數據。
  5. 繼續呼叫 DbgReportSecondaryData,每次增強數據,直到您沒有其他要新增的數據為止。
  6. 當您完成將數據新增至報表時,請呼叫 DbgReportComplete 來關閉報表。 報表會儲存在檔案中,並在計算機重新啟動時傳送給 Microsoft。
  7. 如果計算機在呼叫 DbgReportComplete 之前停止回應,則會儲存最近成功呼叫 DbgReportSecondaryData 至報表的數據,然後在計算機重新啟動時傳送給 Microsoft。
BOOLEAN (*DbgReportSecondaryData)(
  _Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
  _In_    PVOID                    pvData,
  _In_    ULONG                    ulDataSize
);
  • hReport 是將附加數據的錯誤報告句柄。 顯示迷你埠驅動程式先前藉由呼叫 DbgReportCreate 來取得此句柄。

  • pvData 是緩衝區的指標,可保存要加入至報表的數據。

  • ulDataSize 是要加入至報表的數據大小,以位元組為單位。 此參數的值必須小於或等於 DXGK_DEBUG_REPORT_MAX_SIZE。

DbgReportComplete

關閉錯誤報告,並釋放與報表相關聯的任何資源。

DbgReportCreate 會在系統事件記錄檔中建立專案,並顯示一個對話方塊,告知用戶失敗,並有機會將錯誤報告上傳至 Microsoft。

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

// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
   IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
  • hReport 是要關閉的錯誤報告句柄。 顯示迷你埠驅動程式先前藉由呼叫 DbgReportCreate 來取得此句柄。

IRQL: PASSIVE_LEVEL

備註

顯示迷你埠驅動程式會提供這個結構的 SizeVersion 成員,然後呼叫 DxgkCbQueryServices*,以填入這個結構的其餘成員。

規格需求

需求
最低支援的用戶端 Windows Vista
標頭 dispmprt.h (包括 Dispmprt.h)