IDiaInjectedSource
访问存储在调试接口访问(DIA)数据源中的注入源代码。
语法
IDiaInjectedSource : IUnknown
Vtable 顺序中的方法
下表显示了 IDiaInjectedSource
方法。
方法 | 说明 |
---|---|
IDiaInjectedSource::get_crc | 检索根据源代码的字节计算出的循环冗余检验 (CRC)。 |
IDiaInjectedSource::get_length | 检索代码的字节数。 |
IDiaInjectedSource::get_filename | 检索源的文件名。 |
IDiaInjectedSource::get_objectFilename | 检索将源编译到的对象文件名。 |
IDiaInjectedSource::get_virtualFilename | 检索为非文件源代码指定的名称;即注入的代码。 |
IDiaInjectedSource::get_sourceCompression | 检索使用的源压缩的指示器。 |
IDiaInjectedSource::get_source | 检索源代码字节。 |
备注
注入源代码是编译期间注入的文本。 这并不意味着 C++ 中使用预处理器 #include
。
对调用者的说明
通过调用 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