分析拡張機能プラグインのメタデータ ファイル
分析拡張プラグインを作成するときは、プラグインを呼び出す必要がある状況を説明するメタデータ ファイルも作成します。 !analyze デバッガー コマンドを実行すると、メタデータ ファイルを使用して、読み込むプラグインが決定されます。
分析拡張機能プラグインと同じ名前と .alz の拡張子を持つメタデータ ファイルを作成します。 たとえば、分析拡張機能プラグインの名前が MyAnalyzer.dll の場合は、メタデータ ファイルに MyAnalyzer.alz という名前を付ける必要があります。 メタデータ ファイルを分析拡張機能プラグインと同じディレクトリに配置します。
分析拡張機能プラグインのメタデータ ファイルは、キーと値のペアを含む ASCII テキスト ファイルです。 キーと値は空白で区切られます。 キーには、空白以外の文字を使用できます。 キーでは大文字と小文字が区別されません。
キーと次の空白の後に、対応する値が開始されます。 値は次のいずれかの形式をとることができます。
行の末尾までの任意の文字セット。 このフォームは、改行文字を含まない値に対して機能します。
重要: メタデータ ファイルの最後の値にこの形式の値がある場合、行の末尾は改行文字である必要があります。
中かっこ { } の間の任意の文字セット。 このフォームは、改行文字を含む値に対して機能します。
# で始まる行はコメントであり、無視されます。 コメントは、キーが必要な場所でのみ開始できます。
メタデータ ファイルでは、次のキーを使用できます。
キー | 説明 |
---|---|
PluginId | 文字列 - プラグインを識別します。 |
DebuggeeClass | 文字列 - 指定できる値は "Kernel" と "User" です。 プラグインがカーネル モードのエラーのみを分析するか、ユーザー モードのエラーのみを分析することを示します。 |
BugCheckCode | 32 ビットバグチェックコード - プラグインがこの バグチェックコードの分析に関心があることを示します。 1 つのメタデータ ファイルで、複数のバグ チェック コードを指定できます。 |
ExceptionCode | 32 ビット例外コード - プラグインがこの 例外コードの分析に関心があることを示します。 1 つのメタデータ ファイルに複数の例外コードを指定できます。 |
ExecutableName | 文字列 - プラグインが、分析するプロセスの実行中の実行可能ファイルであるセッションにのみ関心があることを示します。 1 つのメタデータ ファイルで複数の実行可能ファイル名を指定できます。 |
ImageName | 文字列 - 既定の分析でこのイメージ (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}
#