IDkmMonitorStackWalk インターフェイス

定義

特定の DkmRuntimeInstance からのスタックの部分を調べ、このランタイムからフレームを返します。 IDkmMonitorStackWalk は、対象のコンピューターでこのウォークを実行するために使用されます。通常、この手順はシンボルなしで行われます。 正確なモニタスタックウォークは、通常、次のいずれかが必要であることに注意する必要があります。 1. ランタイムモニターは、基になるランタイムの呼び出し規約を完全に理解するために、いくつかのメカニズムを使用します。これにより、実行中のスタック上にある他のランタイムからのコードが不要になります。 たとえば、CLR はスタック範囲を保持するので、マネージコードがネイティブに呼び出すときに、CLR はネイティブを経由せずにマネージコードを見つけることができます。 -または-2。 すべてのコードが従う必要がある、一貫した呼び出し規約。 たとえば、すべてのコードは、x64 および IA-64 バージョンの Windows での一貫した呼び出し規則に従う必要があります。 Microsoft では、IDkmMonitorStackWalk の5つの実装を提供します: 1。 ICorDebug v2 2 の実装。 ICorDebug v4 3 の実装。 X64/ia64 PDATA ウォークの実装。 4. ActiveScript の実装。 5. すべての不明な領域をまとめて、エンジンプロセスでウォークする既定の実装。

このインターフェイスの実装は、コンポーネントの構成で定義されたフィルターを使用して呼び出された場合に制限されることがあります。 BaseDebugMonitorId、EngineId、RuntimeId の各プロパティを使用できます。

public interface class IDkmMonitorStackWalk
public interface class IDkmMonitorStackWalk
__interface IDkmMonitorStackWalk
public interface IDkmMonitorStackWalk
type IDkmMonitorStackWalk = interface
Public Interface IDkmMonitorStackWalk

メソッド

Initialize(DkmMonitorStackWalkContext, DkmFrameRegisters, UInt32)

Initialize プロセスの最初に1回だけ、各ウォーカーで Initialize が呼び出されます。 これにより、それぞれの状態を初期化する機会が各ウォーカーに与えられます。

UpdatePosition(DkmMonitorStackWalkContext, DkmFrameRegisters, UInt32)

別のウォーカーによって1つ以上のフレームがウォークされた後に、スタック合併によって UpdatePosition が呼び出されます。そのため、このウォーカーを更新してから、開始する前のフレームを呼び出す必要があります。 ターゲットプロセス内で独自の内部スタック範囲の状態を維持するランタイムでは、このメソッド内では何も実行されない可能性があります。

WalkNextFrame(DkmMonitorStackWalkContext)

次のスタックフレームのウォークを試みます。 DkmMonitorStackWalkResult 構造体は、このモニターがフレームをたどることができたかどうかを示します。

適用対象