ICorDebugModule2::ApplyChanges, méthode
Applique les modifications dans les métadonnées et les modifications dans le code MSIL au processus en cours.
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 par la méthode IMetaDataEmit2::SaveDeltaToMemory.Les adresses virtuelles relatives (RVA) dans les métadonnées doivent concerner le démarrage du code MSIL.
cbIL
[in] Taille, en octets, du code MSIL delta.pbIL
[in] Mémoire tampon qui contient le code MSIL mis à jour.
Notes
Le paramètre pbMetadata présente un format de métadonnées delta spécial (tel que sorti par IMetaDataEmit2::SaveDeltaToMemory). pbMetadata utilise les métadonnées précédentes comme base et décrit les différentes modifications à appliquer à cette base.
Par contre, le paramètre pbIL[] contient le nouveau code MSIL pour la méthode mise à jour et est conçu pour remplacer complètement le code MSIL précédent de cette méthode.
Une fois que les métadonnées et le code MSIL delta ont été créés dans la mémoire du débogueur, celui-ci 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 MSIL dans le processus et configure une compilation juste-à-temps (JIT) du nouveau MSIL. Une fois les modifications appliquées, le débogueur doit appeler IMetaDataEmit2::ResetENCLog pour préparer la session d'édition suivante. 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 d'une façon ou d'une autre, une copie des métadonnées n'est plus synchronisée avec les métadonnées réelles, le débogueur peut toujours supprimer 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.
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : CorDebug.idl, CorDebug,h
Bibliothèque : CorGuids.lib
Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0