다음을 통해 공유


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

참고 항목