вы предоставляете stackTrace
как NULL
, но в соответствии с документацией :
Выделенный вызывающим массив массив, в котором указатели на адреса возврата, полученные из текущей трассировки стека
это означает, что вам нужно выделить массив для параметра BackTrace
.
Например:
#define ARRAY_SIZE 10
PVOID stackTrace[ARRAY_SIZE] = {0};
USHORT capturedFrames = 0;
capturedFrames = RtlCaptureStackBackTrace(0, ARRAY_SIZE, stackTrace, NULL);
Примечание: don ' Чтобы использовать его в производственном коде, лучше, если вы используете динамическое выделение c с использованием ExAllocatePoolWithTag()
)
Также посмотрите на этот Microsoft Пример