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)

설명

비디오 미니포트 드라이버는 이 구조의 크기버전 멤버를 제공한 다음 VideoPortQueryServices를 호출하여 나머지 멤버를 초기화합니다.

비디오 미니포트 드라이버가 오류를 감지한 다음 복구하는 경우 나중에 다음과 같이 VIDEO_PORT_DEBUG_REPORT_INTERFACE 콜백 함수 멤버를 호출하여 디버깅에 사용할 수 있는 오류 보고서를 만들 수 있습니다.

  1. 먼저 DbgReportCreate 를 호출하여 초기 보고서를 만듭니다.
  2. 그런 다음 DbgReportSecondaryData를 하나 이상 호출하여 보고서에 데이터를 추가합니다.
  3. 보고서에 데이터 추가가 완료되면 DbgReportComplete를 호출합니다.

오류 보고서는 파일에 저장되고 컴퓨터를 다시 부팅할 때 Microsoft로 전송되도록 예약됩니다. 오류 보고서에는 오류 코드와 네 개의 인수가 포함되어 있습니다. 오류 코드와 처음 세 개의 인수는 DbgReportCreate 호출자가 제공합니다. 보고서의 네 번째 인수는 운영 체제에서 제공되며 컴퓨터가 시작된 이후 생성된 보고서 수를 나타냅니다. 예를 들어 ulpArg4 값이 5이면 컴퓨터가 마지막으로 시작된 이후 디스플레이 미니포트 드라이버에서 4개의 이전 오류 보고서가 생성되었음을 의미합니다. 각 보고서가 이전 보고서를 덮어쓰기 때문에 다섯 번째 보고서만 저장됩니다.

DbgReportCreate에서 반환된 DbgReportSecondaryDataDbgReportComplete에 전달된 VIDEO_DEBUG_REPORT 구조체는 불투명합니다. 멤버에 직접 액세스하려고 시도하지 마세요.

다음 섹션에서는 이러한 콜백 함수에 대해 자세히 설명합니다. 이러한 콜백은 IRQL = PASSIVE_LEVEL 호출해야 합니다.

DbgReportCreate

DbgReportCreate 는 초기 오류 보고서를 만듭니다. 시스템 이벤트 로그에 항목을 만들고 사용자에게 오류를 알리고 오류 보고서를 Microsoft에 업로드할 수 있는 기회를 제공하는 대화 상자를 표시합니다. DbgReportCreate 는 새로 만든 디버그 보고서에 대한 핸들을 나타내는 불투명 VIDEO_DEBUG_REPORT 구조체에 대한 포인터를 반환합니다.

DbgReport 매개 변수 만들기

  • 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