Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Dati di mapping del numero di sezione ai segmenti di spazio degli indirizzi.
IDiaSegment : IUnknown
Metodi nell'ordine di Vtable
Nella tabella seguente sono elencati i metodi di IDiaSegment.
Metodo |
Descrizione |
|---|---|
recupera il numero di segmento. |
|
Recupera offset in segmenti in cui la sezione verrà avviato. |
|
Recupera il numero di byte nel segmento. |
|
Recupera un flag che indica se il segmento può essere letto. |
|
Recupera un flag che indica se il segmento può essere modificato. |
|
recupera un flag che indica se il segmento è eseguibile. |
|
Recupera il numero di sezione mappata a questo segmento. |
|
Recupera indirizzo (RVA) virtuale relativo dell'avvio della sezione. |
|
Recupera indirizzo (VA) virtuale dell'avvio della sezione. |
Note
Poiché il DIA SDK già esegue le conversioni dalla sezione di stampa l'offset degli indirizzi virtuali relativi (RVA, la maggior parte delle applicazioni non useranno le informazioni nel mapping del segmento.
Note per i chiamanti
Leggi questa interfaccia chiamando IDiaEnumSegments::Item o IDiaEnumSegments::Next metodi.Vedere l'esempio relativo ai dettagli.
Esempio
Questa funzione visualizzare l'indirizzo di tutti i segmenti in una tabella e nel simbolo più vicino.
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 ] );
}
}
}
}
}
Requisiti
intestazione: Dia2.h
raccolta: diaguids.lib
DLL: msdia80.dll