Compartir a través de


ICorDebugModule2::ApplyChanges (Método)

Aplica los cambios en los metadatos y los cambios en el código de Lenguaje intermedio (MSIL) de Microsoft al proceso en ejecución.

HRESULT ApplyChanges (
    [in] ULONG                       cbMetadata,
    [in, size_is(cbMetadata)] BYTE   pbMetadata[],
    [in] ULONG                       cbIL,
    [in, size_is(cbIL)] BYTE         pbIL[]
);

Parámetros

  • cbMetadata
    [in] Tamaño, en bytes, de los metadatos delta.

  • pbMetadata
    [in] Búfer que contiene los metadatos delta. La dirección del búfer se devuelve del método IMetaDataEmit2::SaveDeltaToMemory.

    Las direcciones virtuales relativas (RVA) en los metadatos deberían ser relativas al inicio del código de MSIL.

  • cbIL
    [in] Tamaño, en bytes, del código delta de MSIL.

  • pbIL
    [in] Búfer que contiene el código de MSIL actualizado.

Comentarios

El parámetro pbMetadata tiene un formato de metadatos delta especial (por ser resultado de IMetaDataEmit2::SaveDeltaToMemory). pbMetadata toma los metadatos anteriores como base y describe los cambios individuales que se van a aplicar a esa base.

Por el contrario, el parámetro pbIL[] contiene el nuevo MSIL para el método actualizado y tiene por objeto reemplazar completamente el MSIL anterior de ese método

Cuando el MSIL delta y los metadatos se han creado en la memoria del depurador, el depurador llama a ApplyChanges para enviar los cambios al Common Language Runtime. El motor en tiempo de ejecución actualiza las tablas de metadatos, coloca el nuevo MSIL en el proceso y configura una compilación Just-in-time (JIT) del nuevo MSIL. Una vez que se aplican los cambios, el depurador debería llamar a IMetaDataEmit2::ResetENCLog para preparar la siguiente sesión de edición. A continuación, el depurador debe continuar el proceso.

Siempre que el depurador llama a ApplyChanges en un módulo que tiene los metadatos delta, deberá también llamar a IMetaDataEmit::ApplyEditAndContinue con los mismos metadatos delta de todas las copias de los metadatos de ese módulo, a excepción de la copia utilizada para emitir los cambios. Si una copia de los metadatos no está sincronizada con los metadatos reales, el depurador siempre puede deshacerse de esa copia y obtener una nueva.

Si el método ApplyChanges produce un error, la sesión de depuración pasará a un estado no válido y deberá reiniciarse.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

ICorDebugModule2 (Interfaz)

ICorDebugModule (Interfaz)