1757 ULONG ComSectionSize;
1786 ULONG DebugProcessHeapOnly = 0;
1789 ULONG ExecuteOptions = 0;
1808 ImagePathName.
Buffer = ImagePath;
1823 IsDotNetImage =
TRUE;
1837 OldShimData =
Peb->pShimData;
1848 if (ProcessParameters)
1879 HeapParameters.
Length =
sizeof(HeapParameters);
1882 #define VALID_CONFIG_FIELD(Name) (ConfigSize >= (FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Name) + sizeof(LoadConfig->Name))) 1887 DPRINT1(
"WARN: Accepting different LOAD_CONFIG size!\n");
1889 DPRINT1(
"Applying LOAD_CONFIG\n");
1915 #undef VALID_CONFIG_FIELD 1933 DPRINT1(
"LDR: PID: 0x%p started - '%wZ'\n",
1990 DPRINT1(
"We don't support user stack trace databases yet\n");
2021 DPRINT1(
"Failed to create process heap\n");
2031 HeapParameters.
Length =
sizeof(HeapParameters);
2035 DPRINT1(
"Failed to create loader private heap\n");
2044 L"DebugProcessHeapOnly",
2046 &DebugProcessHeapOnly,
2103 DPRINT1(
"LDR: %s - failed call to ZwQuerySymbolicLinkObject with status %x\n",
"",
Status);
2119 if (ProcessParameters)
2130 DPRINT1(
"No valid DllPath was given!\n");
2149 DPRINT1(
"LDR: LdrpInitializeProcess - unable to allocate current working directory buffer\n");
2162 DPRINT(
"Using dynamically allocd curdir\n");
2167 DPRINT(
"Using local system root\n");
2194 if (!ImageFileName.
Buffer[0])
2202 Current = ImageFileName.
Buffer;
2205 if (*Current++ ==
'\\')
2208 NtDllName = Current;
2255 DPRINT1(
"LDR: NEW PROCESS\n");
2297 DPRINT1(
"LDR: AVrfInitializeVerifier failed (ntstatus 0x%x)\n",
Status);
2306 DPRINT1(
"We don't support .NET applications yet\n");
2312 PVOID Kernel32BaseAddress;
2313 PVOID FunctionAddress;
2325 &BaseProcessInitPostImportName,
2335 Kernel32ProcessInitPostImportFunction = FunctionAddress;
2338 &BaseQueryModuleDataName,
2348 Kernel32BaseQueryModuleData = FunctionAddress;
2357 DPRINT1(
"LDR: Performing EXE relocation\n");
2373 DPRINT1(
"LdrRelocateImageWithBias() failed\n");
2380 DPRINT1(
"WARNING: Relocated EXE Context");
2392 NextEntry = ListHead->
Flink;
2393 while (ListHead != NextEntry)
2397 NextEntry = NextEntry->
Flink;
2404 if (!
NT_SUCCESS(ImportStatus))
return ImportStatus;
2410 DPRINT1(
"LDR: LdrpProcessInitialization failed to initialize TLS slots; status %x\n",
2444 sizeof(ExecuteOptions));
2447 DPRINT1(
"LDR: Could not set process execute flags 0x%x; status %x\n",
2455 if (((
Peb->OSCSDVersion >> 8) & 0xFF) != 0)
2457 WCHAR szCSDVersion[128];
2462 ((
Peb->OSCSDVersion >> 8) & 0xFF));
2496 DPRINT(
"Querying app compat hacks is missing!\n");
2508 DPRINT1(
"LDR: LdrpProcessInitialization failed running initialization routines; status %x\n",
2529 if (OptionsKey)
NtClose(OptionsKey);
PRTL_BITMAP TlsExpansionBitmap
#define LDRP_ENTRY_PROCESSED
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
BOOLEAN LdrpDllValidation
NTSTATUS NTAPI LdrQueryImageFileKeyOption(IN HANDLE KeyHandle, IN PCWSTR ValueName, IN ULONG Type, OUT PVOID Buffer, IN ULONG BufferSize, OUT PULONG ReturnedLength OPTIONAL)
NTSYSAPI VOID NTAPI RtlResetRtlTranslations(_In_ PNLSTABLEINFO NlsTable)
#define HEAP_CREATE_ALIGN_16
NTSTATUS NTAPI LdrpWalkImportDescriptor(IN LPWSTR DllPath OPTIONAL, IN PLDR_DATA_TABLE_ENTRY LdrEntry)
UNICODE_STRING Kernel32String
_In_ ULONG _In_ ULONG _In_ ULONG Length
LIST_ENTRY InInitializationOrderModuleList
UNICODE_STRING LdrpKnownDllPath
LARGE_INTEGER RtlpTimeout
UNICODE_STRING NtSystemRoot
RTL_BITMAP TlsExpansionBitMap
#define OBJ_CASE_INSENSITIVE
ULONG ImageProcessAffinityMask
WCHAR CurrentDirectory[1024]
LIST_ENTRY InLoadOrderModuleList
#define STATUS_INVALID_PARAMETER
#define TLS_EXPANSION_SLOTS
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR
PLDR_DATA_TABLE_ENTRY LdrpNtDllDataTableEntry
NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP, PULONG, ULONG)
LIST_ENTRY InMemoryOrderModuleList
NTSYSAPI VOID NTAPI RtlSetBit(_In_ PRTL_BITMAP BitMapHeader, _In_range_(<, BitMapHeader->SizeOfBitMap) ULONG BitNumber)
VOID NTAPI SE_InstallAfterInit(PUNICODE_STRING ProcessImage, PVOID pShimData)
NTSYSAPI NTSTATUS NTAPI ZwOpenDirectoryObject(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
void actctx_init(PVOID *pOldShimData)
PRTL_USER_PROCESS_PARAMETERS ProcessParameters
HANDLE LdrpKnownDllObjectDirectory
ULONG DeCommitFreeBlockThreshold
BOOLEAN RtlpPageHeapEnabled
#define RtlMoveMemory(Destination, Source, Length)
#define NX_SUPPORT_POLICY_ALWAYSON
NTSYSAPI PRTL_USER_PROCESS_PARAMETERS NTAPI RtlNormalizeProcessParams(_In_ PRTL_USER_PROCESS_PARAMETERS ProcessParameters)
VOID NTAPI LdrpInitializeDotLocalSupport(PRTL_USER_PROCESS_PARAMETERS ProcessParameters)
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define NX_SUPPORT_POLICY_ALWAYSOFF
VOID NTAPI DbgBreakPoint(VOID)
NTSTATUS NTAPI LdrpInitializeTls(VOID)
BOOLEAN LdrpLoaderLockInit
VOID NTAPI RtlpInitDeferedCriticalSection(VOID)
LIST_ENTRY LdrpHashTable[LDR_HASH_TABLE_ENTRIES]
NTSTATUS NTAPI LdrGetProcedureAddress(IN PVOID BaseAddress, IN PANSI_STRING Name, IN ULONG Ordinal, OUT PVOID *ProcedureAddress)
WCHAR LdrpKnownDllPathBuffer[128]
#define IMAGE_SUBSYSTEM_WINDOWS_CUI
PVOID NTAPI LdrpFetchAddressOfEntryPoint(PVOID ImageBase)
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
#define IMAGE_SUBSYSTEM_NATIVE
#define FLG_APPLICATION_VERIFIER
PVOID NTAPI RtlDecodeSystemPointer(IN PVOID Pointer)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
ULONG TlsExpansionBitmapBits[32]
#define NtCurrentProcess()
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
#define MEM_EXECUTE_OPTION_ENABLE
#define DIRECTORY_TRAVERSE
VOID NTAPI LdrpInitFailure(NTSTATUS Status)
RTL_CRITICAL_SECTION LdrpLoaderLock
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
struct _LIST_ENTRY * Flink
NTSYSAPI VOID NTAPI RtlInitNlsTables(_In_ PUSHORT AnsiTableBase, _In_ PUSHORT OemTableBase, _In_ PUSHORT CaseTableBase, _Out_ PNLSTABLEINFO NlsTable)
UNICODE_STRING NtDllString
ULONG VirtualMemoryThreshold
BOOLEAN RtlpTimeoutDisable
#define STATUS_INVALID_IMAGE_FORMAT
VOID NTAPI LdrpLoadShimEngine(IN PWSTR ImageName, IN PUNICODE_STRING ProcessImage, IN PVOID pShimData)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define NT_SUCCESS(StatCode)
PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
static VOID LoadConfig(HWND hwndDlg, PPOWER_SCHEMES_PAGE_DATA pPageData, PPOWER_SCHEME pScheme)
LARGE_INTEGER CriticalSectionTimeout
PLDR_DATA_TABLE_ENTRY LdrpImageEntry
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
BOOLEAN LdrpLdrDatabaseIsSetup
PVOID g_pfnSE_InstallAfterInit
UNICODE_STRING ImagePathName
ULONG MaximumAllocationSize
#define RtlImageDirectoryEntryToData
NTSTATUS NTAPI DECLSPEC_HOTPATCH LdrLoadDll(IN PWSTR SearchPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *BaseAddress)
NTSYSAPI PVOID NTAPI RtlCreateHeap(IN ULONG Flags, IN PVOID HeapBase OPTIONAL, IN ULONG ReserveSize OPTIONAL, IN ULONG CommitSize OPTIONAL, IN PVOID Lock OPTIONAL, IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL)
#define MEM_EXECUTE_OPTION_DISABLE
UNICODE_STRING CommandLine
PVOID UnicodeCaseTableData
VOID NTAPI LdrpValidateImageForMp(IN PLDR_DATA_TABLE_ENTRY LdrDataTableEntry)
#define VALID_CONFIG_FIELD(Name)
#define LDR_HASH_TABLE_ENTRIES
VOID NTAPI LdrpInsertMemoryTableEntry(IN PLDR_DATA_TABLE_ENTRY LdrEntry)
ULONG LdrpNumberOfProcessors
NTSTATUS NTAPI AVrfInitializeVerifier(VOID)
VOID NTAPI RtlInitializeHeapManager(VOID)
LIST_ENTRY LdrpDllNotificationList
VOID NTAPI RtlpInitializeVectoredExceptionHandling(VOID)
#define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION
NTSYSAPI ULONG NTAPI LdrRelocateImageWithBias(_In_ PVOID NewAddress, _In_ LONGLONG AdditionalBias, _In_ PCCH LoaderName, _In_ ULONG Success, _In_ ULONG Conflict, _In_ ULONG Invalid)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
NTSTATUS NTAPI NtSetInformationProcess(IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, IN PVOID ProcessInformation, IN ULONG ProcessInformationLength)
NTSTATUS NTAPI LdrpSetProtection(PVOID ViewBase, BOOLEAN Restore)
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
#define FLS_MAXIMUM_AVAILABLE
UNICODE_STRING LdrpDefaultPath
RTL_CRITICAL_SECTION FastPebLock
#define FLG_SHOW_LDR_SNAPS
PLDR_DATA_TABLE_ENTRY NTAPI LdrpAllocateDataTableEntry(IN PVOID BaseAddress)
#define InitializeListHead(ListHead)
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
UNICODE_STRING FullDllName
UNICODE_STRING BaseDllName
NTSTATUS NTAPI LdrpInitializeExecutionOptions(PUNICODE_STRING ImagePathName, PPEB Peb, PHANDLE OptionsKey)
PACTIVATION_CONTEXT EntryPointActivationContext
UNICODE_STRING * PUNICODE_STRING
#define DPH_FLAG_DLL_NOTIFY
NTSTATUS NTAPI LdrpRunInitializeRoutines(IN PCONTEXT Context OPTIONAL)
#define MEM_EXECUTE_OPTION_PERMANENT
NTSYSAPI NTSTATUS NTAPI RtlSetCurrentDirectory_U(_In_ PUNICODE_STRING name)
NTSTATUS NTAPI RtlAllocateActivationContextStack(IN PACTIVATION_CONTEXT_STACK *Stack)
#define SYMBOLIC_LINK_QUERY
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
struct _PEB_LDR_DATA PEB_LDR_DATA
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSTATUS NTAPI NtOpenSymbolicLinkObject(OUT PHANDLE LinkHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
#define RtlCopyMemory(Destination, Source, Length)
UNICODE_STRING CSDVersion
#define FLG_USER_STACK_TRACE_DB
#define RTL_USER_PROCESS_PARAMETERS_NORMALIZED
PVOID ActivationContextStackPointer
#define RTL_USER_PROCESS_PARAMETERS_LOCAL_DLL_PATH
#define STATUS_CONFLICTING_ADDRESSES
ULONG DeCommitTotalFreeThreshold
VOID NTAPI RtlSetUnhandledExceptionFilter(IN PRTLP_UNHANDLED_EXCEPTION_FILTER TopLevelExceptionFilter)
LIST_ENTRY InInitializationOrderLinks
#define Int32x32To64(a, b)
#define TLS_MINIMUM_AVAILABLE
#define IMAGE_SUBSYSTEM_WINDOWS_GUI
#define RTL_CONSTANT_STRING(s)