ICorDebugModule2::ApplyChanges — Metoda
Stosuje zmiany w metadanych i zmiany w kodzie wspólnego języka pośredniego (CIL) do uruchomionego procesu.
Składnia
HRESULT ApplyChanges (
[in] ULONG cbMetadata,
[in, size_is(cbMetadata)] BYTE pbMetadata[],
[in] ULONG cbIL,
[in, size_is(cbIL)] BYTE pbIL[]
);
Parametry
cbMetadata
[in] Rozmiar w bajtach metadanych różnicowych.
pbMetadata
[in] Bufor zawierający metadane różnicowe. Adres buforu jest zwracany z metody IMetaDataEmit2::SaveDeltaToMemory .
Względne adresy wirtualne (RVA) w metadanych powinny być względem początku kodu CIL.
cbIL
[in] Rozmiar w bajtach kodu CIL różnicowego.
pbIL
[in] Bufor zawierający zaktualizowany kod CIL.
Uwagi
Parametr pbMetadata
ma specjalny format metadanych różnicowych (jako dane wyjściowe IMetaDataEmit2 ::SaveDeltaToMemory). pbMetadata
przyjmuje poprzednie metadane jako bazę i opisuje poszczególne zmiany, które mają być stosowane do tej bazy.
pbIL[
Natomiast parametr ] zawiera nowy element CIL dla zaktualizowanej metody i ma całkowicie zastąpić poprzednią metodę CIL dla tej metody
Po utworzeniu funkcji CIL różnicowej i metadanych w pamięci debugera debuger wywołania ApplyChanges
debugera w celu wysłania zmian do środowiska uruchomieniowego języka wspólnego (CLR). Środowisko uruchomieniowe aktualizuje tabele metadanych, umieszcza nowy element CIL w procesie i konfiguruje kompilację just in time (JIT) nowego CIL. Po zastosowaniu zmian debuger powinien wywołać metodę IMetaDataEmit2::ResetENCLog , aby przygotować się do następnej sesji edycji. Debuger może następnie kontynuować proces.
Za każdym razem, gdy debuger wywołuje ApplyChanges
moduł zawierający metadane różnicowe, powinien również wywołać metodę IMetaDataEmit::ApplyEditAndContinue z tymi samymi metadanymi różnicowymi na wszystkich jego kopiach metadanych tego modułu z wyjątkiem kopii używanej do emitowania zmian. Jeśli kopia metadanych stanie się w jakiś sposób nieaktualna z rzeczywistymi metadanymi, debuger zawsze może wyrzucić kopię i uzyskać nową kopię.
ApplyChanges
Jeśli metoda nie powiedzie się, sesja debugowania jest w nieprawidłowym stanie i musi zostać ponownie uruchomiona.
Wymagania
Platformy: zobacz Wymagania systemowe.
Nagłówek: CorDebug.idl, CorDebug.h
Biblioteka: CorGuids.lib
Wersje programu .NET Framework: dostępne od wersji 2.0