RtlCaptureStackBackTrace-Funktion (ntifs.h)
Die RtlCaptureStackBackTrace Routine erfasst eine Stapelablaufverfolgung, indem sie den Stapel durchgehen und die Informationen für jeden Frame aufzeichnen.
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 Zurückablaufverfolgung übersprungen werden sollen.
[in] FramesToCapture
Anzahl der zu erfassenden Frames.
[out] BackTrace
Vom Aufrufer zugewiesenes Array, in dem Zeiger auf die von der aktuellen Stapelablaufverfolgung erfassten Absenderadressen zurückgegeben werden.
[out, optional] BackTraceHash
Optionaler Wert, der zum Organisieren von Hashtabellen verwendet werden kann. Wenn dieser Parameter NULL ist, wird RtlCaptureStackBackTrace keinen Hashwert berechnen und zurückgeben.
Dieser Hashwert wird basierend auf den Werten der im BackTrace Array zurückgegebenen Zeiger berechnet. Zwei identische Stapelüberwachungen generieren identische Hashwerte.
Rückgabewert
Die Anzahl der erfassten Frames.
Bemerkungen
RtlCaptureStackBackTrace erfasst eine Stapelablaufverfolgung für den Aufrufer, indem der Stapel durchlaufen wird (zurück in der Anrufzeit) und Aufzeichnungsinformationen für jeden Frame. Insbesondere gibt RtlCaptureStackBackTrace Zeiger auf die Absenderadressen der einzelnen Aufrufe im Stapel zurück, wobei der erste Zeiger im BackTrace Array auf die Absenderadresse des letzten Aufrufs verweist usw.
Mithilfe von Hashwerten für die Zurückverfolgung können Sie schnell ermitteln, 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 eigene Hashwerte berechnen möchten, legen Sie BackTraceHash- auf NULL fest.
Normalerweise können Sie auf 64-Bit-Computern den Kernelstapel nicht in bestimmten Kontexten erfassen, wenn Seitenfehler nicht zulässig sind. Um das Ausführen 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 temporäre Diagnosezwecke erfolgen, da dadurch die Arbeitsspeicherauslastung des Systems erhöht wird.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows XP |
Zielplattform- | Universal |
Header- | ntifs.h (einschließlich Ntifs.h, FltKernel.h) |
Library | NtosKrnl.lib; OneCoreUAP.lib unter Windows 10 |
DLL- | NtDll.dll (Benutzermodus); NtosKrnl.exe (Kernelmodus) |