- Quick implementation of RtlIsThreadWithinLoaderCallout.

svn path=/trunk/; revision=43029
This commit is contained in:
James Tabor 2009-09-11 07:12:30 +00:00
parent f889dc273c
commit 7cdc0d481a
4 changed files with 17 additions and 1 deletions

View file

@ -748,7 +748,7 @@ RtlIsGenericTableEmpty@4
RtlIsGenericTableEmptyAvl@4 RtlIsGenericTableEmptyAvl@4
RtlIsNameLegalDOS8Dot3@12 RtlIsNameLegalDOS8Dot3@12
RtlIsTextUnicode@12 RtlIsTextUnicode@12
;RtlIsThreadWithinLoaderCallout RtlIsThreadWithinLoaderCallout@0
RtlIsValidHandle@8 RtlIsValidHandle@8
RtlIsValidIndexHandle@12 RtlIsValidIndexHandle@12
RtlLargeIntegerAdd@16 RtlLargeIntegerAdd@16

View file

@ -19,6 +19,7 @@ VOID LdrpInitLoader(VOID);
VOID NTAPI RtlpInitDeferedCriticalSection(VOID); VOID NTAPI RtlpInitDeferedCriticalSection(VOID);
NTSTATUS LdrpAttachThread(VOID); NTSTATUS LdrpAttachThread(VOID);
VOID RtlpInitializeVectoredExceptionHandling(VOID); VOID RtlpInitializeVectoredExceptionHandling(VOID);
extern PTEB LdrpTopLevelDllBeingLoadedTeb;
/* GLOBALS *******************************************************************/ /* GLOBALS *******************************************************************/
@ -470,6 +471,8 @@ LdrpInit2(PCONTEXT Context,
ExeModule->SizeOfImage = LdrpGetResidentSize(NTHeaders); ExeModule->SizeOfImage = LdrpGetResidentSize(NTHeaders);
ExeModule->TimeDateStamp = NTHeaders->FileHeader.TimeDateStamp; ExeModule->TimeDateStamp = NTHeaders->FileHeader.TimeDateStamp;
LdrpTopLevelDllBeingLoadedTeb = NtCurrentTeb();
InsertHeadList(&Peb->Ldr->InLoadOrderModuleList, InsertHeadList(&Peb->Ldr->InLoadOrderModuleList,
&ExeModule->InLoadOrderLinks); &ExeModule->InLoadOrderLinks);

View file

@ -14,6 +14,7 @@
#include <debug.h> #include <debug.h>
SIZE_T RtlpAllocDeallocQueryBufferSize = PAGE_SIZE; SIZE_T RtlpAllocDeallocQueryBufferSize = PAGE_SIZE;
PTEB LdrpTopLevelDllBeingLoadedTeb = NULL;
/* FUNCTIONS ***************************************************************/ /* FUNCTIONS ***************************************************************/
@ -203,6 +204,13 @@ RtlpCaptureStackLimits(IN ULONG_PTR Ebp,
return TRUE; return TRUE;
} }
BOOLEAN
NTAPI
RtlIsThreadWithinLoaderCallout(VOID)
{
return LdrpTopLevelDllBeingLoadedTeb == NtCurrentTeb();
}
/* RTL Atom Tables ************************************************************/ /* RTL Atom Tables ************************************************************/
typedef struct _RTL_ATOM_HANDLE typedef struct _RTL_ATOM_HANDLE

View file

@ -2012,6 +2012,11 @@ RtlInitializeContext(
IN PINITIAL_TEB InitialTeb IN PINITIAL_TEB InitialTeb
); );
NTSYSAPI
BOOLEAN
NTAPI
RtlIsThreadWithinLoaderCallout(VOID);
NTSYSAPI NTSYSAPI
PRTL_USER_PROCESS_PARAMETERS PRTL_USER_PROCESS_PARAMETERS
NTAPI NTAPI