次の方法で共有


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 に対して 1 つ以上の呼び出しを行って、レポートにデータを追加します。 レポートへのデータの追加が完了したら、 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 は、レポートに追加する 2 番目の引数です。 ディスプレイ ミニポート ドライバーの開発者は、 ulpArg2 の値と意味を決定します。

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

// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
   IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
  • hReport は、閉じるエラー レポートのハンドルです。 ディスプレイ ミニポート ドライバーは、以前に DbgReportCreate を呼び出してこのハンドルを取得しました。

Irql: PASSIVE_LEVEL

注釈

ディスプレイ ミニポート ドライバーは、この構造体の Size メンバーと Version メンバーを提供し、 DxgkCbQueryServices* を呼び出して、この構造体の残りのメンバーを入力します。

要件

要件
サポートされている最小のクライアント Windows Vista
Header dispmprt.h (Dispmprt.h を含む)