IDiaSession

Udostępnia kontekst zapytania dla symboli debugowania.

Składnia

IDiaSession : IUnknown

Metody

W poniższej tabeli przedstawiono metody .IDiaSession

Metoda opis
IDiaSession::get_loadAddress Pobiera adres ładowania pliku wykonywalnego odpowiadającego symbolom w tym magazynie symboli. Jest to ta sama wartość, która została przekazana put_loadAddress do metody .
IDiaSession::put_loadAddress Ustawia adres ładowania pliku wykonywalnego, który odpowiada symbolom w tym magazynie symboli. Uwaga: ważne jest, aby wywołać tę metodę podczas uzyskiwania IDiaSession obiektu i przed rozpoczęciem korzystania z obiektu.
IDiaSession::get_globalScope Pobiera odwołanie do zakresu globalnego.
IDiaSession::getEnumTables Pobiera moduł wyliczający dla wszystkich tabel zawartych w magazynie symboli.
IDiaSession::getSymbolsByAddr Pobiera moduł wyliczający dla wszystkich nazwanych symboli w statycznych lokalizacjach.
IDiaSession::findChildren Pobiera wszystkie elementy podrzędne określonego identyfikatora nadrzędnego zgodnego z nazwą i typem symbolu.
IDiaSession::findSymbolByAddr Pobiera określony typ symbolu, który zawiera lub znajduje się najbliżej określonego adresu.
IDiaSession::findSymbolByRVA Pobiera określony typ symbolu, który zawiera lub znajduje się najbliżej określonego względnego adresu wirtualnego (RVA).
IDiaSession::findSymbolByVA Pobiera określony typ symbolu, który zawiera lub znajduje się najbliżej określonego adresu wirtualnego (VA).
IDiaSession::findSymbolByToken Pobiera symbol zawierający określony token metadanych.
IDiaSession::symsAreEquiv Sprawdza, czy dwa symbole są równoważne.
IDiaSession::symbolById Pobiera symbol według jego unikatowego identyfikatora.
IDiaSession::findSymbolByRVAEx Pobiera określony typ symbolu, który zawiera lub znajduje się najbliżej określonego względnego adresu wirtualnego i przesunięcia.
IDiaSession::findSymbolByVAEx Pobiera określony typ symbolu, który zawiera lub znajduje się najbliżej określonego adresu wirtualnego i przesunięcia.
IDiaSession::findFile Pobiera plik źródłowy przez compiland i nazwę.
IDiaSession::findFileById Pobiera plik źródłowy według identyfikatora pliku źródłowego.
IDiaSession::findLines Pobiera numery wierszy w określonym pliku compiland i identyfikatorze pliku źródłowego.
IDiaSession::findLinesByAddr Pobiera wiersze w określonym compiland, który zawiera określony adres.
IDiaSession::findLinesByRVA Pobiera wiersze w określonym współzadziale zawierającym określony względny adres wirtualny.
IDiaSession::findLinesByVA Znajduje informacje o numerze wiersza dla wierszy zawartych w określonym zakresie adresów.
IDiaSession::findLinesByLinenum Pobiera wiersze w określonym współzadziale według pliku źródłowego i numeru wiersza.
IDiaSession::findInjectedSource Pobiera źródło, które zostało umieszczone w magazynie symboli przez dostawców atrybutów lub innych składników procesu kompilacji.
IDiaSession::getEnumDebugStreams Pobiera wyliczona sekwencję strumieni danych debugowania.
IDiaSession::findInlineFramesByAddr Pobiera wyliczenie, które umożliwia klientowi iterowanie wszystkich wbudowanych ramek na danym adresie.
IDiaSession::findInlineFramesByRVA Pobiera wyliczenie, które umożliwia klientowi iterowanie wszystkich ramek wbudowanych na określonym względnym adresie wirtualnym (RVA).
IDiaSession::findInlineFramesByVA Pobiera wyliczenie, które umożliwia klientowi iterowanie wszystkich ramek wbudowanych na określonym adresie wirtualnym.
IDiaSession::findInlineeLines Pobiera wyliczenie, które umożliwia klientowi iterowanie przez informacje o numerze wiersza wszystkich funkcji, które są podkreślone, bezpośrednio lub pośrednio przez określony symbol nadrzędny.
IDiaSession::findInlineeLinesByAddr Pobiera wyliczenie, które umożliwia klientowi iterowanie przez informacje o numerze wiersza wszystkich funkcji wbudowanych, bezpośrednio lub pośrednio, przez określony symbol nadrzędny i są zawarte w określonym zakresie adresów.
IDiaSession::findInlineeLinesByRVA Pobiera wyliczenie, które umożliwia klientowi iterowanie za pośrednictwem informacji o numerze wiersza wszystkich funkcji, które są wbudowane, bezpośrednio lub pośrednio, przez określony symbol nadrzędny i są zawarte w określonym względnym adresie wirtualnym (RVA).
IDiaSession::findInlineeLinesByVA Pobiera wyliczenie, które umożliwia klientowi iterowanie za pośrednictwem informacji o numerze wiersza wszystkich funkcji, które są podkreślone, bezpośrednio lub pośrednio przez określony symbol nadrzędny i znajdują się w określonym adresie wirtualnym (VA).
IDiaSession::findInlineeLinesByLinenum Pobiera wyliczenie, które umożliwia klientowi iterowanie za pośrednictwem informacji o numerze wiersza wszystkich funkcji, które są wbudowane, bezpośrednio lub pośrednio, w określonym pliku źródłowym i numerze wiersza.
IDiaSession::findInlineesByName Pobiera wyliczenie, które umożliwia klientowi iterowanie przez informacje o numerze wiersza wszystkich wbudowanych funkcji, które są zgodne z określoną nazwą.
IDiaSession::findSymbolsForAcceleratorPointerTag Zwraca wyliczenie symboli dla zmiennej, która określona wartość tagu odpowiada funkcji wycinka akceleratora nadrzędnego.
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag Biorąc pod uwagę odpowiadającą wartość tagu, ta metoda zwraca wyliczenie symboli zawartych w określonej funkcji wycinka akceleratora nadrzędnego w określonym względnym adresie wirtualnym.
IDiaSession::findAcceleratorInlineesByName Zwraca wyliczenie symboli dla ramek wbudowanych odpowiadających określonej wbudowanej nazwie funkcji.
IDiaSession::findAcceleratorInlineesByLinenum Zwraca wyliczenie symboli dla ramek wbudowanych odpowiadających określonej lokalizacji źródłowej.

Uwagi

Należy wywołać metodę IDiaSession::p ut_loadAddress po utworzeniu IDiaSession obiektu — a wartość przekazana do put_loadAddress metody musi być inna niż zero — aby wszystkie właściwości symboli wirtualnych były dostępne. Adres ładowania pochodzi z dowolnego programu załadowanego pliku wykonywalnego debugowanego. Można na przykład wywołać funkcję GetModuleInformation Win32, aby pobrać adres ładowania pliku wykonywalnego, biorąc pod uwagę uchwyt pliku wykonywalnego.

Przykład

W tym przykładzie pokazano, jak uzyskać IDiaSession interfejs w ramach ogólnej inicjowania zestawu DIA SDK.

CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSession> psession;

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 msdia80.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" );
        }
    }
    if ( FAILED( pSource->openSession( &psession ) ) )
    {
        Fatal( "openSession" );
    }
}

Wymagania

Nagłówek: Dia2.h

Biblioteka: diaguids.lib

BIBLIOTEKA DLL: msdia80.dll

Zobacz też