KeRegisterBugCheckCallback ルーチンは、BugCheckCallback ルーチンを登録します。これは、オペレーティング システムがバグ チェックを発行したときに実行されます。
構文
BOOLEAN KeRegisterBugCheckCallback(
[out] PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
[in] PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
[in, optional] PVOID Buffer,
[in] ULONG Length,
[in] PUCHAR Component
);
パラメーター
[out] CallbackRecord
呼び出し元が非ページ ストレージを提供する、KeInitializeCallbackRecordによって以前に初期化されたコールバック レコードへのポインター。
[in] CallbackRoutine
ドライバーが指定した KBUGCHECK_CALLBACK_ROUTINE コールバック関数へのポインター。
[in, optional] Buffer
非ページ プールなどの常駐メモリ内に存在する必要がある、呼び出し元が指定したバッファーへのポインター。
[in] Length
呼び出し元が割り当てたバッファーのサイズをバイト単位で指定します。
[in] Component
呼び出し元を識別する null で終わる ANSI 文字列へのポインター。 通常、この文字列には、デバイス ドライバーの名前、またはそのデバイスの名前が含まれます。
戻り値
KeRegisterBugCheckCallback は、呼び出し元が指定したルーチンが登録されたバグ チェック コールバックのセットに正常に追加された場合、TRUE を返します。それ以外の場合は、FALSE 返します。
備考
KeRegisterBugCheckCallback ルーチンは、最も単純な種類のバグ チェック コールバック ルーチンである BugCheckCallback ルーチンを登録します。
KbCallbackDumpIo や KbCallbackAddPages ルーチンなど、他の種類のバグ チェック コールバックを登録するには、代わりに KeRegisterBugCheckReasonCallback ルーチンを使用します。
BugCheckCallback ルーチンは、システムがバグ チェックを発行したときに実行されます。 ドライバーは、既知の状態にデバイスをリセットするルーチンを使用できます。 詳細については、「BugCheckCallback」を参照してください。
ドライバーは、KeDeregisterBugCheckCallback ルーチンを使用してコールバックを削除できます。 アンロードできるドライバーは、Unload ルーチン内のすべてのコールバックを削除する必要があります。
コンポーネントの 文字列は、クラッシュ ダンプデバッグ中にドライバーを識別するために使用されます。 指定した Component 文字列に対応するクラッシュ ダンプ データを表示するには、デバッガー拡張機能 !bugdump 使用できます。 バグ チェック コールバック ルーチン自体をデバッグすることもできます。 デバッガーとデバッガー拡張機能の詳細については、「Windows デバッグ」を参照してください。
実装
BugCheckCallback コールバック ルーチンを定義するには、まず、定義するコールバック ルーチンの種類を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数の種類のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、ドライバー、静的ドライバー検証ツール (SDV)、およびその他の検証ツールのコード分析でエラーが検出されます。
たとえば、MyBugCheckCallback という名前の BugCheckCallback コールバック ルーチンを定義するには、次のコード例に示すようにKBUGCHECK_CALLBACK_ROUTINE型を使用します。
KBUGCHECK_CALLBACK_ROUTINE MyBugCheckCallback;
次に、次のようにコールバック ルーチンを実装します。
_Use_decl_annotations_
VOID
MyBugCheckCallback(
PVOID Buffer,
ULONG Length
)
{
// Function body
}
KBUGCHECK_CALLBACK_ROUTINE関数の種類は、Wdm.h ヘッダー ファイルで定義されています。
コード分析ツールの実行時にエラーをより正確に識別するには、_Use_decl_annotations_ annotation
を関数定義に追加してください。
Use_decl_annotations 注釈を使用すると、ヘッダー ファイル内のKBUGCHECK_CALLBACK_ROUTINE関数型に適用される注釈が使用されます。 関数宣言の要件の詳細については、「WDM ドライバーの の関数の役割の種類を使用して関数を宣言するを参照してください。
Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 以降で使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任意のレベル |
関連項目
バグ チェック コールバック ルーチンの を記述する。
KeDeregisterBugCheckCallback の