Compartir vía


IDiaSessionEx

Proporciona un contexto de consulta extendido para los símbolos de depuración.

Sintaxis

IDiaSessionEx : IDiaSession

Métodos

En la tabla siguiente se muestran los métodos de IDiaSessionEx.

Método Descripción
IDiaSessionEx::isFastLinkPDB Recupera un valor booleano que indica que la información de depuración de origen se generó con /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Recupera un valor booleano que indica que la información de depuración de origen usa el formato PDB portátil .
"IDiaSessionEx::getSourceLinkInfo" Recupera una enumeración de la información del vínculo de origen.

Observaciones

Es importante llamar al método IDiaSession::put_loadAddress después de crear el objeto IDiaSession y el valor pasado al método put_loadAddress debe ser distinto de cero, para que se pueda acceder a las propiedades de dirección virtual (VA) de los símbolos. La dirección de carga procede de cualquier programa que haya cargado el archivo ejecutable que se está depurando. Por ejemplo, puede llamar a la función Win32 GetModuleInformation para recuperar la dirección de carga del archivo ejecutable, dado un identificador al ejecutable.

Dado que IDiaSessionEx hereda de IDiaSession, alos tiene todos los mismos métodos y se puede pasar a cualquier función que acepte un IDiaSession.

Ejemplo

En este ejemplo se muestra cómo obtener la interfaz IDiaSessionEx como parte de una inicialización general del SDK de acceso a la interfaz de depuración (DIA).

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?" );
    }
}

Requisitos

Encabezado: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia140.dll

Consulte también