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 複数回呼び出すことができますが、呼び出しのたびに、レポートに書き込まれたデータによって、前の呼び出しによって書き込まれたデータが上書きされます。 次の手順では、レポートにデータを増分的に追加するための適切な戦略を示します。
- 収集する最も安全なデータを取得します。
- DbgReportSecondaryData 呼び出して、そのデータをレポートに書き込みます。
- 収集するリスクの高いデータを取得します。
- DbgReportSecondaryData 呼び出して、新しく収集された危険なデータと共に元の安全なデータをレポートに書き込みます。 この呼び出しで書き込まれたデータは、DbgReportSecondaryData への最初の呼び出しによって書き込まれたデータを上書きするため、この呼び出しに安全なデータと危険なデータの両方含める必要があります。
- DbgReportSecondaryData 呼び出しを続け、追加するデータがなくなったら毎回データを拡張します。
- レポートへのデータの追加が完了したら、DbgReportComplete 呼び出してレポートを閉じます。 レポートはファイルに格納され、コンピューターの再起動時に Microsoft に送信されます。
- 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
備考
ディスプレイ ミニポート ドライバーは、この構造体の サイズ と バージョン メンバーを提供し、この構造体の残りのメンバー 入力する DxgkCbQueryServices*を呼び出します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista |
ヘッダー | dispmprt.h (Dispmprt.h を含む) |