Bagikan melalui


IDiaInjectedSource

Mengakses kode sumber yang disuntikkan yang disimpan di sumber data Akses Antarmuka Debug (DIA).

Sintaks

IDiaInjectedSource : IUnknown

Metode dalam Urutan Vtable

Tabel berikut memperlihatkan metode IDiaInjectedSource.

Metode Deskripsi
IDiaInjectedSource::get_crc Mengambil pemeriksaan redundansi siklik (CRC) yang dihitung dari byte kode sumber.
IDiaInjectedSource::get_length Mengambil jumlah byte kode.
IDiaInjectedSource::get_filename Mengambil nama file untuk sumbernya.
IDiaInjectedSource::get_objectFilename Ambil nama file objek tempat sumber dikompilasi.
IDiaInjectedSource::get_virtualFilename Mengambil nama yang diberikan ke kode sumber non-file; yaitu, kode yang dimasukkan.
IDiaInjectedSource::get_sourceCompression Mengambil indikator pemadatan sumber yang digunakan.
IDiaInjectedSource::get_source Mengambil byte kode sumber.

Keterangan

Sumber yang dimasukkan adalah teks yang dimasukkan selama kompilasi. Ini tidak berarti pra-prosesor #include digunakan dalam C++.

Catatan untuk Penelepon

Dapatkan antarmuka ini dengan metode IDiaEnumInjectedSources::Item atau IDiaEnumInjectedSources::Next. Lihat antarmuka IDiaEnumInjectedSources untuk contoh mendapatkan antarmuka IDiaInjectedSource.

Contoh

Contoh ini menampilkan data yang tersedia dari antarmuka IDiaInjectedSource. Untuk pendekatan alternatif menggunakan antarmuka IDiaPropertyStorage, lihat contoh pada antarmuka 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);
    }
}

Persyaratan

Header: Dia2.h

Library: diaguids.lib

DLL: msdia80.dll

Lihat juga