IDebugControl4::GetContextStackTrace メソッド (dbgeng.h)
GetContextStackTrace メソッドは、呼び出し履歴の先頭にあるフレームを返し、任意のレジスタ コンテキストから始まり、各スタック フレームの再構築されたレジスタ コンテキストを返します。
構文
HRESULT GetContextStackTrace(
[in, optional] PVOID StartContext,
[in] ULONG StartContextSize,
[out, optional] PDEBUG_STACK_FRAME Frames,
[in] ULONG FramesSize,
[out, optional] PVOID FrameContexts,
[in] ULONG FrameContextsSize,
[in] ULONG FrameContextsEntrySize,
[out, optional] PULONG FramesFilled
);
パラメーター
[in, optional] StartContext
スタックの先頭のレジスタ コンテキストを指定します。
[in] StartContextSize
StartContext レジスタ コンテキストのサイズをバイト単位で指定します。
[out, optional] Frames
スタック フレームを受け取ります。 この配列が保持する要素の数は FrameSize です。 Frames が NULL の場合、この情報は返されません。
[in] FramesSize
配列 Frames 内の項目数を指定 します。
[out, optional] FrameContexts
スタック内のフレームごとに再構築されたレジスタ コンテキストを受け取ります。 この配列のエントリは 、Frames 配列のエントリに対応します。 スレッド コンテキストの型は、ターゲットの有効なプロセッサの CONTEXT 構造体です。 FrameContexts が NULL の場合、この情報は返されません。
[in] FrameContextsSize
FrameContexts が指すメモリのサイズをバイト単位で指定します。 返されるスタック フレームの数は返されるコンテキストの数と等しく、FrameContextsSize は FrameContextsEntrySize の FrameSize 時間と等しい必要があります。
[in] FrameContextsEntrySize
FrameContexts の各フレーム コンテキストのサイズをバイト単位で指定します。
[out, optional] FramesFilled
FrameContexts の配列 Frames とコンテキストに配置されたフレームの数を受け取ります。 FramesFilled が NULL の場合、この情報は返されません。
戻り値
リターン コード | 説明 |
---|---|
|
メソッドは正常に実行されました。 |
このメソッドは、エラー値を返すこともできます。 詳細については、「 戻り値」を参照してください。
注釈
Frames および FrameContexts に返されるスタック トレースは、OutputContextStackTrace を使用して出力できます。
スタック アンワインドでは、レジスタのサブセットのみを復元するのが一般的です。 たとえば、スタック アンワインドでは、揮発性レジスタはスクラッチ レジスタであり、コードで保持する必要がないため、揮発性レジスタの状態が常に復元されるとは限りません。 アンワインド時に復元されないレジスタは、復元された最後の値として残されるため、アンワインドによって復元されない可能性があるレジスタ状態を使用する場合は注意が必要です。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | dbgeng.h (Dbgeng.h、Ntddk.h を含む) |