Add name_lookup function in object_ops.

This commit is contained in:
Vitaliy Margolen 2005-11-22 14:55:42 +00:00 committed by Alexandre Julliard
parent 80f3e66de2
commit baffcb95d3
29 changed files with 55 additions and 6 deletions

View File

@ -78,6 +78,7 @@ static const struct object_ops atom_table_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
atom_table_destroy /* destroy */ atom_table_destroy /* destroy */
}; };

View File

@ -73,6 +73,7 @@ static const struct object_ops change_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
change_destroy /* destroy */ change_destroy /* destroy */
}; };

View File

@ -55,6 +55,7 @@ static const struct object_ops clipboard_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
no_destroy /* destroy */ no_destroy /* destroy */
}; };

View File

@ -48,6 +48,7 @@ static const struct object_ops console_input_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
console_input_destroy /* destroy */ console_input_destroy /* destroy */
}; };
@ -74,6 +75,7 @@ static const struct object_ops console_input_events_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
console_input_events_destroy /* destroy */ console_input_events_destroy /* destroy */
}; };
@ -111,6 +113,7 @@ static const struct object_ops screen_buffer_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
screen_buffer_destroy /* destroy */ screen_buffer_destroy /* destroy */
}; };

View File

@ -73,6 +73,7 @@ static const struct object_ops debug_event_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
debug_event_destroy /* destroy */ debug_event_destroy /* destroy */
}; };
@ -91,6 +92,7 @@ static const struct object_ops debug_ctx_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
debug_ctx_destroy /* destroy */ debug_ctx_destroy /* destroy */
}; };

View File

@ -55,6 +55,7 @@ static const struct object_ops event_ops =
event_satisfied, /* satisfied */ event_satisfied, /* satisfied */
event_signal, /* signal */ event_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
no_destroy /* destroy */ no_destroy /* destroy */
}; };

View File

@ -162,6 +162,7 @@ static const struct object_ops fd_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
fd_destroy /* destroy */ fd_destroy /* destroy */
}; };
@ -193,6 +194,7 @@ static const struct object_ops device_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
device_destroy /* destroy */ device_destroy /* destroy */
}; };
@ -223,6 +225,7 @@ static const struct object_ops inode_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
inode_destroy /* destroy */ inode_destroy /* destroy */
}; };
@ -255,6 +258,7 @@ static const struct object_ops file_lock_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
no_destroy /* destroy */ no_destroy /* destroy */
}; };

View File

@ -77,6 +77,7 @@ static const struct object_ops file_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
file_get_fd, /* get_fd */ file_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
file_destroy /* destroy */ file_destroy /* destroy */
}; };

View File

@ -108,6 +108,7 @@ static const struct object_ops handle_table_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
handle_table_destroy /* destroy */ handle_table_destroy /* destroy */
}; };

View File

@ -80,6 +80,7 @@ static const struct object_ops hook_table_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
hook_table_destroy /* destroy */ hook_table_destroy /* destroy */
}; };

View File

@ -75,6 +75,7 @@ static const struct object_ops mailslot_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
mailslot_get_fd, /* get_fd */ mailslot_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
mailslot_destroy /* destroy */ mailslot_destroy /* destroy */
}; };
@ -115,6 +116,7 @@ static const struct object_ops mail_writer_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
mail_writer_get_fd, /* get_fd */ mail_writer_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
mail_writer_destroy /* destroy */ mail_writer_destroy /* destroy */
}; };

View File

@ -63,6 +63,7 @@ static const struct object_ops mapping_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
mapping_get_fd, /* get_fd */ mapping_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
mapping_destroy /* destroy */ mapping_destroy /* destroy */
}; };

View File

@ -58,6 +58,7 @@ static const struct object_ops mutex_ops =
mutex_satisfied, /* satisfied */ mutex_satisfied, /* satisfied */
mutex_signal, /* signal */ mutex_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
mutex_destroy /* destroy */ mutex_destroy /* destroy */
}; };

View File

@ -110,6 +110,7 @@ static const struct object_ops named_pipe_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
named_pipe_destroy /* destroy */ named_pipe_destroy /* destroy */
}; };
@ -131,6 +132,7 @@ static const struct object_ops pipe_server_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
pipe_server_get_fd, /* get_fd */ pipe_server_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
pipe_server_destroy /* destroy */ pipe_server_destroy /* destroy */
}; };
@ -162,6 +164,7 @@ static const struct object_ops pipe_client_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
pipe_client_get_fd, /* get_fd */ pipe_client_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
pipe_client_destroy /* destroy */ pipe_client_destroy /* destroy */
}; };

View File

@ -297,6 +297,12 @@ struct fd *no_get_fd( struct object *obj )
return NULL; 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 ) int no_close_handle( struct object *obj, struct process *process, obj_handle_t handle )
{ {
return 1; /* ok to close */ return 1; /* ok to close */

View File

@ -45,6 +45,13 @@ struct async;
struct async_queue; struct async_queue;
struct winstation; struct winstation;
struct unicode_str
{
const WCHAR *str;
size_t len;
};
/* operations valid on all objects */ /* operations valid on all objects */
struct object_ops struct object_ops
{ {
@ -64,6 +71,8 @@ struct object_ops
int (*signal)(struct object *, unsigned int); int (*signal)(struct object *, unsigned int);
/* return an fd object that can be used to read/write from the object */ /* return an fd object that can be used to read/write from the object */
struct fd *(*get_fd)(struct 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 */ /* close a handle to this object */
int (*close_handle)(struct object *,struct process *,obj_handle_t); int (*close_handle)(struct object *,struct process *,obj_handle_t);
/* destroy on refcount == 0 */ /* destroy on refcount == 0 */
@ -88,12 +97,6 @@ struct wait_queue_entry
struct thread *thread; struct thread *thread;
}; };
struct unicode_str
{
const WCHAR *str;
size_t len;
};
extern void *mem_alloc( size_t size ); /* malloc wrapper */ extern void *mem_alloc( size_t size ); /* malloc wrapper */
extern void *memdup( const void *data, size_t len ); extern void *memdup( const void *data, size_t len );
extern void *alloc_object( const struct object_ops *ops ); 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_satisfied( struct object *obj, struct thread *thread );
extern int no_signal( struct object *obj, unsigned int access ); extern int no_signal( struct object *obj, unsigned int access );
extern struct fd *no_get_fd( struct object *obj ); 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 int no_close_handle( struct object *obj, struct process *process, obj_handle_t handle );
extern void no_destroy( struct object *obj ); extern void no_destroy( struct object *obj );
#ifdef DEBUG_OBJECTS #ifdef DEBUG_OBJECTS

View File

@ -70,6 +70,7 @@ static const struct object_ops process_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
process_destroy /* destroy */ process_destroy /* destroy */
}; };
@ -118,6 +119,7 @@ static const struct object_ops startup_info_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
startup_info_destroy /* destroy */ startup_info_destroy /* destroy */
}; };

View File

@ -150,6 +150,7 @@ static const struct object_ops msg_queue_ops =
msg_queue_satisfied, /* satisfied */ msg_queue_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
msg_queue_destroy /* destroy */ msg_queue_destroy /* destroy */
}; };
@ -165,6 +166,7 @@ static const struct object_ops thread_input_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
thread_input_destroy /* destroy */ thread_input_destroy /* destroy */
}; };

View File

@ -145,6 +145,7 @@ static const struct object_ops key_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
key_close_handle, /* close_handle */ key_close_handle, /* close_handle */
key_destroy /* destroy */ key_destroy /* destroy */
}; };

View File

@ -95,6 +95,7 @@ static const struct object_ops master_socket_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
master_socket_destroy /* destroy */ master_socket_destroy /* destroy */
}; };

View File

@ -55,6 +55,7 @@ static const struct object_ops semaphore_ops =
semaphore_satisfied, /* satisfied */ semaphore_satisfied, /* satisfied */
semaphore_signal, /* signal */ semaphore_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
no_destroy /* destroy */ no_destroy /* destroy */
}; };

View File

@ -100,6 +100,7 @@ static const struct object_ops serial_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
serial_get_fd, /* get_fd */ serial_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
serial_destroy /* destroy */ serial_destroy /* destroy */
}; };

View File

@ -64,6 +64,7 @@ static const struct object_ops handler_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
handler_destroy /* destroy */ handler_destroy /* destroy */
}; };

View File

@ -63,6 +63,7 @@ static const struct object_ops snapshot_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
snapshot_destroy /* destroy */ snapshot_destroy /* destroy */
}; };

View File

@ -108,6 +108,7 @@ static const struct object_ops sock_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
sock_get_fd, /* get_fd */ sock_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
sock_destroy /* destroy */ sock_destroy /* destroy */
}; };

View File

@ -94,6 +94,7 @@ static const struct object_ops thread_ops =
no_satisfied, /* satisfied */ no_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
destroy_thread /* destroy */ destroy_thread /* destroy */
}; };

View File

@ -63,6 +63,7 @@ static const struct object_ops timer_ops =
timer_satisfied, /* satisfied */ timer_satisfied, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
timer_destroy /* destroy */ timer_destroy /* destroy */
}; };

View File

@ -114,6 +114,7 @@ static const struct object_ops token_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
no_close_handle, /* close_handle */ no_close_handle, /* close_handle */
token_destroy /* destroy */ token_destroy /* destroy */
}; };

View File

@ -58,6 +58,7 @@ static const struct object_ops winstation_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
winstation_close_handle, /* close_handle */ winstation_close_handle, /* close_handle */
winstation_destroy /* destroy */ winstation_destroy /* destroy */
}; };
@ -73,6 +74,7 @@ static const struct object_ops desktop_ops =
NULL, /* satisfied */ NULL, /* satisfied */
no_signal, /* signal */ no_signal, /* signal */
no_get_fd, /* get_fd */ no_get_fd, /* get_fd */
no_lookup_name, /* lookup_name */
desktop_close_handle, /* close_handle */ desktop_close_handle, /* close_handle */
desktop_destroy /* destroy */ desktop_destroy /* destroy */
}; };