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)

注釈

ビデオ ミニポート ドライバーは、この構造体の Size メンバーと Version メンバーを提供し、 VideoPortQueryServices を呼び出して、残りのメンバーを初期化します。

ビデオ ミニポート ドライバーがエラーを検出し、そこから回復する場合は、後で次のように VIDEO_PORT_DEBUG_REPORT_INTERFACE のコールバック関数メンバーを呼び出すことによってデバッグに使用できるエラー レポートを作成できます。

  1. 最初に 、DbgReportCreate を呼び出して初期レポートを作成します。
  2. 次に、 DbgReportSecondaryData に対して 1 つ以上の呼び出しを行って、レポートにデータを追加します。
  3. レポートへのデータの追加が完了したら、 DbgReportComplete を呼び出します。

エラー レポートはファイルに保存され、コンピューターの再起動時に Microsoft に送信されるようにスケジュールされます。 エラー レポートには、エラー コードと 4 つの引数が含まれています。 エラー コードと最初の 3 つの引数は、 DbgReportCreate の呼び出し元によって提供されます。 レポートの 4 番目の引数はオペレーティング システムによって提供され、コンピューターの起動後に生成されたレポートの数を示します。 たとえば、 ulpArg4 の値が 5 の場合は、コンピューターが最後に起動されてから、ディスプレイ ミニポート ドライバーによって 4 つの以前のエラー レポートが生成されたことを意味します。 各レポートは前のレポートを上書きするため、5 番目のレポートのみが保存されます。

DbgReportCreate によって返され、その後 DbgReportSecondaryData に渡され、DbgReportComplete が不透明であるVIDEO_DEBUG_REPORT構造体。 メンバーに直接アクセスしないでください。

次のセクションでは、これらのコールバック関数について詳しく説明します。 これらのコールバックは、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] レポートに追加する 2 番目の引数。 ディスプレイ ミニポート ドライバーの開発者は、 ulpArg2 の値と意味を決定します。
  • ulpArg3 [in] レポートに追加する 3 番目の引数。 ディスプレイ ミニポート ドライバーの開発者は、 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
Header video.h (Video.h を含む)

こちらもご覧ください

インターフェイス

VideoPortQueryServices