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
注釈
ディスプレイ ミニポート ドライバーは、この構造体の Size メンバーと Version メンバーを提供し、 DxgkCbQueryServices* を呼び出して、この構造体の残りのメンバーを入力します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
Header | dispmprt.h (Dispmprt.h を含む) |