IDiaSessionEx
Biedt een uitgebreide querycontext voor foutopsporingssymbolen.
Syntaxis
IDiaSessionEx : IDiaSession
Methoden
In de volgende tabel ziet u de methoden van IDiaSessionEx
.
Methode | Beschrijving |
---|---|
IDiaSessionEx::isFastLinkPDB |
Hiermee wordt een Booleaanse waarde opgehaald die aangeeft dat de brondebug-informatie is geproduceerd met /DEBUG:fastlink . |
IDiaSessionEx::isPortablePDB |
Hiermee wordt een Booleaanse waarde opgehaald die aangeeft dat de brondebug-informatie gebruikmaakt van de Portable PDB-indeling. |
'IDiaSessionEx::getSourceLinkInfo' | Haalt een opsomming van bronkoppelingsgegevens op. |
Opmerkingen
Het is belangrijk om de methode IDiaSession::put_loadAddress
aan te roepen nadat u het IDiaSession
-object hebt gemaakt, en de waarde die aan de methode put_loadAddress
is doorgegeven, moet niet nul zijn, zodat alle eigenschappen van virtuele adressen (VA) van symbolen toegankelijk zijn. Het laadadres is afkomstig van het programma dat het uitvoerbare bestand heeft geladen dat wordt opgespoord. U kunt bijvoorbeeld de Win32-functie aanroepen GetModuleInformation
om het laadadres voor het uitvoerbare bestand op te halen, met een ingang naar het uitvoerbare bestand.
Omdat IDiaSessionEx
overneemt van IDiaSession
, heeft het alos dezelfde methoden en kan deze worden doorgegeven aan elke functie die een IDiaSession
accepteert.
Voorbeeld
In dit voorbeeld ziet u hoe u de IDiaSessionEx
-interface kunt verkrijgen als onderdeel van een algemene initialisatie van de DIA-SDK (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?" );
}
}
Eisen
Koptekst: Dia2.h
Bibliotheek: diaguids.lib
DLL: msdia140.dll