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_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 . |
IDiaSectionContrib::get_compilandId |
Recupera l'identificatore compiland per la sezione . |
IDiaSectionContrib::get_code16bit |
Recupera un flag che indica se la sezione contiene codice a 16 bit. |
Osservazioni:
Note per i chiamanti
Questa interfaccia viene ottenuta chiamando i IDiaEnumSectionContribs::Item
metodi e IDiaEnumSectionContribs::Next
. Vedere l'interfaccia IDiaEnumSectionContribs
per un esempio di recupero dell'interfaccia IDiaSectionContrib
.
Esempio
Questa funzione mostra l'indirizzo di ogni sezione insieme ai simboli associati. Vedere l'interfaccia IDiaEnumSectionContribs
per vedere come viene ottenuta l'interfaccia 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" );
}
}
}
}
Requisiti
Intestazione: Dia2.h
Libreria: diaguids.lib
DLL: msdia140.dll