16 #define TAG_ATMT 'TotA' 17 #define TAG_RTHL 'LHtR' 111 #define TAG_USTR 'RTSU' 112 #define TAG_ASTR 'RTSA' 113 #define TAG_OSTR 'RTSO' 249 CHECK_PAGED_CODE_RTL(
char *
file,
int line)
303 (RegistrationFrameEnd <= DpcStack) &&
307 *StackHigh = DpcStack;
317 #if !defined(_ARM_) && !defined(_AMD64_) 331 *StackBegin =
Thread->StackLimit;
335 if ((*StackBegin <= Ebp) && (Ebp <= *StackEnd))
347 if ((*StackEnd) && (*StackBegin < Ebp) && (Ebp <= *StackEnd))
385 #elif defined(_MSC_VER) 388 #elif defined(_M_MIPS) 390 #elif defined(_M_PPC) 392 #elif defined(_M_ARM) 395 #error Unknown architecture 435 #elif defined(_M_PPC) 438 #error Unknown architecture 444 StackEnd - StackBegin,
456 if ((
Stack >= StackEnd) ||
457 (!
i ? (
Stack < StackBegin) : (
Stack <= StackBegin)) ||
469 if (!((
Stack < NewStack) && (NewStack < StackEnd)))
476 if ((StackBegin < Eip) && (Eip < StackEnd))
break;
479 if (!(
Flags) && !(Eip & 0x80000000))
break;
509 #if defined(_M_AMD64) || defined(_M_ARM) 556 return (AtomTable->ExHandleTable !=
NULL);
573 if (AtomTable->ExHandleTable)
577 AtomTable->ExHandleTable);
579 AtomTable->ExHandleTable =
NULL;
652 if (HandleIndex >= 0xC000)
664 Entry->HandleIndex = HandleIndex;
665 Entry->Atom = 0xC000 + HandleIndex;
720 if (OutHeaders !=
NULL)
747 void *
root,
int want_dir );
766 if (!
level--)
goto done;
VOID RtlpDestroyAtomHandleTable(PRTL_ATOM_TABLE AtomTable)
#define KeGetCurrentIrql()
PVOID NTAPI KiPcToFileHeader(IN PVOID Eip, OUT PLDR_DATA_TABLE_ENTRY *LdrEntry, IN BOOLEAN DriversOnly, OUT PBOOLEAN InKernel)
PAGED_LOOKASIDE_LIST RtlpRangeListEntryLookasideList
_Out_ PULONG_PTR HighLimit
SIZE_T MmHeapDeCommitTotalFreeThreshold
VOID NTAPI ExInitializePagedLookasideList(IN PPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
KPROCESSOR_MODE NTAPI RtlpGetMode(VOID)
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOLEAN NTAPI ExDestroyHandle(IN PHANDLE_TABLE HandleTable, IN HANDLE Handle, IN PHANDLE_TABLE_ENTRY HandleTableEntry OPTIONAL)
BOOLEAN RtlpCreateAtomHandle(PRTL_ATOM_TABLE AtomTable, PRTL_ATOM_TABLE_ENTRY Entry)
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
#define _In_reads_bytes_(s)
NTSTATUS find_entry(PVOID BaseAddress, LDR_RESOURCE_INFO *info, ULONG level, void **ret, int want_dir)
#define PsGetCurrentThread()
NTSTATUS NTAPI RtlpImageNtHeaderEx(_In_ ULONG Flags, _In_ PVOID Base, _In_ ULONG64 Size, _Out_ PIMAGE_NT_HEADERS *OutHeaders)
ecx edi ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 mm1 mm5 paddd mm0 paddd mm4 mm0 mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 mm1 paddd mm0 mm0 packssdw mm0 movd eax movw edi esi edx esi ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 mm1 mm5 paddd mm1 paddd mm5 mm1 mm5 packssdw mm1 packssdw mm5 psubd mm0 psubd mm4 psubsw mm0 psubsw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 mm1 paddd mm1 mm1 packssdw mm1 psubd mm0 psubsw mm0 movd eax movw edi emms popl ebx popl esi popl edi mov ebp
NTSTATUS NTAPI RtlEnterHeapLock(IN OUT PHEAP_LOCK Lock, IN BOOLEAN Exclusive)
VOID RtlpUnlockAtomTable(PRTL_ATOM_TABLE AtomTable)
#define UNREFERENCED_PARAMETER(P)
IMAGE_RESOURCE_DIRECTORY * find_entry_by_name(IMAGE_RESOURCE_DIRECTORY *dir, LPCWSTR name, void *root, int want_dir)
#define STATUS_INVALID_PARAMETER
PHANDLE_TABLE_ENTRY NTAPI ExMapHandleToPointer(IN PHANDLE_TABLE HandleTable, IN HANDLE Handle)
VOID NTAPI ExDestroyHandleTable(IN PHANDLE_TABLE HandleTable, IN PVOID DestroyHandleProcedure OPTIONAL)
struct _RTL_RANGE_ENTRY RTL_RANGE_ENTRY
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
#define _Out_writes_bytes_all_(s)
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS NTAPI ExDeleteResourceLite(IN PERESOURCE Resource)
BOOLEAN NTAPI RtlpCloseHandleCallback(IN PHANDLE_TABLE_ENTRY HandleTableEntry, IN HANDLE Handle, IN PVOID HandleTable)
IN PVOID IN PVOID IN USHORT IN USHORT Size
#define POOL_COLD_ALLOCATION
VOID NTAPI RtlReleasePebLock(VOID)
NTSTATUS NTAPI RtlpSafeCopyMemory(_Out_writes_bytes_all_(Length) VOID UNALIGNED *Destination, _In_reads_bytes_(Length) CONST VOID UNALIGNED *Source, _In_ SIZE_T Length)
static XMS_HANDLE HandleTable[XMS_MAX_HANDLES]
VOID RtlpFreeAtomHandle(PRTL_ATOM_TABLE AtomTable, PRTL_ATOM_TABLE_ENTRY Entry)
PVOID NTAPI RtlPcToFileHeader(IN PVOID PcValue, PVOID *BaseOfImage)
#define FLG_ENABLE_EXCEPTION_LOGGING
VOID NTAPI ExUnlockHandleTableEntry(IN PHANDLE_TABLE HandleTable, IN PHANDLE_TABLE_ENTRY HandleTableEntry)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
VOID NTAPI RtlInitializeRangeListPackage(VOID)
NTSTATUS NTAPI LdrShutdownThread(VOID)
VOID NTAPI RtlpClearInDbgPrint(VOID)
VOID RtlInitializeHeapManager(VOID)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
HANDLE NTAPI ExCreateHandle(IN PHANDLE_TABLE HandleTable, IN PHANDLE_TABLE_ENTRY HandleTableEntry)
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI RtlpSetHeapParameters(IN PRTL_HEAP_PARAMETERS Parameters)
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
BOOLEAN NTAPI KeIsAttachedProcess(VOID)
BOOLEAN NTAPI RtlTryEnterHeapLock(IN OUT PHEAP_LOCK Lock, IN BOOLEAN Exclusive)
#define EXCEPTION_EXECUTE_HANDLER
VOID NTAPI RtlpAddHeapToProcessList(struct _HEAP *Heap)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
NTSTATUS NTAPI RtlImageNtHeaderEx(_In_ ULONG Flags, _In_ PVOID Base, _In_ ULONG64 Size, _Out_ PIMAGE_NT_HEADERS *OutHeaders)
VOID NTAPI RtlpRemoveHeapFromProcessList(struct _HEAP *Heap)
BOOLEAN NTAPI RtlpCaptureStackLimits(IN ULONG_PTR Ebp, IN ULONG_PTR *StackBegin, IN ULONG_PTR *StackEnd)
NTSTATUS NTAPI RtlLeaveHeapLock(IN OUT PHEAP_LOCK Lock)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
_Must_inspect_result_ _In_ ULONG Flags
IMAGE_RESOURCE_DIRECTORY * find_entry_by_id(IMAGE_RESOURCE_DIRECTORY *dir, WORD id, void *root, int want_dir)
#define _SEH2_YIELD(STMT_)
IMAGE_RESOURCE_DIRECTORY * find_first_entry(IMAGE_RESOURCE_DIRECTORY *dir, void *root, int want_dir)
SIZE_T MmHeapDeCommitFreeBlockThreshold
_In_ WDFCOLLECTION _In_ ULONG Index
BOOLEAN NTAPI RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, IN ULONG_PTR RegistrationFrameEnd, IN OUT PULONG_PTR StackLow, IN OUT PULONG_PTR StackHigh)
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
BOOLEAN NTAPI RtlCallVectoredExceptionHandlers(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context)
volatile VOID * StackLimit
__in PWDFDEVICE_INIT __in BOOLEAN Exclusive
PHANDLE_TABLE NTAPI ExCreateHandleTable(IN PEPROCESS Process OPTIONAL)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
PPEB NTAPI RtlGetCurrentPeb(VOID)
PVOID MmHighestUserAddress
NTSTATUS RtlpInitAtomTableLock(PRTL_ATOM_TABLE AtomTable)
#define KERNEL_STACK_SIZE
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
NTSTATUS NTAPI RtlInitializeHeapLock(IN OUT PHEAP_LOCK *Lock)
BOOL WINAPI HeapLock(HANDLE hHeap)
#define ExAllocatePoolWithTag(hernya, size, tag)
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT * ContextRecord
SIZE_T MmHeapSegmentReserve
#define STATUS_RESOURCE_DATA_NOT_FOUND
VOID RtlpFreeAtomTableEntry(PRTL_ATOM_TABLE_ENTRY Entry)
BOOLEAN NTAPI RtlpCheckForActiveDebugger(VOID)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
#define RtlImageDirectoryEntryToData
#define KeEnterCriticalRegion()
SIZE_T RtlpAllocDeallocQueryBufferSize
struct _RTL_RANGE_ENTRY * PRTL_RANGE_ENTRY
VOID NTAPI RtlpGetStackLimits(PULONG_PTR StackBase, PULONG_PTR StackLimit)
struct atom_table ** PRTL_ATOM_TABLE
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
VOID RtlpFreeAtomTable(PRTL_ATOM_TABLE AtomTable)
BOOLEAN RtlpCreateAtomHandleTable(PRTL_ATOM_TABLE AtomTable)
VOID RtlpDestroyAtomTableLock(PRTL_ATOM_TABLE AtomTable)
#define KeLeaveCriticalRegion()
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
ULONG NTAPI RtlWalkFrameChain(OUT PVOID *Callers, IN ULONG Count, IN ULONG Flags)
#define STATUS_RESOURCE_NAME_NOT_FOUND
SIZE_T MmHeapSegmentCommit
_Out_ PKAPC_STATE ApcState
VOID NTAPI ExSweepHandleTable(IN PHANDLE_TABLE HandleTable, IN PEX_SWEEP_HANDLE_CALLBACK EnumHandleProcedure, IN PVOID Context)
VOID NTAPI RtlAcquirePebLock(VOID)
PRTL_ATOM_TABLE RtlpAllocAtomTable(ULONG Size)
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
BOOLEAN NTAPI RtlpSetInDbgPrint(VOID)
BOOLEAN RtlpLockAtomTable(PRTL_ATOM_TABLE AtomTable)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
VOID NTAPI RtlCallVectoredContinueHandlers(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context)
VOID NTAPI RtlpFreeMemory(PVOID Mem, ULONG Tag)
PVOID NTAPI RtlpAllocateMemory(ULONG Bytes, ULONG Tag)
VOID NTAPI RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ContextRecord, IN PVOID ContextData, IN ULONG Size)
#define RtlZeroMemory(Destination, Length)
NTSTATUS NTAPI RtlDeleteHeapLock(IN OUT PHEAP_LOCK Lock)
#define RtlCopyMemory(Destination, Source, Length)
PVOID NTAPI KiRosPcToUserFileHeader(IN PVOID Eip, OUT PLDR_DATA_TABLE_ENTRY *LdrEntry)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
#define _SEH2_EXCEPT(...)
#define ExFreePoolWithTag(_P, _T)
#define _SEH2_GetExceptionCode()
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
#define KeGetCurrentThread
PRTL_ATOM_TABLE_ENTRY RtlpGetAtomEntry(PRTL_ATOM_TABLE AtomTable, ULONG Index)
PRTL_ATOM_TABLE_ENTRY RtlpAllocAtomTableEntry(ULONG Size)
#define KeGetTrapFrame(Thread)
base of all file and directory entries
#define STATUS_RESOURCE_TYPE_NOT_FOUND