Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS System Libraries * FILE: lib/rtl/rtlp.h * PURPOSE: Run-Time Libary Internal Header * PROGRAMMER: Alex Ionescu */
/* INCLUDES ******************************************************************/
/* PAGED_CODE equivalent for user-mode RTL */#if DBGextern VOID FASTCALL CHECK_PAGED_CODE_RTL(char *file, int line);#define PAGED_CODE_RTL() CHECK_PAGED_CODE_RTL(__FILE__, __LINE__)#else#define PAGED_CODE_RTL()#endif
#ifdef _PPC_#define SWAPD(x) ((((x)&0xff)<<24)|(((x)&0xff00)<<8)|(((x)>>8)&0xff00)|(((x)>>24)&0xff))#define SWAPW(x) ((((x)&0xff)<<8)|(((x)>>8)&0xff))#define SWAPQ(x) ((SWAPD((x)&0xffffffff) << 32) | (SWAPD((x)>>32)))#else#define SWAPD(x) (x)#define SWAPW(x) (x)#define SWAPQ(x) (x)#endif
#define ROUND_DOWN(n, align) \ (((ULONG_PTR)(n)) & ~((align) - 1l))
#define ROUND_UP(n, align) \ ROUND_DOWN(((ULONG_PTR)(n)) + (align) - 1, (align))
#define RVA(m, b) ((PVOID)((ULONG_PTR)(b) + (ULONG_PTR)(m)))
extern PVOID MmHighestUserAddress;
NTSTATUSNTAPIRtlpSafeCopyMemory( _Out_writes_bytes_all_(Length) VOID UNALIGNED *Destination, _In_reads_bytes_(Length) CONST VOID UNALIGNED *Source, _In_ SIZE_T Length);
#ifndef _BLDR_
VOIDNTAPIRtlpGetStackLimits(PULONG_PTR LowLimit, PULONG_PTR HighLimit);
#ifdef _M_IX86
PEXCEPTION_REGISTRATION_RECORDNTAPIRtlpGetExceptionList(VOID);
VOIDNTAPIRtlpSetExceptionList(PEXCEPTION_REGISTRATION_RECORD NewExceptionList);
#endif /* _M_IX86 */
/* For heap.c */VOIDNTAPIRtlpSetHeapParameters(IN PRTL_HEAP_PARAMETERS Parameters);
/* For vectoreh.c */BOOLEANNTAPIRtlCallVectoredExceptionHandlers( IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT Context);
VOIDNTAPIRtlCallVectoredContinueHandlers( IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT Context);
#ifdef _M_IX86typedef struct _DISPATCHER_CONTEXT{ PEXCEPTION_REGISTRATION_RECORD RegistrationPointer;} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;#endif
#endif /* !_BLDR_ */
/* These provide support for sharing code between User and Kernel RTL */PVOIDNTAPIRtlpAllocateMemory( SIZE_T Bytes, ULONG Tag);
VOIDNTAPIRtlpFreeMemory( PVOID Mem, ULONG Tag);
#ifndef _BLDR_
KPROCESSOR_MODENTAPIRtlpGetMode(VOID);
BOOLEANNTAPIRtlpCaptureStackLimits( IN ULONG_PTR Ebp, IN ULONG_PTR *StackBegin, IN ULONG_PTR *StackEnd);
/* For heap.c and heappage.c */NTSTATUSNTAPIRtlDeleteHeapLock(IN OUT PHEAP_LOCK Lock);
NTSTATUSNTAPIRtlEnterHeapLock(IN OUT PHEAP_LOCK Lock, IN BOOLEAN Exclusive);
BOOLEANNTAPIRtlTryEnterHeapLock(IN OUT PHEAP_LOCK Lock, IN BOOLEAN Exclusive);
NTSTATUSNTAPIRtlInitializeHeapLock(IN OUT PHEAP_LOCK *Lock);
NTSTATUSNTAPIRtlLeaveHeapLock(IN OUT PHEAP_LOCK Lock);
BOOLEANNTAPIRtlpCheckForActiveDebugger(VOID);
BOOLEANNTAPIRtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, IN ULONG_PTR RegistrationFrameEnd, IN OUT PULONG_PTR StackLow, IN OUT PULONG_PTR StackHigh);
#endif /* !_BLDR_ */
#define RtlpAllocateStringMemory RtlpAllocateMemory#define RtlpFreeStringMemory RtlpFreeMemory
#ifndef _BLDR_
ULONGNTAPIRtlGetTickCount(VOID);#define NtGetTickCount RtlGetTickCount
BOOLEANNTAPIRtlpSetInDbgPrint( VOID);
VOIDNTAPIRtlpClearInDbgPrint( VOID);
/* i386/except.S */
#ifdef _M_IX86EXCEPTION_DISPOSITIONNTAPIRtlpExecuteHandlerForException(PEXCEPTION_RECORD ExceptionRecord, PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, PCONTEXT Context, PVOID DispatcherContext, PEXCEPTION_ROUTINE ExceptionHandler);
EXCEPTION_DISPOSITIONNTAPIRtlpExecuteHandlerForUnwind(PEXCEPTION_RECORD ExceptionRecord, PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, PCONTEXT Context, PVOID DispatcherContext, PEXCEPTION_ROUTINE ExceptionHandler);#elseEXCEPTION_DISPOSITIONNTAPIRtlpExecuteHandlerForUnwind( _Inout_ struct _EXCEPTION_RECORD *ExceptionRecord, _In_ PVOID EstablisherFrame, _Inout_ struct _CONTEXT *ContextRecord, _In_ PVOID DispatcherContext);
#endif
VOIDNTAPIRtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ContextRecord, IN PVOID ContextData, IN ULONG Size);
VOIDNTAPIRtlpCaptureContext(OUT PCONTEXT ContextRecord);
//// Debug Service calls//ULONGNTAPIDebugService( IN ULONG Service, IN PVOID Argument1, IN PVOID Argument2, IN PVOID Argument3, IN PVOID Argument4);
VOIDNTAPIDebugService2( IN PVOID Argument1, IN PVOID Argument2, IN ULONG Service);
/* Timer Queue */extern HANDLE TimerThreadHandle;
NTSTATUSRtlpInitializeTimerThread(VOID);
#endif /* !_BLDR_ */
/* bitmap64.c */typedef struct _RTL_BITMAP64{ ULONG64 SizeOfBitMap; PULONG64 Buffer;} RTL_BITMAP64, *PRTL_BITMAP64;
typedef struct _RTL_BITMAP_RUN64{ ULONG64 StartingIndex; ULONG64 NumberOfBits;} RTL_BITMAP_RUN64, *PRTL_BITMAP_RUN64;
/* Tags for the String Allocators */#define TAG_USTR 'RTSU'#define TAG_ASTR 'RTSA'#define TAG_OSTR 'RTSO'
/* nls.c */WCHARNTAPIRtlpUpcaseUnicodeChar(IN WCHAR Source);
WCHARNTAPIRtlpDowncaseUnicodeChar(IN WCHAR Source);
#ifndef _BLDR_
/* ReactOS only */VOIDNTAPILdrpInitializeProcessCompat(PVOID pProcessActctx, PVOID* pOldShimData);
PVOIDNTAPIRtlpDebugBufferCommit(_Inout_ PRTL_DEBUG_INFORMATION Buffer, _In_ SIZE_T Size);
#endif /* !_BLDR_ */
/* EOF */