Compartilhar via


Método de ICorDebugModule2::ApplyChanges

Aplica as alterações nos metadados e as alterações no código Microsoft intermediate language (MSIL) para o processo em execução.

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

Parâmetros

  • cbMetadata
    [in] Tamanho em bytes, dos metadados delta.

  • pbMetadata
    [in] Buffer que contém os metadados de delta. O endereço do buffer é retornado de IMetaDataEmit2::SaveDeltaToMemory método.

    Os endereços virtuais relativos (RVAs) nos metadados devem ser relativo ao início do código MSIL.

  • cbIL
    [in] Tamanho em bytes, do código MSIL delta.

  • pbIL
    [in] Buffer que contém código MSIL atualizado.

Comentários

O pbMetadata parâmetro está em um formato de metadados de delta especiais (como saída por IMetaDataEmit2::SaveDeltaToMemory). pbMetadataleva os metadados anteriores como base e descreve as alterações individuais para aplicar essa base de dados.

Em contraste, o pbIL[] parâmetro contém o MSIL novo para o método atualizado e destina-se a substituir completamente o MSIL anterior para o método

Quando o delta MSIL e os metadados foram criados na memória do depurador, o depurador chama ApplyChanges para enviar as alterações no common language runtime (CLR). O tempo de execução atualiza suas tabelas de metadados, coloca o novo MSIL no processo e configura uma just-in-time (compilação JIT) do novo MSIL. Quando as alterações tiverem sido aplicadas, o depurador deve chamar IMetaDataEmit2::ResetENCLog para se preparar para a próxima sessão de edição. O depurador pode então continuar o processo.

Sempre que o depurador chama ApplyChanges em um módulo que tem metadados delta, ele também deve chamar IMetaDataEmit::ApplyEditAndContinue com os mesmos metadados delta em todas as cópias dos metadados do módulo, exceto a cópia usado para emitir as alterações. Se uma cópia dos metadados alguma forma ficar fora de sincronia com os metadados real, o depurador sempre pode jogar fora dessa cópia e obter uma nova cópia.

Se a ApplyChanges método falhar, o debug sessão está em um estado inválido e deve ser reiniciado.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

Interface de ICorDebugModule2

Interface de ICorDebugModule