729{
737
738
740
741
742 if (TargetFrame !=
NULL)
743 {
744 StackHigh = (
ULONG64)TargetFrame + 1;
745 }
746
747
749
750
755
756
758 {
760 {
762 }
763
764
766 if (FunctionEntry ==
NULL)
767 {
768
769
770 UnwindContext.Rip = *(
DWORD64*)UnwindContext.Rsp;
771 UnwindContext.Rsp +=
sizeof(
DWORD64);
772
774 {
775
777 }
778 continue;
779 }
780
781
783
784
786 ImageBase,
787 UnwindContext.Rip,
788 FunctionEntry,
789 &UnwindContext,
793
794
798 {
800
801
803 {
806 }
807
810 }
811
812
813 if (ExceptionRoutine !=
NULL)
814 {
815
817 {
818
820 }
821
822
824 &UnwindContext,
827
828
834
835
837
838
839 do
840 {
841
846
847
850
851
853 {
855 {
856
858 {
861 }
862
863
865 }
867 {
870 }
871 }
872
874 {
875
876
877
878
879
881
882
883
884
887 UnwindContext.Rip,
889 &UnwindContext,
893
894
897
898
899
900
901
903 continue;
904 }
905
906
908 {
911 }
913 }
914
915
919 {
922
924 {
926 }
927 else
928 {
930 }
931 }
932
934 {
935 break;
936 }
937
939 {
940
942 }
943 }
944
946 {
948 }
949
950
952
953
955
956
959}
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
#define EXCEPTION_NONCONTINUABLE_EXCEPTION
static PRUNTIME_FUNCTION(WINAPI *pRtlLookupFunctionEntry)(ULONG_PTR
_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
EXCEPTION_DISPOSITION NTAPI RtlpExecuteHandlerForUnwind(_Inout_ struct _EXCEPTION_RECORD *ExceptionRecord, _In_ PVOID EstablisherFrame, _Inout_ struct _CONTEXT *ContextRecord, _In_ PVOID DispatcherContext)
NTSYSAPI PRUNTIME_FUNCTION WINAPI RtlLookupFunctionEntry(ULONG_PTR, ULONG_PTR *, UNWIND_HISTORY_TABLE *)
void __cdecl __debugbreak(void)
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)
static __inline BOOL RtlpIsStackPointerValid(_In_ ULONG64 StackPointer, _In_ ULONG64 LowLimit, _In_ ULONG64 HighLimit)
#define EXCEPTION_NONCONTINUABLE
#define EXCEPTION_STACK_INVALID
#define EXCEPTION_TARGET_UNWIND
#define EXCEPTION_COLLIDED_UNWIND