Partager via


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