Derek Lesho : ntoskrnl.exe: Implement process object constructor.
Module: wine Branch: master Commit: e5bbb5e6ca152782e4c43dcb8368fbae87db2322 URL: https://source.winehq.org/git/wine.git/?a=commit;h=e5bbb5e6ca152782e4c43dcb8... Author: Derek Lesho <dereklesho52(a)gmail.com> Date: Fri Apr 19 18:24:39 2019 +0200 ntoskrnl.exe: Implement process object constructor. Signed-off-by: Derek Lesho <dereklesho52(a)Gmail.com> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/ntoskrnl.c | 14 +++++++++++++- dlls/ntoskrnl.exe/ntoskrnl_private.h | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 2c0b51d..d31082b 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2451,11 +2451,23 @@ NTSTATUS WINAPI FsRtlRegisterUncProvider(PHANDLE MupHandle, PUNICODE_STRING Redi } +static void *create_process_object( HANDLE handle ) +{ + PEPROCESS process; + + if (!(process = alloc_kernel_object( PsProcessType, handle, sizeof(*process), 0 ))) return NULL; + + process->header.Type = 3; + process->header.WaitListHead.Blink = INVALID_HANDLE_VALUE; /* mark as kernel object */ + return process; +} + static const WCHAR process_type_name[] = {'P','r','o','c','e','s','s',0}; static struct _OBJECT_TYPE process_type = { - process_type_name + process_type_name, + create_process_object }; POBJECT_TYPE PsProcessType = &process_type; diff --git a/dlls/ntoskrnl.exe/ntoskrnl_private.h b/dlls/ntoskrnl.exe/ntoskrnl_private.h index f5a7628..5f30961 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl_private.h +++ b/dlls/ntoskrnl.exe/ntoskrnl_private.h @@ -28,6 +28,10 @@ struct _OBJECT_TYPE void (*release)(void*); /* called when the last reference is released */ }; +struct _EPROCESS { + DISPATCHER_HEADER header; +}; + struct _KTHREAD { DISPATCHER_HEADER header;
participants (1)
-
Alexandre Julliard