IDiaSessionEx
Stellt einen erweiterten Abfragekontext für Debugsymbole bereit.
Syntax
IDiaSessionEx : IDiaSession
Methodik
In der folgenden Tabelle sind die Methoden von IDiaSessionEx
aufgeführt.
Methode | Beschreibung |
---|---|
IDiaSessionEx::isFastLinkPDB |
Ruft einen Booleschen Wert ab, der angibt, dass die Quelldebuginformationen mit /DEBUG:fastlink erstellt wurden. |
IDiaSessionEx::isPortablePDB |
Ruft einen booleschen Wert ab, der angibt, dass die Quelldebuginformationen das Portable PDB-Formatverwendet. |
"IDiaSessionEx::getSourceLinkInfo" | Ruft eine Aufzählung von Quelllinkinformationen ab. |
Bemerkungen
Es ist wichtig, die IDiaSession::put_loadAddress
-Methode nach dem Erstellen des IDiaSession
-Objekts aufzurufen, und der an die put_loadAddress
Methode übergebene Wert muss ungleich Null sein, damit auf alle virtuellen Adresseigenschaften (VA) von Symbolen zugegriffen werden kann. Die Ladeadresse stammt aus dem Programm, das die ausführbare Datei geladen hat, die gedebuggt wird. Sie können beispielsweise die Win32-Funktion GetModuleInformation
aufrufen, um die Ladeadresse für die ausführbare Datei abzurufen, wenn ein Handle für die ausführbare Datei angegeben ist.
Da IDiaSessionEx
von IDiaSession
erbt, weist es alle gleichen Methoden auf und kann an jede Funktion übergeben werden, die eine IDiaSession
akzeptiert.
Beispiel
In diesem Beispiel wird gezeigt, wie Sie die IDiaSessionEx
Schnittstelle als Teil einer allgemeinen Initialisierung des DEBUG Interface Access (DIA) SDK abrufen.
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?" );
}
}
Anforderungen
Kopfzeile: Dia2.h
Bibliothek: diaguids.lib
DLL: msdia140.dll