共用方式為


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::ItemIDiaEnumInjectedSources::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

另請參閱