Commit e58073db authored by Paul Gofman's avatar Paul Gofman Committed by Alexandre Julliard

ntoskrnl.exe: Implement PsGetProcessSectionBaseAddress() function.

parent f3faf6b2
......@@ -4248,3 +4248,33 @@ void WINAPI KeSignalCallDpcDone(void *barrier)
{
InterlockedDecrement((LONG *)barrier);
}
void * WINAPI PsGetProcessSectionBaseAddress(PEPROCESS process)
{
void *image_base;
NTSTATUS status;
SIZE_T size;
HANDLE h;
TRACE("process %p.\n", process);
if ((status = ObOpenObjectByPointer(process, 0, NULL, PROCESS_ALL_ACCESS, NULL, KernelMode, &h)))
{
WARN("Error opening process object, status %#x.\n", status);
return NULL;
}
status = NtReadVirtualMemory(h, &process->info.PebBaseAddress->ImageBaseAddress,
&image_base, sizeof(image_base), &size);
NtClose(h);
if (status || size != sizeof(image_base))
{
WARN("Error reading process memory, status %#x, size %lu.\n", status, size);
return NULL;
}
TRACE("returning %p.\n", image_base);
return image_base;
}
......@@ -904,7 +904,7 @@
@ stub PsGetProcessJob
@ stub PsGetProcessPeb
@ stub PsGetProcessPriorityClass
@ stub PsGetProcessSectionBaseAddress
@ stdcall PsGetProcessSectionBaseAddress(ptr)
@ stub PsGetProcessSecurityPort
@ stub PsGetProcessSessionId
@ stub PsGetProcessWin32Process
......
......@@ -229,6 +229,7 @@ NTSTATUS WINAPI KeExpandKernelStackAndCallout(PEXPAND_STACK_CALLOUT,void*,SIZE_
void WINAPI KeSetTargetProcessorDpc(PRKDPC,CCHAR);
BOOLEAN WINAPI MmIsAddressValid(void *);
HANDLE WINAPI PsGetProcessId(PEPROCESS);
void * WINAPI PsGetProcessSectionBaseAddress(PEPROCESS);
HANDLE WINAPI PsGetThreadId(PETHREAD);
HANDLE WINAPI PsGetThreadProcessId(PETHREAD);
NTSTATUS WINAPI PsRemoveLoadImageNotifyRoutine(PLOAD_IMAGE_NOTIFY_ROUTINE);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment