Freigeben über


ICorDebugModule2::ApplyChanges-Methode

Wendet die Änderungen in den Metadaten und die Änderungen im CIL-Code (Common Intermediate Language) auf den ausgeführten Prozess an.

Syntax

HRESULT ApplyChanges (
    [in] ULONG                       cbMetadata,
    [in, size_is(cbMetadata)] BYTE   pbMetadata[],
    [in] ULONG                       cbIL,
    [in, size_is(cbIL)] BYTE         pbIL[]
);

Die Parameter

cbMetadata [in] Größe der Delta-Metadaten in Bytes.

pbMetadata [in] Puffer, der die Delta-Metadaten 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 Anfang des CIL-Codes sein.

cbIL [in] Größe des Delta-CIL-Codes in Bytes.

pbIL [in] Puffer, der den aktualisierten CIL-Code enthält.

Bemerkungen

Der pbMetadata Parameter befindet sich in einem speziellen Delta-Metadatenformat (als Ausgabe von IMetaDataEmit2::SaveDeltaToMemory). pbMetadata übernimmt vorherige Metadaten als Basis und beschreibt einzelne Änderungen, die auf diese Basis angewendet werden sollen.

Im Gegensatz dazu enthält der pbIL[Parameter ] die neue CIL für die aktualisierte Methode und soll die vorherige CIL für diese Methode vollständig ersetzen.

Wenn die Delta-CIL und die Metadaten im Speicher des Debuggers erstellt wurden, ruft ApplyChanges der Debugger auf, um die Änderungen an die Common Language Runtime (CLR) zu senden. Die Laufzeit aktualisiert die Metadatentabellen, platziert die neue CIL in den Prozess und richtet eine Just-in-Time-Kompilierung des neuen CIL ein. Wenn die Änderungen angewendet wurden, sollte der Debugger IMetaDataEmit2::ResetENCLog aufrufen, um sich auf die nächste Bearbeitungssitzung vorzubereiten. Der Debugger kann dann den Vorgang fortsetzen.

Wenn der Debugger ein Modul mit Deltametadaten aufruft ApplyChanges , sollte er auch IMetaDataEmit::ApplyEditAndContinue mit den gleichen Delta-Metadaten für alle Kopien der Metadaten dieses Moduls aufrufen, mit Ausnahme der Kopie, die zum Ausgeben der Änderungen verwendet wird. Wenn eine Kopie der Metadaten irgendwie nicht mehr mit den tatsächlichen Metadaten synchronisiert wird, kann der Debugger diese Kopie immer wegwerfen 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 .NET unterstützte Betriebssysteme.

Kopfball: CorDebug.idl, CorDebug.h

Bibliothek: CorGuids.lib

.NET-Versionen: Verfügbar seit .NET Framework 2.0