IDiaSessionEx
Fornisce un contesto di query esteso per i simboli di debug.
Sintassi
IDiaSessionEx : IDiaSession
Metodi
Nella tabella seguente vengono illustrati i metodi di IDiaSessionEx
.
metodo | Descrizione |
---|---|
IDiaSessionEx::isFastLinkPDB |
Recupera un valore Boolean che indica che le informazioni di debug di origine sono state generate con /DEBUG:fastlink . |
IDiaSessionEx::isPortablePDB |
Recupera un valore Boolean che indica che le informazioni di debug di origine usano il formato PDB portabile. |
'IDiaSessionEx::getSourceLinkInfo' | Recupera un'enumerazione delle informazioni sul collegamento di origine. |
Osservazioni:
È importante chiamare il IDiaSession::put_loadAddress
metodo dopo la creazione dell'oggetto IDiaSession
e il valore passato al put_loadAddress
metodo deve essere diverso da zero, perché le proprietà degli indirizzi virtuali (VA) dei simboli siano accessibili. L'indirizzo di caricamento proviene da qualsiasi programma caricato il file eseguibile sottoposto a debug. Ad esempio, è possibile chiamare la funzione GetModuleInformation
Win32 per recuperare l'indirizzo di caricamento per l'eseguibile, dato un handle al file eseguibile.
Poiché IDiaSessionEx
eredita da IDiaSession
, alos ha tutti gli stessi metodi e può essere passato a qualsiasi funzione che accetta un oggetto IDiaSession
.
Esempio
Questo esempio illustra come ottenere l'interfaccia IDiaSessionEx
come parte di un'inizializzazione generale dell'SDK DIA (Debug Interface Access).
CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSessionEx> psessionex;
void InitializeDIA(const char *szFilename)
{
HRESULT hr = CoCreateInstance( CLSID_DiaSource,
NULL,
CLSCTX_INPROC_SERVER,
__uuidof( IDiaDataSource ),
(void **) &pSource);
if (FAILED(hr))
{
Fatal("Could not CoCreate CLSID_DiaSource. Register msdia140.dll." );
}
wchar_t wszFilename[ _MAX_PATH ];
mbstowcs( wszFilename,
szFilename,
sizeof( wszFilename )/sizeof( wszFilename[0] ) );
if ( FAILED( pSource->loadDataFromPdb( wszFilename ) ) )
{
if ( FAILED( pSource->loadDataForExe( wszFilename, NULL, NULL ) ) )
{
Fatal( "loadDataFromPdb/Exe" );
}
}
ComPtr<IDiaSession> psession;
if ( FAILED( pSource->openSession( &psession ) ) )
{
Fatal( "openSession" );
}
if ( FAILED( psession.QueryInterface(&psessionex) ) )
{
Fatal( "Failed to upgrade from IDiaSession to IDiaSessionEx, are you using an older version of msdia140.dll?" );
}
}
Requisiti
Intestazione: Dia2.h
Libreria: diaguids.lib
DLL: msdia140.dll