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_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를 검색합니다. |
IDiaSectionContrib::get_compilandId |
섹션에 대한 컴파일 대상 식별자를 검색합니다. |
IDiaSectionContrib::get_code16bit |
섹션에 16비트 코드가 포함되어 있는지를 나타내는 플래그를 검색합니다. |
설명
호출자 참고 사항
이 인터페이스는 및 IDiaEnumSectionContribs::Next
메서드를 IDiaEnumSectionContribs::Item
호출하여 가져옵니다. 인터페이스를 IDiaEnumSectionContribs
가져오는 예제는 인터페이스를 IDiaSectionContrib
참조하세요.
예시
이 함수는 연결된 기호와 함께 각 섹션의 주소를 표시합니다. 인터페이스를 IDiaEnumSectionContribs
가져오는 방법을 보려면 인터페이스를 IDiaSectionContrib
참조하세요.
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: msdia140.dll