Поделиться через


IDiaInjectedSource

Доступ впрыснули исходный код, которые хранятся в источнике данных DIA.

IDiaInjectedSource : IUnknown

Методы в том порядке Vtable

В следующей таблице показаны методы IDiaInjectedSource.

Метод

Описание

IDiaInjectedSource::get_crc

Возвращает вычисленный циклическую проверку избыточности (CRC) из байтов исходного кода.

IDiaInjectedSource::get_length

Извлекает число байтов кода.

IDiaInjectedSource::get_filename

Возвращает имя файла источника.

IDiaInjectedSource::get_objectFilename

Извлекает имя файла объекта, на который был источником компилирования.

IDiaInjectedSource::get_virtualFilename

Извлекает имя заданного к исходному коду non-файла; это значит, что код, который был впрыснут.

IDiaInjectedSource::get_sourceCompression

Возвращает индикатор, используемого сжатия источника.

IDiaInjectedSource::get_source

Возвращает байты исходного кода.

Заметки

Источник текста, введенного впрыснуто во время компиляции. Это не означает препроцессор #include используется в C++.

Замечания для вызывающих объектов

Для получения этого интерфейса нужно вызвать метод IDiaEnumInjectedSources::Item OR IDiaEnumInjectedSources::Next методы. См. IDiaEnumInjectedSources интерфейс пример получения IDiaInjectedSource интерфейс.

Пример

В этом примере показано, доступен данных из IDiaInjectedSource интерфейс. Для альтернативного подхода использование IDiaPropertyStorage интерфейс см. пример в 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_filename(&objectFilename) == S_OK)
        {
            wprintf(L"%s", objectFilename);
        }
        else
        {
            wprintf(L"<none>");
        }
        wprintf(L"\n");

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

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

Требования

Заголовок: Dia2.h

Библиотеки: diaguids.lib

Библиотеки DLL: msdia80.dll

См. также

Ссылки

IDiaEnumInjectedSources::Item

IDiaEnumInjectedSources::Next

IDiaEnumInjectedSources

Другие ресурсы

Интерфейсы (SDK для доступа к интерфейсу отладки)