Freigeben über


IDiaInjectedSource

Accesses injected source code stored in the Debug Interface Access (DIA) data source.

Syntax

IDiaInjectedSource : IUnknown

Methoden in Vtable-Reihenfolge

In der folgenden Tabelle sind die Methoden von IDiaInjectedSource aufgeführt.

Methode BESCHREIBUNG
IDiaInjectedSource::get_crc Ruft eine CRC-Prüfung (Cyclic Redundancy Check, zyklische Redundanzprüfung) ab, die aus den Bytes des Quellcodes berechnet wird.
IDiaInjectedSource::get_length Ruft die Anzahl von Bytes des Codes ab.
IDiaInjectedSource::get_filename Ruft den Dateinamen der Quelle ab.
IDiaInjectedSource::get_objectFilename Ruft den Namen der Objektdatei ab, in die die Quelle kompiliert wurde.
IDiaInjectedSource::get_virtualFilename Ruft den Namen ab, der dem nicht als Datei vorliegenden Quellcode (d. h. eingefügter Code) zugewiesen wurde.
IDiaInjectedSource::get_sourceCompression Ruft den Indikator der verwendeten Quellkomprimierung ab.
IDiaInjectedSource::get_source Ruft die Quellcodebytes ab.

Bemerkungen

Die eingefügte Quelle ist Text, der während der Kompilierung eingefügt wird. Dies ist nicht der in C++ verwendeten Präprozessor #include.

Hinweise für Aufrufer

Rufen Sie diese Schnittstelle ab, indem Sie die Methoden IDiaEnumInjectedSources::Item oder IDiaEnumInjectedSources::Next aufrufen. Ein Beispiel zum Abrufen der IDiaInjectedSource-Schnittstelle finden Sie in der Beschreibung der IDiaEnumInjectedSources-Schnittstelle.

Beispiel

In diesem Beispiel werden die über die IDiaInjectedSource-Schnittstelle verfügbaren Daten angezeigt. Einen alternativen Ansatz mit der IDiaPropertyStorage-Schnittstelle finden Sie im Beispiel in der Beschreibung der IDiaEnumInjectedSources-Schnittstelle.

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);
    }
}

Requirements (Anforderungen)

Header: Dia2.h

Bibliothek: diaguids.lib

DLL: msdia80.dll

Weitere Informationen