Compartilhar via


Método ICorDebugModule2::ApplyChanges

Aplica as alterações nos metadados e as alterações no código CIL (common intermediate Language) ao processo em execução.

Sintaxe

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 delta. O endereço do buffer é retornado do método IMetaDataEmit2::SaveDeltaToMemory .

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

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

pbIL [in] Buffer que contém o código CIL atualizado.

Observações

O pbMetadata parâmetro está em um formato especial de metadados delta (como saída por IMetaDataEmit2::SaveDeltaToMemory). pbMetadata usa metadados anteriores como base e descreve alterações individuais a serem aplicadas a essa base.

Por outro lado, o pbIL[parâmetro ] contém o novo CIL para o método atualizado e deve substituir completamente o CIL anterior para esse método

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

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

Se o ApplyChanges método falhar, a sessão de depuração estará em um estado inválido e deverá ser reiniciada.

Requirements

Plataformas: Consulte sistemas operacionais com suporte do .NET.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET: Disponível desde o .NET Framework 2.0