IDiaSectionContrib

セクション コントリビューション (つまり、コンパイル単位がイメージに寄与している連続するメモリ ブロック) を記述するデータを取得します。

構文

IDiaSectionContrib : IUnknown

Vtable 順序のメソッド

次の表に、IDiaSectionContrib のメソッドを示します。

メソッド 説明
IDiaSectionContrib::get_compiland このセクションをコントリビュートした、コンパイル単位のシンボルへの参照を取得します。
IDiaSectionContrib::get_addressSection コントリビューションのアドレスのセクション部分を取得します。
IDiaSectionContrib::get_addressOffset コントリビューションのアドレスのオフセット部分を取得します。
IDiaSectionContrib::get_relativeVirtualAddress コントリビューションのイメージ相対仮想アドレス (RVA) を取得します。
IDiaSectionContrib::get_virtualAddress コントリビューションの仮想アドレス (VA) を取得します。
IDiaSectionContrib::get_length セクション内のバイトの数を取得します。
IDiaSectionContrib::get_notPaged セクションがメモリからページ アウトできないかどうかを示すフラグを取得します。
IDiaSectionContrib::get_nopad セクションを次のメモリ境界に埋め込むことができないかどうかを示すフラグを取得します。
IDiaSectionContrib::get_code セクションに実行可能コードが含まれているかどうかを示すフラグを取得します。
IDiaSectionContrib::get_code16bit セクションに 16 ビット コードが含まれているかどうかを示すフラグを取得します。
IDiaSectionContrib::get_initializedData セクションに初期化されたデータが含まれているかどうかを示すフラグを取得します。
IDiaSectionContrib::get_uninitializedData セクションに初期化されていないデータが含まれているかどうかを示すフラグを取得します。
IDiaSectionContrib::get_informational セクションにコメントまたは類似する情報が含まれているかどうかを示すフラグを取得します。
IDiaSectionContrib::get_remove セクションをメモリ内イメージに含める前に削除するかどうかを示すフラグを取得します。
IDiaSectionContrib::get_comdat セクションが COMDAT レコードであるかどうかを示すフラグを取得します。
IDiaSectionContrib::get_discardable セクションを破棄できるかどうかを示すフラグを取得します。
IDiaSectionContrib::get_notCached セクションをキャッシュできないかどうかを示すフラグを取得します。
IDiaSectionContrib::get_share セクションをメモリ内で共有できるかどうかを示すフラグを取得します。
IDiaSectionContrib::get_execute セクションがコードとして実行可能かどうかを示すフラグを取得します。
IDiaSectionContrib::get_read セクションが読み取り可能であるかどうかを示すフラグを取得します。
IDiaSectionContrib::get_write セクションが書き込み可能であるかどうかを示すフラグを取得します。
IDiaSectionContrib::get_dataCrc セクション内のデータの巡回冗長検査 (CRC) を取得します。
IDiaSectionContrib::get_relocationsCrc セクションの再配置情報の CRC を取得します。
IDiaLineNumber::get_compilandId セクションのコンパイル単位識別子を取得します。

解説

呼び出し元に関する注意事項

このインターフェイスは、IDiaEnumSectionContribs::Item および IDiaEnumSectionContribs::Next メソッドを呼び出すことによって取得されます。 IDiaSectionContrib インターフェイスを取得する例については、IDiaEnumSectionContribs インターフェイスを参照してください。

この関数は、関連付けられているシンボルと共に各セクションのアドレスを表示します。 IDiaSectionContrib インターフェイスを取得する方法については、IDiaEnumSectionContribs インターフェイスを参照してください。

void PrintSectionContrib(IDiaSectionContrib* pSecContrib, IDiaSession* pSession)
{
    if (pSecContrib != NULL && pSession != NULL)
    {
        DWORD rva;
        if ( pSecContrib->get_relativeVirtualAddress( &rva ) == S_OK )
        {
            printf( "\taddr: 0x%.8X", rva );
            pSecContrib = NULL;
            CComPtr<IDiaSymbol> pSym;
            if ( psession->findSymbolByRVA( rva, SymTagNull, &pSym ) == S_OK )
            {
                CDiaBSTR name;
                DWORD    tag;
                pSym->get_symTag( &tag );
                pSym->get_name( &name );
                printf( "     symbol: %ws (%ws)\n",
                        name != NULL ? name : L"",
                        szTags[ tag ] );
            }
            else
            {
                printf( "<no symbol found?>\n" );
            }
        }
        else
        {
            DWORD isect;
            DWORD offset;
            pSecContrib->get_addressSection( &isect );
            pSecContrib->get_addressOffset( &offset );
            printf( "\taddr: 0x%.4X:0x%.8X", isect, offset );
            pSecContrib = NULL;
            CComPtr<IDiaSymbol> pSym;
            if ( SUCCEEDED( psession->findSymbolByAddr(
                                              isect,
                                              offset,
                                              SymTagNull,
                                              &pSym )
                          )
               )
            {
                CDiaBSTR name;
                DWORD    tag;
                pSym->get_symTag( &tag );
                pSym->get_name( &name );
                printf( "     symbol: %ws (%ws)\n",
                    name != NULL ? name : L"",
                    szTags[ tag ] );
            }
            else
            {
                printf( "<no symbol found?>\n" );
            }
        }
    }
}

要件

ヘッダー: Dia2.h

ライブラリ: diaguids.lib

DLL: msdia80.dll

関連項目