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[]
);
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 Methode IMetaDataEmit2::SaveDeltaToMemory 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.
Hinweise
Der Parameter pbMetadata
ist in einem speziellen Deltametadatenformat angegeben (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 die nächste Bearbeitungssitzung vorzubereiten. Der Debugger kann dann den Prozess fortsetzen.
Wenn der Debugger ApplyChanges
für ein Modul aufruft, das über Deltametadaten verfügt, sollte er auch IMetaDataEmit::ApplyEditAndContinue mit den gleichen Deltametadaten 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 nicht mehr mit den tatsächlichen Metadaten synchronisiert wird, kann der Debugger diese Kopie jederzeit verwerfen und eine neue Kopie abrufen.
Wenn die Methode ApplyChanges
fehlschlägt, befindet sich die Debugsitzung in einem ungültigen Zustand und muss neu gestartet werden.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: CorDebug.idl, CorDebug.h
Bibliothek: CorGuids.lib
.NET Framework-Versionen: Seit 2.0 verfügbar.