Share via


IDiaInjectedSource

Obtiene acceso al código fuente insertado almacenado en el origen de datos de DIA.

Sintaxis

IDiaInjectedSource : IUnknown

Métodos en orden de Vtable

En la tabla siguiente se muestran los métodos de IDiaInjectedSource.

Método Descripción
IDiaInjectedSource::get_crc Recupera una comprobación de redundancia cíclica (CRC) calculada a partir de los bytes del código fuente.
IDiaInjectedSource::get_length Recupera el número de bytes de código.
IDiaInjectedSource::get_filename Recupera el nombre del archivo del código fuente.
IDiaInjectedSource::get_objectFilename Recupera el nombre del archivo de objeto al que se compiló el código fuente.
IDiaInjectedSource::get_virtualFilename Recupera el nombre proporcionado al código fuente que no es de archivo; es decir, código que se ha insertado.
IDiaInjectedSource::get_sourceCompression Recupera el indicador de la compresión de origen utilizada.
IDiaInjectedSource::get_source Recupera los bytes de código fuente.

Comentarios

El código fuente insertado es texto que se inserta durante la compilación. Esto no significa el preprocesador #include usado en C++.

Notas para autores de la llamada

Obtenga esta interfaz llamando a los métodos IDiaEnumInjectedSources::Item o IDiaEnumInjectedSources::Next. Consulte la interfaz IDiaEnumInjectedSources para obtener un ejemplo de obtención de la interfaz IDiaInjectedSource.

Ejemplo

En este ejemplo se muestran los datos disponibles en la interfaz IDiaInjectedSource. Para obtener un enfoque alternativo mediante la interfaz IDiaPropertyStorage, vea el ejemplo en la interfaz 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);
    }
}

Requisitos

Encabezado: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia80.dll

Vea también