ICorDebugModule2::ApplyChanges – metoda
Použije změny v metadatech a změny v kódu CIL (Common Intermediate Language) na spuštěný proces.
Syntaxe
HRESULT ApplyChanges (
[in] ULONG cbMetadata,
[in, size_is(cbMetadata)] BYTE pbMetadata[],
[in] ULONG cbIL,
[in, size_is(cbIL)] BYTE pbIL[]
);
Parametry
cbMetadata
[v] Velikost rozdílových metadat v bajtech
pbMetadata
[v] Vyrovnávací paměť, která obsahuje rozdílová metadata. Adresa vyrovnávací paměti je vrácena z IMetaDataEmit2::SaveDeltaToMemory metoda.
Relativní virtuální adresy (RVA) v metadatech by měly být relativní vzhledem ke začátku kódu CIL.
cbIL
[v] Velikost kódu delta CIL v bajtech
pbIL
[v] Vyrovnávací paměť, která obsahuje aktualizovaný kód CIL.
Poznámky
Parametr pbMetadata
je ve speciálním formátu delta metadat (výstupem IMetaDataEmit2 ::SaveDeltaToMemory). pbMetadata
přebírá předchozí metadata jako základ a popisuje jednotlivé změny, které se mají na tuto základnu použít.
Naproti tomu pbIL[
parametr ] obsahuje nový CIL pro aktualizovanou metodu a je určen k úplnému nahrazení předchozího souboru CIL pro tuto metodu.
Když se v paměti ladicího programu vytvoří rozdílový kód CIL a metadata, volání ApplyChanges
ladicího programu pro odeslání změn do modulu CLR (Common Language Runtime). Modul runtime aktualizuje tabulky metadat, umístí nový CIL do procesu a nastaví kompilaci nového souboru CIL za běhu (JIT). Po použití změn by ladicí program měl volat IMetaDataEmit2::ResetENCLog , aby se připravil na další relaci úprav. Ladicí program pak může pokračovat v procesu.
Kdykoli ladicí program volá ApplyChanges
modul, který má rozdílová metadata, měl by také volat IMetaDataEmit::ApplyEditAndContinue se stejnými rozdílovými metadaty na všech jeho kopiích metadat tohoto modulu s výjimkou kopie použité k generování změn. Pokud se kopie metadat nějak přestane synchronizovat se skutečnými metadaty, ladicí program může tuto kopii kdykoli vyhodit a získat novou kopii.
ApplyChanges
Pokud metoda selže, relace ladění je v neplatném stavu a musí být restartována.
Požadavky
Platformy: Viz požadavky na systém.
Hlavička: CorDebug.idl, CorDebug.h
Knihovna: CorGuids.lib
Verze rozhraní .NET Framework: Dostupné od verze 2.0