From 2bb4d24589d5029c767801bbc39f616c309d360a Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 22 Feb 2019 13:14:05 +0100 Subject: [PATCH] server: Support process object type. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/ntdll/tests/om.c | 3 +++ server/process.c | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c index 9ced706e226..bc1c6a4fcf2 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c @@ -1560,6 +1560,9 @@ static void test_query_object(void) pNtClose( handle ); } pRtlFreeUnicodeString( &session ); + + test_object_type( GetCurrentProcess(), "Process" ); + test_no_file_info( GetCurrentProcess() ); } static void test_type_mismatch(void) diff --git a/server/process.c b/server/process.c index e55c8a861e0..77bd1e74b50 100644 --- a/server/process.c +++ b/server/process.c @@ -60,6 +60,7 @@ static int shutdown_stage; /* current stage in the shutdown process */ /* process operations */ static void process_dump( struct object *obj, int verbose ); +static struct object_type *process_get_type( struct object *obj ); static int process_signaled( struct object *obj, struct wait_queue_entry *entry ); static unsigned int process_map_access( struct object *obj, unsigned int access ); static void process_poll_event( struct fd *fd, int event ); @@ -70,7 +71,7 @@ static const struct object_ops process_ops = { sizeof(struct process), /* size */ process_dump, /* dump */ - no_get_type, /* get_type */ + process_get_type, /* get_type */ add_queue, /* add_queue */ remove_queue, /* remove_queue */ process_signaled, /* signaled */ @@ -630,6 +631,13 @@ static void process_dump( struct object *obj, int verbose ) fprintf( stderr, "Process id=%04x handles=%p\n", process->id, process->handles ); } +static struct object_type *process_get_type( struct object *obj ) +{ + static const WCHAR name[] = {'P','r','o','c','e','s','s'}; + static const struct unicode_str str = { name, sizeof(name) }; + return get_object_type( &str ); +} + static int process_signaled( struct object *obj, struct wait_queue_entry *entry ) { struct process *process = (struct process *)obj;