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