default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
async_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
async_queue_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
atom_table_destroy /* destroy */
dir_get_sd, /* get_sd */
dir_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
fd_close_handle, /* close_handle */
dir_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
no_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
completion_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
console_input_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
console_input_events_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
screen_buffer_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
debug_event_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
debug_ctx_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
irp_call_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
device_manager_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
device_open_file, /* open_file */
no_close_handle, /* close_handle */
device_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
device_file_close_handle, /* close_handle */
device_file_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
no_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
directory_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
directory_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
no_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
no_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
fd_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
device_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
inode_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
no_destroy /* destroy */
file_get_sd, /* get_sd */
file_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
file_open_file, /* open_file */
fd_close_handle, /* close_handle */
file_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
handle_table_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
hook_table_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
mailslot_open_file, /* open_file */
fd_close_handle, /* close_handle */
mailslot_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
fd_close_handle, /* close_handle */
mail_writer_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
mailslot_device_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
mailslot_device_open_file, /* open_file */
fd_close_handle, /* close_handle */
mailslot_device_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
fd_close_handle, /* close_handle */
mapping_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
mutex_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
named_pipe_open_file, /* open_file */
no_close_handle, /* close_handle */
named_pipe_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
fd_close_handle, /* close_handle */
pipe_server_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
fd_close_handle, /* close_handle */
pipe_client_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
named_pipe_device_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
named_pipe_device_open_file, /* open_file */
fd_close_handle, /* close_handle */
named_pipe_device_destroy /* destroy */
return NULL;
}
+int no_link_name( struct object *obj, struct object_name *name, struct object *parent )
+{
+ set_error( STATUS_OBJECT_TYPE_MISMATCH );
+ return 0;
+}
+
struct object *no_open_file( struct object *obj, unsigned int access, unsigned int sharing,
unsigned int options )
{
int (*set_sd)( struct object *, const struct security_descriptor *, unsigned int );
/* lookup a name if an object has a namespace */
struct object *(*lookup_name)(struct object *, struct unicode_str *,unsigned int);
+ /* link an object's name into a parent object */
+ int (*link_name)(struct object *, struct object_name *, struct object *);
+ /* unlink an object's name from its parent */
+ void (*unlink_name)(struct object *, struct object_name *);
/* open a file object to access this object */
struct object *(*open_file)(struct object *, unsigned int access, unsigned int sharing,
unsigned int options);
extern int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd,
unsigned int set_info, struct token *token );
extern struct object *no_lookup_name( struct object *obj, struct unicode_str *name, unsigned int attributes );
+extern int no_link_name( struct object *obj, struct object_name *name, struct object *parent );
extern struct object *no_open_file( struct object *obj, unsigned int access, unsigned int sharing,
unsigned int options );
extern int no_close_handle( struct object *obj, struct process *process, obj_handle_t handle );
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
process_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
startup_info_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
job_close_handle, /* close_handle */
job_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
msg_queue_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
thread_input_destroy /* destroy */
key_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
key_close_handle, /* close_handle */
key_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
master_socket_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
no_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
fd_close_handle, /* close_handle */
serial_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
handler_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
snapshot_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
fd_close_handle, /* close_handle */
sock_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
ifchange_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
symlink_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
symlink_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
thread_apc_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
destroy_thread /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
timer_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
no_close_handle, /* close_handle */
token_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
winstation_close_handle, /* close_handle */
winstation_destroy /* destroy */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
+ no_link_name, /* link_name */
+ NULL, /* unlink_name */
no_open_file, /* open_file */
desktop_close_handle, /* close_handle */
desktop_destroy /* destroy */