Sdílet prostřednictvím


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