IDiaInjectedSource
Обращается к внедренным исходным кодом, хранящимся в источнике данных доступа к интерфейсу отладки (DIA).
Синтаксис
IDiaInjectedSource : IUnknown
Методы в порядке таблицы Vtable
В следующей таблице показаны методы IDiaInjectedSource
.
Метод | Description |
---|---|
IDiaInjectedSource::get_crc | Извлекает циклическую проверку избыточности (CRC), вычисляемую из байтов исходного кода. |
IDiaInjectedSource::get_length | Извлекает количество байтов кода. |
IDiaInjectedSource::get_filename | Извлекает имя файла для источника. |
IDiaInjectedSource::get_objectFilename | Извлекает имя файла объекта, в который компилировался источник. |
IDiaInjectedSource::get_virtualFilename | Извлекает имя, указанное в исходном коде, отличном от файла; то есть код, который был введен. |
IDiaInjectedSource::get_sourceCompression | Извлекает индикатор используемого исходного сжатия. |
IDiaInjectedSource::get_source | Извлекает байты исходного кода. |
Замечания
Внедренный источник — это текст, внедренный во время компиляции. Это не означает, что препроцессор #include
, используемый в C++.
Заметки для вызывающих абонентов
Получите этот интерфейс, вызвав методы IDiaEnumInjectedSources::Item или IDiaEnumInjectedSources::Next . Пример получения IDiaInjectedSource
интерфейса см. в интерфейсе IDiaEnumInjectedSources.
Пример
В этом примере отображаются данные, доступные 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_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);
}
}
Требования
Заголовок: Dia2.h
Библиотека: diaguids.lib
DLL: msdia80.dll