LdrpLoadUserModuleSymbols(PLDR_DATA_TABLE_ENTRY LdrModule)
{
NtSystemDebugControl(
- DebugDbgLoadSymbols,
+ SysDbgQueryVersion,
(PVOID)LdrModule,
0,
NULL,
Entry = ModuleListHead->Flink;
while (Entry != ModuleListHead)
{
- Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
if (Module->LoadCount == 0xFFFF &&
Module->TlsIndex != 0xFFFF)
{
RtlEnterCriticalSection (NtCurrentPeb()->LoaderLock);
InsertTailList(&NtCurrentPeb()->Ldr->InLoadOrderModuleList,
- &Module->InLoadOrderModuleList);
+ &Module->InLoadOrderLinks);
RtlLeaveCriticalSection(NtCurrentPeb()->LoaderLock);
return(Module);
*/
NTSTATUS NTAPI
LdrLoadDll (IN PWSTR SearchPath OPTIONAL,
- IN ULONG LoadFlags,
+ IN PULONG LoadFlags,
IN PUNICODE_STRING Name,
OUT PVOID *BaseAddress OPTIONAL)
{
*BaseAddress = NULL;
- Status = LdrpLoadModule(SearchPath, LoadFlags, Name, &Module, BaseAddress);
- if (NT_SUCCESS(Status) && 0 == (LoadFlags & LOAD_LIBRARY_AS_DATAFILE))
+ Status = LdrpLoadModule(SearchPath, *LoadFlags, Name, &Module, BaseAddress);
+ if (NT_SUCCESS(Status) && 0 == (*LoadFlags & LOAD_LIBRARY_AS_DATAFILE))
{
RtlEnterCriticalSection(NtCurrentPeb()->LoaderLock);
Status = LdrpAttachProcess();
while (Entry != ModuleListHead)
{
- ModulePtr = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ ModulePtr = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
DPRINT("Scanning %wZ at %p\n", &ModulePtr->BaseDllName, ModulePtr->DllBase);
}
while (Entry != ModuleListHead)
{
- ModulePtr = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ ModulePtr = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
DPRINT("Scanning %wZ %wZ\n", &ModulePtr->BaseDllName, &AdjustedName);
*/
if (!NT_SUCCESS(Status))
{
+ ULONG Flags = LDRP_PROCESS_CREATION_TIME;
Status = LdrLoadDll(NULL,
- LDRP_PROCESS_CREATION_TIME,
+ &Flags,
&DllName,
&BaseAddress);
if (NT_SUCCESS(Status))
ProtectPage2 = NULL;
}
- RelocationDir = LdrProcessRelocationBlock(Page,
+ RelocationDir = LdrProcessRelocationBlock((ULONG_PTR)Page,
Count,
TypeOffset,
Delta);
Entry = ModuleListHead->Flink;
while (Entry != ModuleListHead)
{
- Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
DPRINT("BaseDllName %wZ BaseAddress %p\n", &Module->BaseDllName, Module->DllBase);
Entry = ModuleListHead->Flink;
while (Entry != ModuleListHead)
{
- Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
if (Module->DllBase == BaseAddress)
{
Entry = ModuleListHead->Flink;
while (Entry != ModuleListHead)
{
- Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
if ((ULONG_PTR)PcValue >= (ULONG_PTR)Module->DllBase &&
(ULONG_PTR)PcValue < (ULONG_PTR)Module->DllBase + Module->SizeOfImage)
((UnloadAll && Module->LoadCount != 0xFFFF) || Module->LoadCount == 0))
{
/* remove the module entry from the list */
- RemoveEntryList (&Module->InLoadOrderModuleList);
+ RemoveEntryList (&Module->InLoadOrderLinks);
RemoveEntryList (&Module->InInitializationOrderModuleList);
NtUnmapViewOfSection (NtCurrentProcess (), Module->DllBase);
}
Entry = NtCurrentPeb()->Ldr->InLoadOrderModuleList.Flink;
- Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
LdrpTlsCallback(Module, DLL_THREAD_ATTACH);
}
PCHAR p;
DPRINT("LdrQueryProcessModuleInformation() called\n");
-
+ // FIXME: This code is ultra-duplicated. see lib\rtl\dbgbuffer.c
RtlEnterCriticalSection (NtCurrentPeb()->LoaderLock);
if (ModuleInformation == NULL || Size == 0)
}
else
{
- ModuleInformation->ModuleCount = 0;
- ModulePtr = &ModuleInformation->ModuleEntry[0];
+ ModuleInformation->NumberOfModules = 0;
+ ModulePtr = &ModuleInformation->Modules[0];
Status = STATUS_SUCCESS;
}
while (Entry != ModuleListHead)
{
- Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
+ Module = CONTAINING_RECORD(Entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
DPRINT(" Module %wZ\n",
&Module->FullDllName);
}
else if (ModuleInformation != NULL)
{
- ModulePtr->Reserved[0] = ModulePtr->Reserved[1] = 0; // FIXME: ??
- ModulePtr->Base = Module->DllBase;
- ModulePtr->Size = Module->SizeOfImage;
- ModulePtr->Flags = Module->Flags;
- ModulePtr->Index = 0; // FIXME: index ??
- ModulePtr->Unknown = 0; // FIXME: ??
- ModulePtr->LoadCount = Module->LoadCount;
-
- AnsiString.Length = 0;
+ ModulePtr->Section = 0;
+ ModulePtr->MappedBase = NULL; // FIXME: ??
+ ModulePtr->ImageBase = Module->DllBase;
+ ModulePtr->ImageSize = Module->SizeOfImage;
+ ModulePtr->Flags = Module->Flags;
+ ModulePtr->LoadOrderIndex = 0; // FIXME: ??
+ ModulePtr->InitOrderIndex = 0; // FIXME: ??
+ ModulePtr->LoadCount = Module->LoadCount;
+
+ AnsiString.Length = 0;
AnsiString.MaximumLength = 256;
- AnsiString.Buffer = ModulePtr->ImageName;
+ AnsiString.Buffer = ModulePtr->FullPathName;
RtlUnicodeStringToAnsiString(&AnsiString,
&Module->FullDllName,
FALSE);
- p = strrchr(ModulePtr->ImageName, '\\');
+
+ p = strrchr(ModulePtr->FullPathName, '\\');
if (p != NULL)
- ModulePtr->ModuleNameOffset = p - ModulePtr->ImageName + 1;
+ ModulePtr->OffsetToFileName = p - ModulePtr->FullPathName + 1;
else
- ModulePtr->ModuleNameOffset = 0;
+ ModulePtr->OffsetToFileName = 0;
ModulePtr++;
- ModuleInformation->ModuleCount++;
+ ModuleInformation->NumberOfModules++;
}
UsedSize += sizeof(RTL_PROCESS_MODULE_INFORMATION);
PIMAGE_BASE_RELOCATION NTAPI
-LdrProcessRelocationBlock(IN PVOID Address,
- IN USHORT Count,
+LdrProcessRelocationBlock(IN ULONG_PTR Address,
+ IN ULONG Count,
IN PUSHORT TypeOffset,
- IN ULONG_PTR Delta)
+ IN LONG_PTR Delta)
{
SHORT Offset;
USHORT Type;