ICorDebugModule2::ApplyChanges, méthode
Applique les modifications dans les métadonnées et les modifications du code CIL (Common Intermediate Language) au processus en cours d’exécution.
Syntaxe
HRESULT ApplyChanges (
[in] ULONG cbMetadata,
[in, size_is(cbMetadata)] BYTE pbMetadata[],
[in] ULONG cbIL,
[in, size_is(cbIL)] BYTE pbIL[]
);
Paramètres
cbMetadata
[in] Taille, en octets, des métadonnées delta.
pbMetadata
[in] Mémoire tampon qui contient les métadonnées delta. L’adresse de la mémoire tampon est retournée à partir de la méthode IMetaDataEmit2::SaveDeltaToMemory.
Les adresses virtuelles relatives dans les métadonnées doivent être relatives au début du code CIL.
cbIL
[in] Taille, en octets, du code CIL delta.
pbIL
[in] Mémoire tampon qui contient le code CIL mis à jour.
Notes
Le paramètre pbMetadata
est dans un format de métadonnées delta spécial (selon la sortie de IMetaDataEmit2::SaveDeltaToMemory). pbMetadata
prend les métadonnées précédentes comme base et décrit les modifications individuelles à appliquer à cette base.
En revanche, le pbIL[
paramètre ] contient le nouveau CIL pour la méthode mise à jour et est destiné à remplacer complètement le CIL précédent pour cette méthode
Lorsque la bibliothèque CIL delta et les métadonnées ont été créées dans la mémoire du débogueur, le débogueur appelle ApplyChanges
pour envoyer les modifications dans le Common Language Runtime (CLR). Le runtime met à jour ses tables de métadonnées, place le nouveau CIL dans le processus et configure une compilation juste-à-temps (JIT) du nouveau CIL. Une fois les modifications appliquées, le débogueur doit appeler IMetaDataEmit2::ResetENCLog pour se préparer à la prochaine session de modification. Le débogueur peut ensuite continuer le processus.
Chaque fois que le débogueur appelle ApplyChanges
sur un module qui a des métadonnées delta, il doit également appeler IMetaDataEmit::ApplyEditAndContinue avec les mêmes métadonnées delta sur toutes ses copies des métadonnées de ce module, à l’exception de la copie utilisée pour émettre les modifications. Si une copie des métadonnées n’est plus synchronisée avec les métadonnées réelles, le débogueur peut toujours jeter cette copie et en obtenir une nouvelle.
Si la méthode ApplyChanges
échoue, la session de débogage est dans un état non valide et doit être redémarrée.
Spécifications
Plateformes : Consultez Configuration requise.
En-tête : CorDebug.idl, CorDebug.h
Bibliothèque : CorGuids.lib
Versions de .NET Framework : Disponible depuis la version 2.0