0

C/C++ 言語で Visual Studio 2005 または 2010 を使用して開発を行っています。バイナリまたは実行ファイルのシンボル テーブルからグローバル構造定義情報を取得したいと考えています。以下に例を示します。「TD」という名前のグローバル構造と、構造内の 3 つのメンバー。コードがコンパイルされると、情報はシンボル テーブル、PDB シンボル ファイル、または DBG ファイルに格納されます。シンボルテーブルから情報を抽象化する関数のセットはありますか? メンバーのサイズとこのメンバーのタイプを取得できますか?

typedef struct {
void * pointer;
int    b;
char c;
}TD;
4

1 に答える 1

1

ISymbolReaderインターフェイスを使用する必要があります。ここに C# の例があります。

        // Create the Metadata dispenser.
        IMetaDataDispenserEx pDispenser = new IMetaDataDispenserEx();

        // Open the Metadata importer for the given file.
        Guid importerIID = new Guid(RCWHelper.IID_IMetaDataImport);
        IntPtr pImporter = IntPtr.Zero;
        pDispenser.OpenScope(filepath, COR_OPEN_FLAGS.ofRead, ref importerIID, out pImporter);

        SymBinder binder = new SymBinder();
        ISymbolReader symReader = binder.GetReader(pImporter, filepath);

次に、このインターフェイスの GetGlobalVariables メソッドと GetVariables メソッドを使用して、変数に関する完全な情報を取得できます。

于 2012-12-17T09:16:39.600 に答える