diff --git a/server/atom.c b/server/atom.c index eda4a64d748..05af58339e4 100644 --- a/server/atom.c +++ b/server/atom.c @@ -78,6 +78,7 @@ static const struct object_ops atom_table_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ atom_table_destroy /* destroy */ }; diff --git a/server/change.c b/server/change.c index a5819c5a38c..8bd9e834731 100644 --- a/server/change.c +++ b/server/change.c @@ -73,6 +73,7 @@ static const struct object_ops change_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ change_destroy /* destroy */ }; diff --git a/server/clipboard.c b/server/clipboard.c index efa5b7b7e63..26570dba4c4 100644 --- a/server/clipboard.c +++ b/server/clipboard.c @@ -55,6 +55,7 @@ static const struct object_ops clipboard_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ no_destroy /* destroy */ }; diff --git a/server/console.c b/server/console.c index bbadc1b39e1..8c556da5619 100644 --- a/server/console.c +++ b/server/console.c @@ -48,6 +48,7 @@ static const struct object_ops console_input_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ console_input_destroy /* destroy */ }; @@ -74,6 +75,7 @@ static const struct object_ops console_input_events_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ console_input_events_destroy /* destroy */ }; @@ -111,6 +113,7 @@ static const struct object_ops screen_buffer_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ screen_buffer_destroy /* destroy */ }; diff --git a/server/debugger.c b/server/debugger.c index 8940c0bdb5c..893225e0b97 100644 --- a/server/debugger.c +++ b/server/debugger.c @@ -73,6 +73,7 @@ static const struct object_ops debug_event_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ debug_event_destroy /* destroy */ }; @@ -91,6 +92,7 @@ static const struct object_ops debug_ctx_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ debug_ctx_destroy /* destroy */ }; diff --git a/server/event.c b/server/event.c index 90c525cee3f..fad154298da 100644 --- a/server/event.c +++ b/server/event.c @@ -55,6 +55,7 @@ static const struct object_ops event_ops = event_satisfied, /* satisfied */ event_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ no_destroy /* destroy */ }; diff --git a/server/fd.c b/server/fd.c index c7569af4df6..9dc2718cd6c 100644 --- a/server/fd.c +++ b/server/fd.c @@ -162,6 +162,7 @@ static const struct object_ops fd_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ fd_destroy /* destroy */ }; @@ -193,6 +194,7 @@ static const struct object_ops device_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ device_destroy /* destroy */ }; @@ -223,6 +225,7 @@ static const struct object_ops inode_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ inode_destroy /* destroy */ }; @@ -255,6 +258,7 @@ static const struct object_ops file_lock_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ no_destroy /* destroy */ }; diff --git a/server/file.c b/server/file.c index a5e4d768b90..625caf1fc8f 100644 --- a/server/file.c +++ b/server/file.c @@ -77,6 +77,7 @@ static const struct object_ops file_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ file_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ file_destroy /* destroy */ }; diff --git a/server/handle.c b/server/handle.c index 0a3a67b2386..b9312cea744 100644 --- a/server/handle.c +++ b/server/handle.c @@ -108,6 +108,7 @@ static const struct object_ops handle_table_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ handle_table_destroy /* destroy */ }; diff --git a/server/hook.c b/server/hook.c index eb40d140cec..d5239615754 100644 --- a/server/hook.c +++ b/server/hook.c @@ -80,6 +80,7 @@ static const struct object_ops hook_table_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ hook_table_destroy /* destroy */ }; diff --git a/server/mailslot.c b/server/mailslot.c index 38e0172c313..5e9f8900f26 100644 --- a/server/mailslot.c +++ b/server/mailslot.c @@ -75,6 +75,7 @@ static const struct object_ops mailslot_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ mailslot_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ mailslot_destroy /* destroy */ }; @@ -115,6 +116,7 @@ static const struct object_ops mail_writer_ops = NULL, /* satisfied */ no_signal, /* signal */ mail_writer_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ mail_writer_destroy /* destroy */ }; diff --git a/server/mapping.c b/server/mapping.c index 2825ef682a3..62d98c13f69 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -63,6 +63,7 @@ static const struct object_ops mapping_ops = NULL, /* satisfied */ no_signal, /* signal */ mapping_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ mapping_destroy /* destroy */ }; diff --git a/server/mutex.c b/server/mutex.c index 439af5e80d1..52e6d8cbd8c 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -58,6 +58,7 @@ static const struct object_ops mutex_ops = mutex_satisfied, /* satisfied */ mutex_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ mutex_destroy /* destroy */ }; diff --git a/server/named_pipe.c b/server/named_pipe.c index 3664f2b427c..626c0e17d5a 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -110,6 +110,7 @@ static const struct object_ops named_pipe_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ named_pipe_destroy /* destroy */ }; @@ -131,6 +132,7 @@ static const struct object_ops pipe_server_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ pipe_server_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ pipe_server_destroy /* destroy */ }; @@ -162,6 +164,7 @@ static const struct object_ops pipe_client_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ pipe_client_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ pipe_client_destroy /* destroy */ }; diff --git a/server/object.c b/server/object.c index e21957f2a79..3f8d0a12ed9 100644 --- a/server/object.c +++ b/server/object.c @@ -297,6 +297,12 @@ struct fd *no_get_fd( struct object *obj ) return NULL; } +struct object *no_lookup_name( struct object *obj, struct unicode_str *name, + unsigned int attr ) +{ + return NULL; +} + int no_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) { return 1; /* ok to close */ diff --git a/server/object.h b/server/object.h index 3c9601f8e3b..f73d8a1f3ed 100644 --- a/server/object.h +++ b/server/object.h @@ -45,6 +45,13 @@ struct async; struct async_queue; struct winstation; + +struct unicode_str +{ + const WCHAR *str; + size_t len; +}; + /* operations valid on all objects */ struct object_ops { @@ -64,6 +71,8 @@ struct object_ops int (*signal)(struct object *, unsigned int); /* return an fd object that can be used to read/write from the object */ struct fd *(*get_fd)(struct object *); + /* lookup a name if an object has a namespace */ + struct object *(*lookup_name)(struct object *, struct unicode_str *,unsigned int); /* close a handle to this object */ int (*close_handle)(struct object *,struct process *,obj_handle_t); /* destroy on refcount == 0 */ @@ -88,12 +97,6 @@ struct wait_queue_entry struct thread *thread; }; -struct unicode_str -{ - const WCHAR *str; - size_t len; -}; - extern void *mem_alloc( size_t size ); /* malloc wrapper */ extern void *memdup( const void *data, size_t len ); extern void *alloc_object( const struct object_ops *ops ); @@ -112,6 +115,7 @@ extern int no_add_queue( struct object *obj, struct wait_queue_entry *entry ); extern int no_satisfied( struct object *obj, struct thread *thread ); extern int no_signal( struct object *obj, unsigned int access ); extern struct fd *no_get_fd( struct object *obj ); +extern struct object *no_lookup_name( struct object *obj, struct unicode_str *name, unsigned int attributes ); extern int no_close_handle( struct object *obj, struct process *process, obj_handle_t handle ); extern void no_destroy( struct object *obj ); #ifdef DEBUG_OBJECTS diff --git a/server/process.c b/server/process.c index 1ff46a4d15c..a5db2744541 100644 --- a/server/process.c +++ b/server/process.c @@ -70,6 +70,7 @@ static const struct object_ops process_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ process_destroy /* destroy */ }; @@ -118,6 +119,7 @@ static const struct object_ops startup_info_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ startup_info_destroy /* destroy */ }; diff --git a/server/queue.c b/server/queue.c index be80c858794..8468ce644a3 100644 --- a/server/queue.c +++ b/server/queue.c @@ -150,6 +150,7 @@ static const struct object_ops msg_queue_ops = msg_queue_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ msg_queue_destroy /* destroy */ }; @@ -165,6 +166,7 @@ static const struct object_ops thread_input_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ thread_input_destroy /* destroy */ }; diff --git a/server/registry.c b/server/registry.c index eef7dc91761..0a0ca23ad33 100644 --- a/server/registry.c +++ b/server/registry.c @@ -145,6 +145,7 @@ static const struct object_ops key_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ key_close_handle, /* close_handle */ key_destroy /* destroy */ }; diff --git a/server/request.c b/server/request.c index 71ee445eca8..f7fb0b39884 100644 --- a/server/request.c +++ b/server/request.c @@ -95,6 +95,7 @@ static const struct object_ops master_socket_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ master_socket_destroy /* destroy */ }; diff --git a/server/semaphore.c b/server/semaphore.c index 650b5b186f6..589704a7c6b 100644 --- a/server/semaphore.c +++ b/server/semaphore.c @@ -55,6 +55,7 @@ static const struct object_ops semaphore_ops = semaphore_satisfied, /* satisfied */ semaphore_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ no_destroy /* destroy */ }; diff --git a/server/serial.c b/server/serial.c index e2763dc3a59..09ca6ec0717 100644 --- a/server/serial.c +++ b/server/serial.c @@ -100,6 +100,7 @@ static const struct object_ops serial_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ serial_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ serial_destroy /* destroy */ }; diff --git a/server/signal.c b/server/signal.c index 28880155349..d90739f4811 100644 --- a/server/signal.c +++ b/server/signal.c @@ -64,6 +64,7 @@ static const struct object_ops handler_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ handler_destroy /* destroy */ }; diff --git a/server/snapshot.c b/server/snapshot.c index 6c71b759431..5401375a196 100644 --- a/server/snapshot.c +++ b/server/snapshot.c @@ -63,6 +63,7 @@ static const struct object_ops snapshot_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ snapshot_destroy /* destroy */ }; diff --git a/server/sock.c b/server/sock.c index 0a9b4225d2d..601dd776cce 100644 --- a/server/sock.c +++ b/server/sock.c @@ -108,6 +108,7 @@ static const struct object_ops sock_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ sock_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ sock_destroy /* destroy */ }; diff --git a/server/thread.c b/server/thread.c index 3339e9dfb9a..50d50c84f29 100644 --- a/server/thread.c +++ b/server/thread.c @@ -94,6 +94,7 @@ static const struct object_ops thread_ops = no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ destroy_thread /* destroy */ }; diff --git a/server/timer.c b/server/timer.c index 5afc2efa6ec..717d6d5070f 100644 --- a/server/timer.c +++ b/server/timer.c @@ -63,6 +63,7 @@ static const struct object_ops timer_ops = timer_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ timer_destroy /* destroy */ }; diff --git a/server/token.c b/server/token.c index e42e891d844..7cf5e062394 100644 --- a/server/token.c +++ b/server/token.c @@ -114,6 +114,7 @@ static const struct object_ops token_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ no_close_handle, /* close_handle */ token_destroy /* destroy */ }; diff --git a/server/winstation.c b/server/winstation.c index fd5e71b3a8c..8dbb8f20611 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -58,6 +58,7 @@ static const struct object_ops winstation_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ winstation_close_handle, /* close_handle */ winstation_destroy /* destroy */ }; @@ -73,6 +74,7 @@ static const struct object_ops desktop_ops = NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ + no_lookup_name, /* lookup_name */ desktop_close_handle, /* close_handle */ desktop_destroy /* destroy */ };