struktur DXGK_DEBUG_REPORT_INTERFACE (dispmprt.h)

Struktur DXGK_DEBUG_REPORT_INTERFACE berisi pointer ke fungsi di antarmuka Laporan Debug, yang diimplementasikan oleh driver port tampilan.

Sintaks

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;

Anggota

Size

Ukuran, dalam byte, dari struktur ini.

Version

Nomor versi antarmuka Laporan Debug. Konstanta nomor versi ditentukan dalam Dispmprt.h (misalnya, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).

Context

Penunjuk ke konteks yang disediakan oleh driver port tampilan.

InterfaceReference

Penunjuk ke fungsi referensi antarmuka yang diimplementasikan oleh driver port tampilan.

InterfaceDereference

Penunjuk ke fungsi dereferensi antarmuka yang diimplementasikan oleh driver port tampilan.

DbgReportCreate

Membuat laporan kesalahan awal.

Jika driver miniport tampilan Anda mendeteksi kegagalan dan kemudian pulih darinya, Anda dapat membuat laporan kesalahan yang nantinya dapat digunakan untuk penelusuran kesalahan. Pertama, panggil DbgReportCreate untuk membuat laporan awal. Kemudian tambahkan data ke laporan dengan melakukan satu atau beberapa panggilan ke DbgReportSecondaryData. Setelah Anda selesai menambahkan data ke laporan, panggil DbgReportComplete.

Sintaks untuk DbgReportComplete mengikuti.

// 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 adalah handel ke blok konteks yang terkait dengan adaptor tampilan. Driver miniport tampilan membuat handel ini dalam fungsi DxgkDdiAddDevice* - nya. Parameter ini bisa NULL.

  • ulCode adalah kode untuk laporan kesalahan. Kode berikut didukung:

    • THREAD_STUCK_IN_DEVICE_DRIVER
    • VIDEO_DRIVER_DEBUG_REPORT_REQUEST
    • VIDEO_TDR_FATAL_ERROR
    • VIDEO_TDR_SUCCESS
  • ulpArg1 adalah argumen pertama yang ditambahkan ke laporan. Pengembang driver miniport tampilan menentukan nilai dan arti dari ulpArg1.

  • ulpArg2 adalah argumen kedua yang akan ditambahkan ke laporan. Pengembang driver miniport tampilan menentukan nilai dan arti dari ulpArg2.

  • ulpArg3 adalah argumen ketiga yang akan ditambahkan ke laporan. Pengembang driver miniport tampilan menentukan nilai dan arti dari ulpArg3.

  • ulpArg4 dicadangkan.

DbgReportSecondaryData

Menambahkan data ke laporan kesalahan awal yang sebelumnya dibuat oleh DbgReportCreate.

Panggil DbgReportSecondaryData untuk menambahkan data ke laporan awal yang dibuat oleh panggilan sebelumnya ke DbgReportCreate. Anda dapat memanggil DbgReportSecondaryData beberapa kali, tetapi dengan setiap panggilan, data yang ditulis ke laporan menimpa data yang ditulis oleh panggilan sebelumnya. Langkah-langkah berikut memberikan strategi yang baik untuk menambahkan data secara bertahap ke laporan.

  1. Dapatkan data yang paling aman untuk dikumpulkan.
  2. Panggil DbgReportSecondaryData untuk menulis data tersebut ke laporan.
  3. Dapatkan data yang lebih berisiko untuk dikumpulkan.
  4. Hubungi DbgReportSecondaryData untuk menulis data aman asli bersama dengan data berisiko yang baru dikumpulkan ke laporan. Anda harus menyertakan data yang aman dan berisiko dalam panggilan ini karena data yang ditulis oleh panggilan ini menimpa data yang ditulis oleh panggilan pertama ke DbgReportSecondaryData.
  5. Lanjutkan memanggil DbgReportSecondaryData, meningkatkan data setiap kali, hingga Anda tidak memiliki data lagi untuk ditambahkan.
  6. Setelah Anda selesai menambahkan data ke laporan, tutup laporan dengan memanggil DbgReportComplete. Laporan disimpan dalam file dan dikirim ke Microsoft saat komputer di-boot ulang.
  7. Jika komputer berhenti merespons sebelum Anda memanggil DbgReportComplete, data yang ditambahkan ke laporan oleh panggilan berhasil terbaru ke DbgReportSecondaryData disimpan lalu dikirim ke Microsoft saat komputer di-boot ulang.
BOOLEAN (*DbgReportSecondaryData)(
  _Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
  _In_    PVOID                    pvData,
  _In_    ULONG                    ulDataSize
);
  • hReport adalah handel ke laporan kesalahan tempat data akan ditambahkan. Driver miniport tampilan sebelumnya memperoleh handel ini dengan memanggil DbgReportCreate.

  • pvData adalah penunjuk ke buffer yang menyimpan data untuk ditambahkan ke laporan.

  • ulDataSize adalah ukuran, dalam byte, dari data yang akan ditambahkan ke laporan. Nilai parameter ini harus kurang dari atau sama dengan DXGK_DEBUG_REPORT_MAX_SIZE.

DbgReportComplete

Menutup laporan kesalahan dan membebaskan sumber daya apa pun yang terkait dengan laporan.

DbgReportCreate membuat entri di log peristiwa sistem dan menampilkan kotak dialog yang memberi tahu pengguna tentang kegagalan dan menyajikan kesempatan untuk mengunggah laporan kesalahan ke Microsoft.

Laporan kesalahan disimpan dalam file dan dijadwalkan untuk dikirim ke Microsoft saat komputer di-boot ulang. Laporan kesalahan berisi kode kesalahan dan empat argumen. Kode kesalahan dan tiga argumen pertama disediakan oleh pemanggil DbgReportCreate. Argumen keempat dalam laporan disediakan oleh sistem operasi dan menunjukkan jumlah laporan yang dihasilkan sejak komputer dimulai. Misalnya, jika nilai argumen keempat adalah 5, ini berarti bahwa empat laporan kesalahan sebelumnya dihasilkan oleh driver miniport tampilan sejak komputer terakhir dimulai. Hanya laporan kelima yang disimpan karena setiap laporan menimpa laporan sebelumnya.

// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
   IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
  • hReport adalah handel ke laporan kesalahan yang akan ditutup. Driver miniport tampilan sebelumnya memperoleh handel ini dengan memanggil DbgReportCreate.

IRQL: PASSIVE_LEVEL

Keterangan

Driver miniport tampilan memasok anggota Ukuran dan Versi dari struktur ini, dan kemudian memanggil DxgkCbQueryServices*, yang mengisi anggota struktur ini yang tersisa.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Header dispmprt.h (termasuk Dispmprt.h)