分析拡張機能プラグインを記述するときは、プラグインを呼び出す状況を記述するメタデータ ファイルも記述します。 !analyze デバッガー コマンドを実行すると、メタデータ ファイルを使用して、読み込むプラグインが決定されます。
分析拡張機能プラグインと同じ名前と .alz の拡張子を持つメタデータ ファイルを作成します。 たとえば、分析拡張機能プラグインの名前が MyAnalyzer.dllの場合、メタデータ ファイルには MyAnalyzer.alz という名前を付ける必要があります。 メタデータ ファイルを分析拡張機能プラグインと同じディレクトリに配置します。
分析拡張機能プラグインのメタデータ ファイルは、キーと値のペアを含む ASCII テキスト ファイルです。 キーと値は空白で区切られます。 キーには、空白以外の文字を使用できます。 キーは大文字と小文字を区別しません。
キーと次の空白の後に、対応する値が開始されます。 値には、次のいずれかの形式を指定できます。
行の末尾までの任意の文字セット。 このフォームは、改行文字を含まない値に対して機能します。
大事な メタデータ ファイルの最後の値にこの形式の値がある場合、行の末尾は改行文字にする必要があります。
中かっこ { } の中にある任意の文字セット。 このフォームは、改行文字を含む値に対して機能します。
# で始まる行はコメントであり、無視されます。 コメントは、キーが必要な場所でのみ開始できます。
メタデータ ファイルでは、次のキーを使用できます。
| 鍵 | 説明 |
|---|---|
| PluginId | 文字列 - プラグインを識別します。 |
| DebuggeeClass | 文字列 - 指定できる値は "Kernel" と "User" です。 プラグインがカーネル モードのエラーのみを分析するか、ユーザー モードのエラーのみを分析することを示します。 |
| BugCheckCode(エラー検査コード) | 32 ビットバグ チェック コード - プラグインがこの バグ チェック コードの分析に関心があることを示します。 1 つのメタデータ ファイルで、複数のバグ チェック コードを指定できます。 |
| 例外コード (ExceptionCode) | 32 ビット例外コード - プラグインがこの 例外コードの分析に関心があることを示します。 1 つのメタデータ ファイルで複数の例外コードを指定できます。 |
| ExecutableName | 文字列 - プラグインが、分析するプロセスの実行中の実行可能ファイルであるセッションにのみ関心があることを示します。 1 つのメタデータ ファイルで複数の実行可能ファイル名を指定できます。 |
| 画像名 | 文字列 - 既定の分析でこのイメージ (dll、sys、または exe) がエラーであると見なされるセッションにのみプラグインが関心があることを示します。 このプラグインは、エラーが発生しているイメージが分析によって特定された後に呼び出されます。 1 つのメタデータ ファイルで複数のイメージ名を指定できます。 |
| MaxTagCount | 整数 - プラグインに必要なカスタム タグの最大数。 カスタム タグは、extsfns.h で定義されているタグ以外のタグです。 |
メタデータ ファイルの例
次のメタデータ ファイルでは、バグ チェック コードの0xE2の分析に関心があるプラグインについて説明します。 (最後の行は改行文字で終わる必要があることを思い出してください。
PluginId MyPlugin
DebuggeeClass Kernel
BugCheckCode 0xE2
次のメタデータ ファイルでは、バグ チェックの0x8、0x9、および0xAの分析に関心があるプラグイン MyDriver.sys が障害のあるモジュールと見なされる場合について説明します。
PluginId MyPlugin
DebuggeeClass Kernel
BugCheckCode 0x8
BugCheckCode 0x9
BugCheckCode 0xA
ImageName MyDriver.sys
次のメタデータ ファイルでは、MyApp.exe が分析対象のプロセスの実行中の実行可能ファイルである場合に0xC0000005例外コードの分析に関心があるプラグインについて説明します。 また、プラグインによって作成されるカスタム タグは 3 つまでです。
PluginId MyPlugin
DebuggeeClass User
ExceptionCode 0xC0000005
ExecutableName MyApp.exe
Debugging Tools for Windows には、dbgexts.dllという名前のデバッガー拡張機能モジュールをビルドするために使用できるサンプルがあります。 この拡張モジュールは、いくつかのデバッガー拡張機能コマンドを実装しますが、分析拡張機能プラグインとしても機能します。つまり、 _EFN_Analyze 関数をエクスポートします。 分析拡張機能プラグインとして dbgexts.dll を記述するメタデータ ファイルを次に示します。
PluginId PluginSample
DebuggeeClass User
ExceptionCode 0xc0000005
ExecutableName cdb.exe
ExecutableName windbg.exe
#
# Custom tag descriptions
#
TagDesc 0xA0000000 SAMPLE_PLUGIN_DEBUG_TEXT {Sample debug help text from plug-in analysis}
#