Share via


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

擷取來源的程式碼位元組。

備註

插入的來源是在編譯期間會插入的文字。 這不表示前置處理器#include C++ 中使用。

呼叫者的備忘稿

取得這個介面,藉由呼叫IDiaEnumInjectedSources::ItemIDiaEnumInjectedSources::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)