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.

Remarques

Le pbMetadata paramètre se trouve dans un format de métadonnées delta spécial (comme sortie par IMetaDataEmit2 ::SaveDeltaToMemory). pbMetadata prend les métadonnées précédentes en tant que 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. Lorsque les modifications ont été appliquées, le débogueur doit appeler IMetaDataEmit2 ::ResetENCLog pour préparer la prochaine session d’édition. Le débogueur peut ensuite poursuivre le processus.

Chaque fois que le débogueur appelle ApplyChanges 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 devient en quelque sorte hors synchronisation avec les métadonnées réelles, le débogueur peut toujours lever cette copie et obtenir une nouvelle copie.

Si la ApplyChanges méthode échoue, la session de débogage est dans un état non valide et doit être redémarrée.

Spécifications

Plates-formes: Consultez les systèmes d’exploitation pris en charge par .NET.

En-tête: CorDebug.idl, CorDebug.h

Bibliothèque: CorGuids.lib

Versions de .NET : Disponible depuis .NET Framework 2.0