IDiaSegment
Bölüm numarasındaki verileri adres alanı segmentlerine Haritalar.
Sözdizimi
IDiaSegment : IUnknown
Vtable Sırasına Göre Yöntemler
Aşağıdaki tabloda yönteminin yöntemleri gösterilmektedir IDiaSegment
.
Metot | Açıklama |
---|---|
IDiaSegment::get_frame | Segment numarasını alır. |
IDiaSegment::get_offset | Bölümün başladığı segmentlerdeki uzaklığı alır. |
IDiaSegment::get_length | Segmentteki bayt sayısını alır. |
IDiaSegment::get_read | Kesimin okunup okunamayacağını gösteren bir bayrak alır. |
IDiaSegment::get_write | Segmentin değiştirilip değiştirilemeyeceğini gösteren bir bayrak alır. |
IDiaSegment::get_execute | Kesimin yürütülebilir olup olmadığını gösteren bir bayrak alır. |
IDiaSegment::get_addressSection | Bu segmente eşleyen bölüm numarasını alır. |
IDiaSegment::get_relativeVirtualAddress | Bölümün başlangıcının göreli sanal adresini (RVA) alır. |
IDiaSegment::get_virtualAddress | Bölümün başlangıcının sanal adresini (VA) alır. |
Açıklamalar
DIA SDK'sı zaten bölüm uzaklığından göreli sanal adreslere çeviriler gerçekleştirdiğinden çoğu uygulama segment eşlemesindeki bilgileri kullanmaz.
Arayanlar İçin Notlar
IDiaEnumSegments::Item veya IDiaEnumSegments::Next yöntemlerini çağırarak bu arabirimi alın. Ayrıntılar için örne bakın.
Örnek
Bu işlev, bir tablodaki tüm kesimlerin adresini ve en yakın simgeyi görüntüler.
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 ] );
}
}
}
}
}
Gereksinimler
Üst bilgi: Dia2.h
Kitaplık: diaguids.lib
DLL: msdia80.dll
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin