Metodo ICorDebugModule2::ApplyChanges
Applica le modifiche nei metadati e le modifiche nel codice CIL (Common Intermediate Language) al processo in esecuzione.
Sintassi
HRESULT ApplyChanges (
[in] ULONG cbMetadata,
[in, size_is(cbMetadata)] BYTE pbMetadata[],
[in] ULONG cbIL,
[in, size_is(cbIL)] BYTE pbIL[]
);
Parametri
cbMetadata
[in] Dimensioni, in byte, dei metadati differenziali.
pbMetadata
[in] Buffer contenente i metadati differenziali. L'indirizzo del buffer viene restituito dal metodo IMetaDataEmit2::SaveDeltaToMemory .
Gli indirizzi virtuali relativi nei metadati devono essere relativi all'inizio del codice CIL.
cbIL
[in] Dimensioni, in byte, del codice CIL differenziale.
pbIL
[in] Buffer contenente il codice CIL aggiornato.
Osservazioni:
Il pbMetadata
parametro è in un formato di metadati delta speciale (come output di IMetaDataEmit2::SaveDeltaToMemory). pbMetadata
accetta i metadati precedenti come base e descrive le singole modifiche da applicare a tale base.
Al contrario, il pbIL[
parametro ] contiene il nuovo CIL per il metodo aggiornato ed è destinato a sostituire completamente l'CIL precedente per tale metodo
Quando l'CIL differenziale e i metadati sono stati creati nella memoria del debugger, il debugger chiama ApplyChanges
per inviare le modifiche in Common Language Runtime (CLR). Il runtime aggiorna le tabelle di metadati, inserisce il nuovo CIL nel processo e configura una compilazione JIT (Just-In-Time) del nuovo CIL. Dopo l'applicazione delle modifiche, il debugger deve chiamare IMetaDataEmit2::ResetENCLog per prepararsi alla sessione di modifica successiva. Il debugger può quindi continuare il processo.
Ogni volta che il debugger chiama ApplyChanges
su un modulo con metadati differenziali, deve anche chiamare IMetaDataEmit::ApplyEditAndContinue con gli stessi metadati differenziali in tutte le copie dei metadati del modulo, ad eccezione della copia usata per generare le modifiche. Se una copia dei metadati diventa in qualche modo non sincronizzata con i metadati effettivi, il debugger può sempre gettare via tale copia e ottenere una nuova copia.
Se il ApplyChanges
metodo ha esito negativo, la sessione di debug è in uno stato non valido e deve essere riavviata.
Requisiti
Piattaforme: vedere Requisiti di sistema.
Intestazione: CorDebug.idl, CorDebug.h
Libreria: CorGuids.lib
Versioni di .NET Framework: disponibili dalla versione 2.0