IDiaSectionContrib
Recupera i dati che descrivono un contributo di sezione, ovvero un blocco contiguo di memoria contribuito all'immagine da un compiland.
Sintassi
IDiaSectionContrib : IUnknown
Metodi nell'ordine Vtable
Nella tabella seguente vengono illustrati i metodi di IDiaSectionContrib
.
metodo | Descrizione |
---|---|
IDiaSectionContrib::get_compiland | Recupera un riferimento al simbolo compiland che ha contribuito a questa sezione. |
IDiaSectionContrib::get_addressSection | Recupera la parte della sezione dell'indirizzo del contributo. |
IDiaSectionContrib::get_addressOffset | Recupera la parte offset dell'indirizzo del contributo. |
IDiaSectionContrib::get_relativeVirtualAddress | Recupera l'indirizzo virtuale relativo dell'immagine del contributo. |
IDiaSectionContrib::get_virtualAddress | Recupera l'indirizzo virtuale (VA) del contributo. |
IDiaSectionContrib::get_length | Recupera il numero di byte in una sezione. |
IDiaSectionContrib::get_notPaged | Recupera un flag che indica se la sezione non può essere disastrata dalla memoria. |
IDiaSectionContrib::get_nopad | Recupera un flag che indica se la sezione non deve essere riempita al limite di memoria successivo. |
IDiaSectionContrib::get_code | Recupera un flag che indica se la sezione contiene codice eseguibile. |
IDiaSectionContrib::get_code16bit | Recupera un flag che indica se la sezione contiene codice a 16 bit. |
IDiaSectionContrib::get_initializedData | Recupera un flag che indica se la sezione contiene dati inizializzati. |
IDiaSectionContrib::get_uninitializedData | Recupera un flag che indica se la sezione contiene dati non inizializzati. |
IDiaSectionContrib::get_informational | Recupera un flag che indica se una sezione contiene commenti o informazioni simili. |
IDiaSectionContrib::get_remove | Recupera un flag che indica se la sezione viene rimossa prima che venga creata parte dell'immagine in memoria. |
IDiaSectionContrib::get_comdat | Recupera un flag che indica se la sezione è un record COMDAT. |
IDiaSectionContrib::get_discardable | Recupera un flag che indica se la sezione può essere rimossa. |
IDiaSectionContrib::get_notCached | Recupera un flag che indica se la sezione non può essere memorizzata nella cache. |
IDiaSectionContrib::get_share | Recupera un flag che indica se la sezione può essere condivisa in memoria. |
IDiaSectionContrib::get_execute | Recupera un flag che indica se la sezione è eseguibile come codice. |
IDiaSectionContrib::get_read | Recupera un flag che indica se la sezione può essere letta. |
IDiaSectionContrib::get_write | Recupera un flag che indica se la sezione può essere scritta. |
IDiaSectionContrib::get_dataCrc | Recupera il controllo della ridondanza ciclico (CRC) dei dati nella sezione . |
IDiaSectionContrib::get_relocationsCrc | Recupera il CRC delle informazioni di rilocazione per la sezione . |
IDiaLineNumber::get_compilandId | Recupera l'identificatore compiland per la sezione . |
Osservazioni:
Note per i chiamanti
Questa interfaccia viene ottenuta chiamando i metodi IDiaEnumSectionContribs::Item e IDiaEnumSectionContribs::Next . Per un esempio di recupero dell'interfacciaIDiaSectionContrib
, vedere l'interfaccia IDiaEnumSectionContribs.
Esempio
Questa funzione mostra l'indirizzo di ogni sezione insieme ai simboli associati. Per vedere come viene ottenuta l'interfaccia IDiaEnumSectionContribs, vedere l'interfaccia IDiaSectionContrib
IDiaEnumSectionContribs.
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" );
}
}
}
}
Requisiti
Intestazione: Dia2.h
Libreria: diaguids.lib
DLL: msdia80.dll
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per