IDiaInjectedSource

Uzyskuje dostęp do wprowadzonego kodu źródłowego przechowywanego w źródle danych DIA.

Składnia

IDiaInjectedSource : IUnknown

Metody w tabeli Vtable Order

W poniższej tabeli przedstawiono metody .IDiaInjectedSource

Metoda opis
IDiaInjectedSource::get_crc Pobiera cykliczne sprawdzanie nadmiarowości (CRC) obliczone z bajtów kodu źródłowego.
IDiaInjectedSource::get_length Pobiera liczbę bajtów kodu.
IDiaInjectedSource::get_filename Pobiera nazwę pliku dla źródła.
IDiaInjectedSource::get_objectFilename Pobiera nazwę pliku obiektu, do którego zostało skompilowane źródło.
IDiaInjectedSource::get_virtualFilename Pobiera nazwę nadaną kodowi źródłowemu innej niż plik; oznacza to, że kod, który został wstrzyknięty.
IDiaInjectedSource::get_sourceCompression Pobiera wskaźnik używanej kompresji źródłowej.
IDiaInjectedSource::get_source Pobiera bajty kodu źródłowego.

Uwagi

Wstrzyknięte źródło to tekst, który jest wstrzykiwany podczas kompilacji. Nie oznacza to preprocesora #include używanego w języku C++.

Uwagi dotyczące wywoływania

Uzyskaj ten interfejs, wywołując metody IDiaEnumInjectedSources::Item lub IDiaEnumInjectedSources::Next . Zobacz interfejs IDiaEnumInjectedSources, aby zapoznać się z przykładem uzyskania interfejsuIDiaInjectedSource.

Przykład

W tym przykładzie są wyświetlane dane dostępne z interfejsu IDiaInjectedSource . Aby uzyskać alternatywne podejście przy użyciu interfejsu IDiaPropertyStorage , zobacz przykład w interfejsie IDiaEnumInjectedSources .

void PrintInjectedSource(IDiaInjectedSource* pSource)
{
    ULONGLONG codeLength      = 0;
    DWORD     crc             = 0;
    DWORD     compressionType = 0;
    BSTR      sourceFilename  = NULL;
    BSTR      objectFilename  = NULL;
    BSTR      virtualFilename = NULL;

    std::cout << "Injected Source:" << std::endl;
    if (pSource != NULL)
    {
        if (pSource->get_crc(&crc) == S_OK &&
            pSource->get_sourceCompression(&compressionType) == S_OK &&
            pSource->get_length(&codeLength) == S_OK)
        {
            wprintf(L"  crc = %lu\n", crc);
            wprintf(L"  code length = %I64u\n",codeLength);
            wprintf(L"  compression type code = %lu\n", compressionType);
        }

        wprintf(L"  source filename: ");
        if (pSource->get_filename(&sourceFilename) == S_OK)
        {
            wprintf(L"%s", sourceFilename);
        }
        else
        {
            wprintf(L"<none>");
        }
        wprintf(L"\n");

        wprintf(L"  object filename: ");
        if (pSource->get_objectFilename(&objectFilename) == S_OK)
        {
            wprintf(L"%s", objectFilename);
        }
        else
        {
            wprintf(L"<none>");
        }
        wprintf(L"\n");

        wprintf(L"  virtual filename: ");
        if (pSource->get_virtualFilename(&virtualFilename) == S_OK)
        {
            wprintf(L"%s", virtualFilename);
        }
        else
        {
            wprintf(L"<none>");
        }
        wprintf(L"\n");

        SysFreeString(sourceFilename);
        SysFreeString(objectFilename);
        SysFreeString(virtualFilename);
    }
}

Wymagania

Nagłówek: Dia2.h

Biblioteka: diaguids.lib

BIBLIOTEKA DLL: msdia80.dll

Zobacz też