ICorDebugModule2::ApplyChanges-Methode
Aktualisiert: November 2007
Wendet die Änderungen in den Metadaten und die Änderungen im MSIL-Code (Microsoft Intermediate Language) auf den laufenden Prozess an.
HRESULT ApplyChanges (
[in] ULONG cbMetadata,
[in, size_is(cbMetadata)] BYTE pbMetadata[],
[in] ULONG cbIL,
[in, size_is(cbIL)] BYTE pbIL[]
);
Parameter
cbMetadata
[in] Größe der Deltametadaten in Bytes.pbMetadata
[in] Puffer, der die Deltametadaten enthält. Die Adresse des Puffers wird von der IMetaDataEmit2::SaveDeltaToMemory-Methode zurückgegeben.Die relativen virtuellen Adressen (RVAs) in den Metadaten sollten relativ zum Start des MSIL-Codes sein.
cbIL
[in] Größe des Delta-MSIL-Codes in Bytes.pbIL
[in] Puffer, der den aktualisierten MSIL-Code enthält.
Hinweise
Der pbMetadata-Parameter liegt in einem speziellen Delta-Metadatenformat vor (wie durch IMetaDataEmit2::SaveDeltaToMemory ausgegeben). pbMetadata nimmt vorherige Metadaten als Grundlage und beschreibt einzelne Änderungen, die für diese Grundlage gelten.
Im Gegensatz dazu enthält der pbIL[]-Parameter die neue MSIL für die aktualisierte Methode und soll die vorherige MSIL für diese Methode vollständig ersetzen.
Wenn die Delta-MSIL und die Metadaten im Arbeitsspeicher des Debuggers erstellt wurden, ruft der Debugger ApplyChanges auf, um die Änderungen in die Common Language Runtime (CLR) zu senden. Die Laufzeit aktualisiert ihre Metadatentabellen, fügt die neue MSIL in den Prozess ein und richtet eine JIT-Kompilierung (Just-In-Time) der neuen MSIL ein. Wenn die Änderungen angewendet wurden, sollte der Debugger IMetaDataEmit2::ResetENCLog aufrufen, um sich für die nächste Bearbeitungssitzung vorzubereiten. Der Debugger kann den Prozess dann fortsetzen.
Wenn der Debugger ApplyChanges für ein Modul aufruft, das über Deltametadaten verfügt, sollte er auch immer IMetaDataEmit::ApplyEditAndContinue mit denselben Metadaten für sämtliche seiner Kopien der Metadaten dieses Moduls aufrufen, mit Ausnahme der Kopie, die zur Ausgabe der Änderungen verwendet wurde. Wenn eine Kopie der Metadaten aus irgendeinem Grund nicht mehr mit den tatsächlichen Metadaten synchron ist, kann der Debugger diese Kopie jederzeit verwerfen und eine neue Kopie abrufen.
Wenn die ApplyChanges-Methode fehlschlägt, befindet sich die Debugsitzung in einem ungültigen Zustand und muss neu gestartet werden.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: CorDebug.idl
Bibliothek: CorGuids.lib
.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0