IDiaSectionContrib
Recupera datos que describen una contribución de sección, es decir, un bloque contiguo de memoria aportado a la imagen por un compilado.
Sintaxis
IDiaSectionContrib : IUnknown
Métodos en orden de Vtable
En la tabla siguiente se muestran los métodos de IDiaSectionContrib
.
Método | Descripción |
---|---|
IDiaSectionContrib::get_compiland |
Recupera una referencia al símbolo compilado que ha contribuido a esta sección. |
IDiaSectionContrib::get_addressSection |
Recupera el elemento de sección con la dirección de la contribución. |
IDiaSectionContrib::get_addressOffset |
Recupera el elemento de desplazamiento con la dirección de la contribución. |
IDiaSectionContrib::get_relativeVirtualAddress |
Recupera la dirección virtual relativa (RVA) de imagen de la contribución. |
IDiaSectionContrib::get_virtualAddress |
Recupera la dirección virtual (VA) de la contribución. |
IDiaSectionContrib::get_length |
Recupera el número de bytes de una sección. |
IDiaSectionContrib::get_notPaged |
Recupera una marca que indica si la sección no se puede paginar fuera de la memoria. |
IDiaSectionContrib::get_nopad |
Recupera una marca que indica si la sección no se debe rellenar en el límite de memoria siguiente. |
IDiaSectionContrib::get_code |
Recupera una marca que indica si la sección contiene código ejecutable. |
IDiaSectionContrib::get_initializedData |
Recupera una marca que indica si la sección contiene datos inicializados. |
IDiaSectionContrib::get_uninitializedData |
Recupera una marca que indica si la sección contiene datos sin inicializar. |
IDiaSectionContrib::get_informational |
Recupera una marca que indica si una sección contiene comentarios o información similar. |
IDiaSectionContrib::get_remove |
Recupera una marca que indica si la sección se quita antes de formar parte de la imagen en memoria. |
IDiaSectionContrib::get_comdat |
Recupera una marca que indica si la sección es un registro COMDAT. |
IDiaSectionContrib::get_discardable |
Recupera una marca que indica si la sección se puede descartar. |
IDiaSectionContrib::get_notCached |
Recupera una marca que indica si la sección no se puede almacenar en caché. |
IDiaSectionContrib::get_share |
Recupera una marca que indica si la sección se puede compartir en memoria. |
IDiaSectionContrib::get_execute |
Recupera una marca que indica si la sección se puede ejecutar como código. |
IDiaSectionContrib::get_read |
Recupera una marca que indica si la sección se puede leer. |
IDiaSectionContrib::get_write |
Recupera una marca que indica si la sección se puede escribir. |
IDiaSectionContrib::get_dataCrc |
Recupera la prueba cíclica de redundancia (CRC) de los datos de la sección. |
IDiaSectionContrib::get_relocationsCrc |
Recupera la CRC de la información de reubicación de la sección. |
IDiaSectionContrib::get_compilandId |
Recupera el identificador del compilando de la sección. |
IDiaSectionContrib::get_code16bit |
Recupera una marca que indica si la sección contiene código de 16 bits. |
Comentarios
Notas para autores de la llamada
Esta interfaz se obtiene llamando a los IDiaEnumSectionContribs::Item
métodos y IDiaEnumSectionContribs::Next
. Consulte la IDiaEnumSectionContribs
interfaz para obtener un ejemplo de obtención de la IDiaSectionContrib
interfaz.
Ejemplo
Esta función muestra la dirección de cada sección junto con los símbolos asociados. Consulte la IDiaEnumSectionContribs
interfaz para ver cómo se obtiene la IDiaSectionContrib
interfaz.
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" );
}
}
}
}
Requisitos
Encabezado: Dia2.h
Biblioteca: diaguids.lib
DLL: msdia140.dll