다음을 통해 공유


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

참고 항목