673{
681
682
684
685
686 if (TargetFrame !=
NULL)
687 {
688 StackHigh = (
ULONG64)TargetFrame + 1;
689 }
690
691
693
694
698
699
701 {
702
704 if (FunctionEntry ==
NULL)
705 {
706
707
708 UnwindContext.Rip = *(
DWORD64*)UnwindContext.Rsp;
709 UnwindContext.Rsp +=
sizeof(
DWORD64);
710
712 {
713
715 }
716 continue;
717 }
718
719
721
722
724 ImageBase,
725 UnwindContext.Rip,
726 FunctionEntry,
727 &UnwindContext,
731
732
736 {
738
739
741 {
744 }
745
748 }
749
750
751 if (ExceptionRoutine !=
NULL)
752 {
753
755 {
756
758 }
759
760
762 &UnwindContext,
765
766
772
773
775
776
777 do
778 {
780
785
786
789
790
792 {
794 {
795
797 {
800 }
801
802
804 }
806 {
809 }
810 }
811
813 {
816 }
817
818
820 {
823 }
825 }
826
827
831 {
834
836 {
838 }
839 else
840 {
842 }
843 }
844
846 {
847 break;
848 }
849
851 {
852
854 }
855 }
856
858 {
860 }
861
862
864
865
867
868
871}
UINT32 void void ** ReturnValue
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE ACPI_HANDLE ACPI_HANDLE *OutHandle ACPI_HANDLE *OutHandle void *Context void *Context ACPI_EVENT_HANDLER Handler UINT32 UINT32 ACPI_GPE_HANDLER void *Context UINT32 HandlerType
VOID NTAPI RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ContextRecord, IN PVOID ContextData, IN ULONG Size)
VOID NTAPI RtlpGetStackLimits(OUT PULONG_PTR LowLimit, OUT PULONG_PTR HighLimit)
@ ExceptionContinueSearch
@ ExceptionCollidedUnwind
@ ExceptionNestedException
@ ExceptionContinueExecution
EXCEPTION_ROUTINE * PEXCEPTION_ROUTINE
enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION
void __cdecl __debugbreak(void)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
NTSYSAPI NTSTATUS NTAPI ZwRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context, _In_ BOOLEAN SearchFrames)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
_IRQL_requires_same_ _In_ PVOID EstablisherFrame
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT _In_ PVOID DispatcherContext
#define STATUS_INVALID_DISPOSITION
#define STATUS_UNWIND_CONSOLIDATE
#define STATUS_BAD_FUNCTION_TABLE
#define EXCEPTION_NONCONTINUABLE
PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind(_In_ ULONG HandlerType, _In_ ULONG64 ImageBase, _In_ ULONG64 ControlPc, _In_ PRUNTIME_FUNCTION FunctionEntry, _Inout_ PCONTEXT Context, _Outptr_ PVOID *HandlerData, _Out_ PULONG64 EstablisherFrame, _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers)
VOID RtlRestoreContext(_In_ PCONTEXT ContextRecord, _In_ PEXCEPTION_RECORD ExceptionRecord)
PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry(IN DWORD64 ControlPc, OUT PDWORD64 ImageBase, OUT PUNWIND_HISTORY_TABLE HistoryTable)
Locates the RUNTIME_FUNCTION entry corresponding to a code address. http://msdn.microsoft....
#define EXCEPTION_NONCONTINUABLE_EXCEPTION
#define EXCEPTION_STACK_INVALID
#define EXCEPTION_TARGET_UNWIND
#define EXCEPTION_COLLIDED_UNWIND