Partager via


IDiaSessionEx

Fournit un contexte de requête étendu pour les symboles de débogage.

Syntaxe

IDiaSessionEx : IDiaSession

Méthodes

Le tableau suivant présente les méthodes de IDiaSessionEx.

Méthode Description
IDiaSessionEx::isFastLinkPDB Récupère une valeur booléenne indiquant que les informations de débogage source ont été produites avec /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Récupère une valeur booléenne indiquant que les informations de débogage source utilisent le format PDB portable.
'IDiaSessionEx ::getSourceLinkInfo' Récupère une énumération des informations de lien source.

Notes

Il est important d’appeler la IDiaSession::put_loadAddress méthode après avoir créé l’objet IDiaSession et que la valeur passée à la put_loadAddress méthode doit être différente de zéro pour que toutes les propriétés d’adresse virtuelle (VA) des symboles soient accessibles. L’adresse de chargement provient du programme qui a chargé l’exécutable en cours de débogage. Par exemple, vous pouvez appeler la fonction Win32 GetModuleInformation pour récupérer l’adresse de chargement de l’exécutable, pour un certain descripteur d’exécutable.

Comme IDiaSessionEx hérite de IDiaSession, il alos a toutes les mêmes méthodes et peut être passé à n’importe quelle fonction qui accepte un IDiaSession.

Exemple

Cet exemple montre comment obtenir l’interface IDiaSessionEx dans le cadre d’une initialisation générale du 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?" );
    }
}

Spécifications

En-tête : Dia2.h

Bibliothèque : diaguids.lib

DLL : msdia140.dll

Voir aussi