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이면 컴퓨터가 마지막으로 시작된 이후 디스플레이 미니포트 드라이버에서 4개의 이전 오류 보고서가 생성되었음을 의미합니다. 각 보고서가 이전 보고서를 덮어쓰기 때문에 다섯 번째 보고서만 저장됩니다.

// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
   IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
  • hReport 는 닫을 오류 보고서에 대한 핸들입니다. 디스플레이 미니포트 드라이버는 이전에 DbgReportCreate를 호출하여 이 핸들을 얻었습니다.

Irql: PASSIVE_LEVEL

설명

디스플레이 미니포트 드라이버는 이 구조체의 크기버전 멤버를 제공한 다음, DxgkCbQueryServices*를 호출하여 이 구조체의 나머지 멤버를 채웁니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
머리글 dispmprt.h(Dispmprt.h 포함)