ICorDebugModule2::ApplyChanges メソッド
メタデータの変更と共通中間言語 (CIL) コードの変更を実行中のプロセスに適用します。
構文
HRESULT ApplyChanges (
[in] ULONG cbMetadata,
[in, size_is(cbMetadata)] BYTE pbMetadata[],
[in] ULONG cbIL,
[in, size_is(cbIL)] BYTE pbIL[]
);
パラメーター
cbMetadata
[in]差分メタデータのサイズ (バイト単位)。
pbMetadata
[in]デルタ メタデータを含むバッファー。 バッファーのアドレスは、IMetaDataEmit2::SaveDeltaToMemory メソッドから返されます。
メタデータ内の相対仮想アドレス (RVA) は、CIL コードの先頭からの相対アドレスである必要があります。
cbIL
[in]デルタ CIL コードのサイズ (バイト単位)。
pbIL
[in]更新された CIL コードを含むバッファー。
解説
pbMetadata
パラメーターは、特別なデルタ メタデータ形式 (IMetaDataEmit2::SaveDeltaToMemory による出力) です。 pbMetadata
では、以前のメタデータをベースとし、そのベースに適用する個々の変更を記述します。
これに対し pbIL[
、] パラメーターには更新されたメソッドの新しい CIL が含まれており、そのメソッドの前の CIL を完全に置き換えることを意図しています
デルタ CIL とメタデータがデバッガーのメモリに作成されると、デバッガーは変更を共通言語ランタイム (CLR) に送信するために呼び出 ApplyChanges
します。 ランタイムはメタデータ テーブルを更新し、新しい CIL をプロセスに配置し、新しい CIL の Just-In-Time (JIT) コンパイルを設定します。 変更が適用されると、デバッガーは IMetaDataEmit2::ResetENCLog を呼び出して、次の編集セッションの準備を行う必要があります。 デバッガーはプロセスを続行できます。
デバッガーは、デルタ メタデータを含むモジュールで ApplyChanges
を呼び出すたびに、変更を出力するために使用されるコピーを除きそのモジュールのメタデータのすべてのコピーで、同じデルタ メタデータを使用して IMetaDataEmit::ApplyEditAndContinue も呼び出す必要があります。 メタデータのコピーが何らかの理由で実際のメタデータと非同期になる場合、デバッガーは常にそのコピーを破棄して新しいコピーを取得できます。
ApplyChanges
メソッドが失敗した場合、デバッグ セッションは無効な状態になり、再起動する必要があります。
必要条件
:「システム要件」を参照してください。
ヘッダー: CorDebug.idl、CorDebug.h
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 2.0 以降で使用可能
.NET