2

クラスについては知っていStackTraceますが、私がやっていることは、すべてのシンボル検索のために遅すぎます。

RtlCaptureStackBackTraceで機能について聞きましKernel32.dllたが、正しく機能させることができないようです。私はピンボークに慣れていないので、何もする必要はほとんどなく、私がしていることはネットでよくカバーされていますが、これはそうではありません:(.

これは私が持っている定義です:

[DllImport("kernel32.dll")]
public static extern ushort RtlCaptureStackBackTrace(uint FramesToSkip, uint FramesToCapture, out IntPtr BackTrace, out uint BackTraceHash);

そして、これが私がそれを使用している方法です:

IntPtr trace = IntPtr.Zero;
uint traceHash = 0; 
int framesCaptured = 0;

framesCaptured = RtlCaptureStackBackTrace(0, 4, out trace, out traceHash);

int[] frames = new int[framesCaptured];
Marshal.Copy(trace, frames, 0, framesCaptured);

私が見ているのは、framesCaptured が 1 であることです。これは、少なくとも 4 つのユーザー呼び出しと、テスト アプリのシステム呼び出しである必要があります。

編集:私の質問はRtlCaptureStackBackTrace、正しいスタックアドレス情報を受け取っていないこと、またはそれを正しく使用していて、データを配布する方法がわからないということです。

4

0 に答える 0