次の方法で共有


バグ チェック 0xC2: BAD_POOL_CALLER

BAD_POOL_CALLER バグ チェックには、0x000000C2 の値があります。 これは、現在のスレッドが不適切なプール要求を行っていることを示します。

重要

この記事は、プログラマー向けです。 コンピューターを使用中に、ブルー スクリーン エラーが表示された場合は、「ブルー スクリーン エラーのトラブルシューティング」を参照してください。

BAD_POOL_CALLER パラメーター

パラメーター 1 は違反の種類を示します。

パラメーター 1 パラメータ 2 パラメーター 3 パラメーター 4 エラーの原因

0x00

0

プールの種類

プール タグ

現在のスレッドが 0 バイトのプール割り当てを要求しました。

0x01。

0x02。

0x04

プール ヘッダーへのポインター

プール ヘッダーの内容の最初の部分

0

プール ヘッダーが破損しています。

0x06

予約されています。

プール ヘッダーへのポインター

プール ヘッダーの内容

現在のスレッドは、既に解放されているプールを解放しようとしました。

0x07

予約されています。

プール ヘッダーの内容

解放されるプールのブロックのアドレス

現在のスレッドは、既に解放されているプールを解放しようとしました。

0x08

現在の IRQL

プールの種類

割り当てサイズ (バイト単位)

現在のスレッドが無効な IRQL でプールを割り当てようとしました。

0x09

現在の IRQL

プールの種類

プールのアドレス

現在のスレッドが無効な IRQL でプールを解放しようとしました。

0x0A

プールのアドレス

アロケーターのタグ

解放を試みながら使用されているタグ

現在のスレッドが間違ったタグを使用してプール メモリを解放しようとしました。

(メモリは別のコンポーネントに属している可能性があります)。

0x0B。

0x0C。

または、0x0D

プールのアドレス

プール割り当てのタグ

正しくないクォータ プロセス ポインター

現在のスレッドが、破損したプール割り当てでクォータを解放しようとしました。

0x40

開始アドレス

システム・アドレス・スペースの開始

0

現在のスレッドは、ユーザー モード アドレスでカーネル プールを解放しようとしました。

0x41

開始アドレス

物理ページ フレーム

最も高い物理ページ フレーム

現在のスレッドが、割り当てされていない非ページ プール アドレスを解放しようとしました。

0x42

または 443

解放されるアドレス

0

0

現在のスレッドは、どのプール内にも存在しない仮想アドレスを解放しようとしました。

0x44

開始アドレス

予約されています。

0

現在のスレッドが、割り当てされていない非ページ プール アドレスを解放しようとしました。

0x46

開始アドレス

0

0

現在のスレッドが無効なプール アドレスを解放しようとしました。

0x47

開始アドレス

物理ページ フレーム

最も高い物理ページ フレーム

現在のスレッドが、割り当てされていない非ページ プール アドレスを解放しようとしました。

0x48

開始アドレス

予約済み

予約済み

現在のスレッドが、割り当てされていないページ プール アドレスを解放しようとしました。

0x50

開始アドレス

ページ プールの先頭からの開始オフセット (ページ単位)

ページ プール サイズのバイト数

現在のスレッドが、割り当てされていないページ プール アドレスを解放しようとしました。

0x60

開始アドレス

0

0

現在のスレッドが、無効な連続したメモリ アドレスを解放しようとしました。

(呼び出し元 MmFreeContiguousMemory が不適切なポインターを渡しています。)

0x99

解放されているアドレス

0

0

現在のスレッドがプール アドレスを解放しようとしました。

(このコードは、プール ヘッダーの破損を示すこともできます)。

0x9A

プールの種類

要求されたバイト数

プール タグ

現在のスレッドは、割り当て要求 MUST_SUCCEED をマークしました。

(このプール型は、サポートされなくなりました)。

0x9B

プールの種類

要求されたバイト数

呼び出し元のアドレス

現在のスレッドが、タグが 0 のプールを割り当てようとしました

(これは追跡不可能であり、既存のタグ テーブルが破損する可能性があります)。

0x9C

プールの種類

要求されたバイト数

呼び出し元のアドレス

現在のスレッドが、タグが 「BIG」 のプールを割り当てようとしました

(これは追跡不可能であり、既存のタグ テーブルが破損する可能性があります)。

0x9D

プール タグが正しく使用されていません

プールの種類

呼び出し元のアドレス

現在のスレッドは、文字または数字を含まないタグを持つプールを割り当てようとしました。 このようなタグを使用すると、プールの問題の追跡が困難になります。

0x41286

予約済み

予約済み

ページ プールの先頭からの開始オフセット (ページ単位)

現在のスレッドは、割り当ての途中でページ プール アドレスを解放しようとしました。

_POOL_TYPE コードは Ntddk.h で列挙されます。 特に、0 は非ページ プールを示し、1 はページ プールを示します。

原因

現在のスレッドによって無効なプール要求が行われました。 通常、これは不適切な IRQL レベルであるか、同じメモリ割り当てを 二重に解放しています。

解決方法

メモリ プール オプションを有効にしてドライバー検証ツールをアクティブ化し、これらのエラーに関する詳細情報を取得し、障害が発生しているドライバーを見つけます。

ドライバーの検証ツール

ドライバーの検証ツールは、リアルタイムで実行してドライバーの動作を調べるためのツールです。 ドライバー コードの回でエラーが発生した場合は、ドライバー コードの該当部分をさらに精査できるように、事前に例外を作成します。 ドライバーの検証ツール マネージャーは、Windows に組み込まれており、すべての Windows PC で使用できます。 ドライバーの検証ツール マネージャーを起動するには、コマンド プロンプトで「Verifier」と入力します。 どのドライバーを検証するかを構成できます。 ドライバーを検証するコードが実行されるとオーバーヘッドが増えるので、可能な限り少ない数のドライバーで試してみてください。 詳細については、「ドライバーの検証ツール」を参照してください。

Windows メモリ診断:

特に、メモリ プールが破損している状況では、Windows メモリ診断ツールを実行して、物理メモリを原因として分離してみてください。 コントロール パネルの検索ボックスに「Memory」と入力し、[コンピューターのメモリの問題を診断する] を選択します。テストの実行後、イベント ビューアーを使用して、システム ログの下に結果を表示します。 MemoryDiagnostics-Results エントリを探して、結果を表示します。