RtlCaptureStackBackTrace-Funktion (ntifs.h)
Die RtlCaptureStackBackTrace-Routine erfasst eine Stapelüberwachung, indem der Stapel durchlaufen und die Informationen für jeden Frame aufgezeichnet werden.
Syntax
NTSYSAPI USHORT RtlCaptureStackBackTrace(
[in] ULONG FramesToSkip,
[in] ULONG FramesToCapture,
[out] PVOID *BackTrace,
[out, optional] PULONG BackTraceHash
);
Parameter
[in] FramesToSkip
Anzahl der Frames, die vom Startpunkt (aktueller Aufrufpunkt) der Rückverfolgung übersprungen werden sollen.
[in] FramesToCapture
Anzahl der zu erfassenden Frames.
[out] BackTrace
Vom Aufrufer zugeordnetes Array, in dem Zeiger auf die Rückgabeadressen zurückgegeben werden, die aus der aktuellen Stapelüberwachung erfasst wurden.
[out, optional] BackTraceHash
Optionaler Wert, der zum Organisieren von Hashtabellen verwendet werden kann. Wenn dieser Parameter NULL ist, wird rtlCaptureStackBackTrace nicht berechnet und gibt keinen Hashwert zurück.
Dieser Hashwert wird basierend auf den Werten der im BackTrace-Array zurückgegebenen Zeiger berechnet. Zwei identische Stapelablaufverfolgungen generieren identische Hashwerte.
Rückgabewert
Die Anzahl der erfassten Frames.
Bemerkungen
RtlCaptureStackBackTrace erfasst eine Stapelablaufverfolgung für den Aufrufer, indem der Stapel durchlaufen (in der Anrufzeit zurück) und Informationen für jeden Frame aufgezeichnet werden. Insbesondere gibt RtlCaptureStackBackTrace Zeiger auf die Rückgabeadressen jedes Aufrufs im Stapel zurück, wobei der erste Zeiger im BackTrace-Array auf die Rückgabeadresse des letzten Aufrufs verweist usw.
Back-Trace-Hashwerte können verwendet werden, um schnell zu bestimmen, ob zwei Stapelablaufverfolgungen identisch oder unterschiedlich sind. Sie können den in BackTraceHash zurückgegebenen Hash verwenden, um Stapelablaufverfolgungen zu vergleichen. Wenn Sie keine Hashes verwenden oder Ihre eigenen Hashwerte berechnen möchten, legen Sie BackTraceHash auf NULL fest.
In der Regel können Sie auf 64-Bit-Computern den Kernelstapel in bestimmten Kontexten nicht erfassen, wenn Seitenfehler nicht zulässig sind. Um das Durchlaufen des Kernelstapels auf x64 zu aktivieren, legen Sie den Registrierungswert DisablePagingExecutive Memory Management auf 1 fest. Der Registrierungswert DisablePagingExecutive befindet sich unter dem folgenden Registrierungsschlüssel: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Dies sollte nur für vorübergehende Diagnosezwecke erfolgen, da dadurch die Speicherauslastung des Systems erhöht wird.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP |
Zielplattform | Universell |
Header | ntifs.h (include Ntifs.h, FltKernel.h) |
Bibliothek | NtosKrnl.lib; OneCoreUAP.lib auf Windows 10 |
DLL | NtDll.dll (Benutzermodus); NtosKrnl.exe (Kernelmodus) |