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_code16bit | Recupera una marca que indica si la sección contiene código de 16 bits. |
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 contiene 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. |
IDiaLineNumber::get_compilandId | Recupera el identificador del compilando de la sección. |
Observaciones
Notas para autores de la llamada
Esta interfaz se obtiene llamando a los métodos IDiaEnumSectionContribs::Item y IDiaEnumSectionContribs::Next. Consulte la interfaz IDiaEnumSectionContribs para obtener un ejemplo de obtención de la interfaz IDiaSectionContrib
.
Ejemplo
Esta función muestra la dirección de cada sección junto con los símbolos asociados. Consulte la interfaz IDiaEnumSectionContribs para ver cómo se obtiene la interfaz 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" );
}
}
}
}
Requisitos
Encabezado: Dia2.h
Biblioteca: diaguids.lib
DLL: msdia80.dll