다음을 통해 공유


IDiaSegment

구역 번호를 데이터를 세그먼트의 주소 공간에 매핑합니다.

IDiaSegment : IUnknown

메서드에서 Vtable 순서

다음 표에서 메서드를 IDiaSegment.

메서드

설명

IDiaSegment::get_frame

세그먼트 수를 검색합니다.

IDiaSegment::get_offset

세그먼트가 시작 되는 위치 섹션의 오프셋을 검색 합니다.

IDiaSegment::get_length

세그먼트에 대 한 바이트 수를 검색합니다.

IDiaSegment::get_read

세그먼트를 읽을 수 있는지 여부를 나타내는 플래그를 검색 합니다.

IDiaSegment::get_write

세그먼트를 수정할 수 있는지 여부를 나타내는 플래그를 검색 합니다.

IDiaSegment::get_execute

세그먼트 실행 파일 인지 여부를 나타내는 플래그를 검색 합니다.

IDiaSegment::get_addressSection

이 세그먼트에 매핑하는 섹션 번호를 검색 합니다.

IDiaSegment::get_relativeVirtualAddress

섹션의 시작의 상대 가상 주소 (RVA)를 검색합니다.

IDiaSegment::get_virtualAddress

섹션의 시작 부분을 가상 주소 (VA)을 검색합니다.

설명

DIA SDK 이미 번역 섹션 오프셋의 상대 가상 주소에 수행 하기 때문에, 대부분의 응용 프로그램 수 있습니다 세그먼트 구조에서 정보를 사용 합니다.

호출자에 대 한 참고 사항

이 인터페이스를 호출 하 여 얻을 IDiaEnumSegments::Item 또는 IDiaEnumSegments::Next 방법입니다.자세한 내용은 예제를 참조 하십시오.

예제

이 함수는 모든 세그먼트의 주소 테이블 및 가까운 기호 표시 됩니다.

void ShowSegments(IDiaTable *pTable, IDiaSession *pSession)
{
    CComPtr<IDiaEnumSegments> pSegments;
    if ( SUCCEEDED( pTable->QueryInterface(
                                _uuidof( IDiaEnumSegments ),
                               (void**)&pSegments )
                  )
       )
    {
        CComPtr<IDiaSegment> pSegment;
        while ( SUCCEEDED( hr = pSegments->Next( 1, &pSegment, &celt ) ) &&
                celt == 1 )
        {
            DWORD rva;
            DWORD seg;

            pSegment->get_addressSection( &seg );
            if ( pSegment->get_relativeVirtualAddress( &rva ) == S_OK )
            {
                printf( "Segment %i addr: 0x%.8X\n", seg, rva );
                pSegment = 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( "\tClosest symbol: %ws (%ws)\n",
                            name != NULL ? name : L"",
                            szTags[ tag ] );
                }
            }
        }
    }
}

요구 사항

헤더: Dia2.h

라이브러리: diaguids.lib

DLL: msdia80.dll

참고 항목

참조

IDiaEnumSegments::Item

IDiaEnumSegments::Next

기타 리소스

인터페이스(디버그 인터페이스 액세스 SDK)