_EFN_StackTrace 関数
マネージ スタック トレースのテキスト表現および CONTEXT レコードの配列 (アンマネージ コードとマネージ コードの間の各移行につき 1 つ) を提供します。
HRESULT CALLBACK _EFN_StackTrace(
[in] PDEBUG_CLIENT Client,
[out] WCHAR wszTextOut[],
[out] size_t *puiTextLength,
[out] LPVOID pTransitionContexts,
[out] size_t *puiTransitionContextCount,
[in] size_t uiSizeOfContext,
[in] DWORD Flags
);
パラメーター
Client
[入力] デバッグする対象のクライアント。wszTextOut
[出力] スタック トレースのテキスト表現。puiTextLength
[出力] wszTextOut に配置された文字の数へのポインター。pTransitionContexts
[出力] 移行コンテキストの配列。puiTransitionContextCount
[出力] 配列内の移行コンテキストの数へのポインター。uiSizeOfContext
[入力] コンテキスト構造体のサイズ。Flags
[入力] 各 module!functionname 行の前に EBP レジスタおよび ESP (Enter Stack Pointer) を表示する場合は、0 または SOS_STACKTRACE_SHOWADDRESSES (0x01) に設定します。
解説
_EFN_StackTrace 構造体は WinDbg プログラム インターフェイスから呼び出すことができます。 パラメーターの使い方は次のとおりです。
wszTextOut が null、puiTextLength が null 以外の場合、この関数は puiTextLength に文字列長を返します。
wszTextOut が null 以外の場合、この関数は最大で puiTextLength で示された位置まで、wszTextOut にテキストを格納します。 バッファーに十分な領域があった場合は正常に戻り、バッファーのサイズが十分でなかった場合は E_OUTOFMEMORY を返します
この関数の移行部分は、pTransitionContexts と puiTransitionContextCount が両方とも null の場合には無視されます。 この場合、呼び出し元には関数名のみがテキスト出力されます。
pTransitionContexts が null、puiTransitionContextCount が null 以外の場合、この関数は必要なコンテキスト エントリ数を puiTransitionContextCount に返します。
pTransitionContexts が null 以外の場合、これは、長さ puiTransitionContextCount の構造体の配列として扱われます。 構造体のサイズは uiSizeOfContext で指定し、アーキテクチャに応じて SimpleContext または CONTEXT のサイズである必要があります。
wszTextOut は次の書式で書き込まれます。
"<ModuleName>!<Function Name>[+<offset in hex>] ... (TRANSITION) ..."
オフセットが 0x0 (16 進) の場合、オフセットは書き込まれません。
現在のコンテキスト内のスレッドにマネージ コードがない場合は、SOS_E_NOMANAGEDCODE が返されます。
Flags パラメーターは、各 module!functionname 行の前に EBP および ESP を表示するかどうかに応じて、0 または SOS_STACKTRACE_SHOWADDRESSES です。 既定値は 0 です。
#define SOS_STACKTRACE_SHOWADDRESSES 0x00000001
必要条件
プラットフォーム : 「.NET Framework システム要件」を参照
ヘッダー : SOS_Stacktrace.h
.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0