マネージド スタック トレースのテキスト表現および 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 [in]デバッグ対象のクライアント。
wszTextOut [out]スタック トレースのテキスト表現。
puiTextLength [out] wszTextOut内の文字数へのポインター。
pTransitionContexts [out]遷移コンテキストの配列。
puiTransitionContextCount [out]配列内の遷移コンテキストの数へのポインター。
uiSizeOfContext [in]コンテキスト構造のサイズ。
Flags [in]EBP レジスタと enter スタック ポインター (ESP) を各 module!functionname 行の前に表示するには、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) ..."16 進数のオフセットが 0x0 の場合、オフセットは書き込まれません。
現在コンテキスト内にあるスレッドにマネージド コードがない場合、関数は SOS_E_NOMANAGEDCODE を返します。
Flagsパラメーターは、それぞれのmodule!functionname行の前に EBP と ESP を表示する場合は 0 または SOS_STACKTRACE_SHOWADDRESSES のいずれかです。 既定では 0 です。#define SOS_STACKTRACE_SHOWADDRESSES 0x00000001
必要条件
:「システム要件」を参照してください。
ヘッダー: SOS_Stacktrace.h
.NET Framework のバージョン: 2.0 以降で使用可能
関連項目
.NET