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