次の方法で共有


EngExtCpp 拡張機能の構築

EngExtCpp 拡張ライブラリは、DbgEng 拡張ライブラリとほぼ同じ方法でビルドされます。 詳細については、「DbgEng 拡張機能のビルド」を参照してください。

スタティック ライブラリとリンクする代わりに EngExtCpp 実装コード (engextcpp.cpp) が使用されます。

EngExtCpp 拡張フレームワークは DbgEng 拡張フレームワーク上にビルドされているため、EngExtCpp 拡張 DLL は DbgEng 拡張 DLL と同じ関数をエクスポートする必要があります。

各拡張機能をエクスポートする必要があります。 EXT_COMMAND マクロを使用して拡張関数を定義する場合、このマクロは、拡張機能と同じ名前の C 関数も作成します。 この関数は DLL からエクスポートします。

engextcpp が提供する以下の関数は、EngExtCpp DLL からエクスポートします。

  • DebugExtensionInitialize -- Initialize メソッドを呼び出してライブラリを初期化できるようにします。

  • DebugExtensionInitialize -- Uninitialize メソッドを呼び出してライブラリを初期化解除できるようにします。

  • KnownStructOutputEx -- エンジンが ExtKnownStructMethod メソッドを呼び出して、既知の構造を出力用にフォーマットできるようにします。

  • DebugExtensionNotify -- エンジンが OnSessionActiveOnSessionInactiveOnSessionAccessibleOnSessionInaccessible メソッドを呼び出して、デバッグ セッションの状態に対する変更を拡張ライブラリに通知できるようにします。

  • help -- EngExtCpp 拡張機能フレームワークが自動的に !help 拡張機能を提供できるようにします。

これらの関数は、提供する機能が不要な場合でもエクスポートすることができます。 さらに、エクスポートされない場合、それらが提供する機能は失われます。

デバッガー エンジンが DLL を有効な DbgEng 拡張 DLL として認識するには、DebugExtensionInitialize をエクスポートする必要があります。