X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=ntoskrnl%2Frtl%2Flibsupp.c;h=aba04f1042ec789b5772318d3fefe4097fab3812;hp=4a6c8bc55ea0dab24d2b24107b3582b1efd70b57;hb=82822656c3b240860ac8d5db139c56285634e8a5;hpb=69b36d050f05f34ef3a175dadcd72702f5f97298 diff --git a/ntoskrnl/rtl/libsupp.c b/ntoskrnl/rtl/libsupp.c index 4a6c8bc55ea..aba04f1042e 100644 --- a/ntoskrnl/rtl/libsupp.c +++ b/ntoskrnl/rtl/libsupp.c @@ -28,6 +28,30 @@ SIZE_T RtlpAllocDeallocQueryBufferSize = 128; /* FUNCTIONS *****************************************************************/ +PVOID +NTAPI +RtlPcToFileHeader( + IN PVOID PcValue, + OUT PVOID *BaseOfImage) +{ + PLDR_DATA_TABLE_ENTRY LdrEntry; + BOOLEAN InSystem; + + /* Get the base for this file */ + if ((ULONG_PTR)PcValue > (ULONG_PTR)MmHighestUserAddress) + { + /* We are in kernel */ + *BaseOfImage = KiPcToFileHeader(PcValue, &LdrEntry, FALSE, &InSystem); + } + else + { + /* We are in user land */ + *BaseOfImage = KiRosPcToUserFileHeader(PcValue, &LdrEntry); + } + + return *BaseOfImage; +} + VOID NTAPI RtlInitializeRangeListPackage(VOID) @@ -225,7 +249,7 @@ RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, return FALSE; } -#ifndef _ARM_ +#if !defined(_ARM_) && !defined(_AMD64_) BOOLEAN NTAPI @@ -417,6 +441,19 @@ RtlWalkFrameChain(OUT PVOID *Callers, #endif +#ifdef _AMD64_ +VOID +NTAPI +RtlpGetStackLimits( + OUT PULONG_PTR LowLimit, + OUT PULONG_PTR HighLimit) +{ + PKTHREAD CurrentThread = KeGetCurrentThread(); + *HighLimit = (ULONG_PTR)CurrentThread->InitialStack; + *LowLimit = (ULONG_PTR)CurrentThread->StackLimit; +} +#endif + /* RTL Atom Tables ************************************************************/ NTSTATUS