server: Add an object operation to retrieve an object name.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2020-09-22 16:52:31 +02:00
parent c58a10c163
commit 2e51f9aae3
33 changed files with 75 additions and 4 deletions

View File

@ -76,6 +76,7 @@ static const struct object_ops async_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -489,6 +490,7 @@ static const struct object_ops iosb_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -86,6 +86,7 @@ static const struct object_ops atom_table_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -121,6 +121,7 @@ static const struct object_ops dir_ops =
default_fd_map_access, /* map_access */
dir_get_sd, /* get_sd */
dir_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -83,6 +83,7 @@ static const struct object_ops clipboard_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -70,6 +70,7 @@ static const struct object_ops completion_ops =
completion_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -100,6 +100,7 @@ static const struct object_ops console_input_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
console_input_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -158,6 +159,7 @@ static const struct object_ops console_input_events_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -226,6 +228,7 @@ static const struct object_ops console_server_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
console_server_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -308,6 +311,7 @@ static const struct object_ops screen_buffer_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -354,6 +358,7 @@ static const struct object_ops console_device_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
console_device_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -391,6 +396,7 @@ static const struct object_ops console_connection_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
console_connection_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -79,6 +79,7 @@ static const struct object_ops debug_event_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -106,6 +107,7 @@ static const struct object_ops debug_ctx_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -74,6 +74,7 @@ static const struct object_ops irp_call_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -113,6 +114,7 @@ static const struct object_ops device_manager_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -156,6 +158,7 @@ static const struct object_ops device_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -205,6 +208,7 @@ static const struct object_ops device_file_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -63,6 +63,7 @@ static const struct object_ops object_type_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -99,6 +100,7 @@ static const struct object_ops directory_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
directory_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -66,6 +66,7 @@ static const struct object_ops event_ops =
event_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -100,6 +101,7 @@ static const struct object_ops keyed_event_ops =
keyed_event_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -216,6 +216,7 @@ static const struct object_ops fd_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -256,6 +257,7 @@ static const struct object_ops device_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -295,6 +297,7 @@ static const struct object_ops inode_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -336,6 +339,7 @@ static const struct object_ops file_lock_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -91,6 +91,7 @@ static const struct object_ops file_ops =
default_fd_map_access, /* map_access */
file_get_sd, /* get_sd */
file_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
file_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -129,6 +129,7 @@ static const struct object_ops handle_table_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -670,7 +671,7 @@ DECL_HANDLER(get_object_info)
reply->access = get_handle_access( current->process, req->handle );
reply->ref_count = obj->refcount;
reply->handle_count = obj->handle_count;
if ((name = get_object_full_name( obj, &reply->total )))
if ((name = obj->ops->get_full_name( obj, &reply->total )))
set_reply_data_ptr( name, min( reply->total, get_reply_max_size() ));
release_object( obj );
}

View File

@ -87,6 +87,7 @@ static const struct object_ops hook_table_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -84,6 +84,7 @@ static const struct object_ops mailslot_ops =
mailslot_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
mailslot_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -141,6 +142,7 @@ static const struct object_ops mail_writer_ops =
mail_writer_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -203,6 +205,7 @@ static const struct object_ops mailslot_device_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
mailslot_device_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -231,6 +234,7 @@ static const struct object_ops mailslot_device_file_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -74,6 +74,7 @@ static const struct object_ops ranges_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -109,6 +110,7 @@ static const struct object_ops shared_map_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -166,6 +168,7 @@ static const struct object_ops mapping_ops =
mapping_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -67,6 +67,7 @@ static const struct object_ops mutex_ops =
mutex_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -124,6 +124,7 @@ static const struct object_ops named_pipe_ops =
named_pipe_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
named_pipe_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -166,6 +167,7 @@ static const struct object_ops pipe_server_ops =
default_fd_map_access, /* map_access */
pipe_end_get_sd, /* get_sd */
pipe_end_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -208,6 +210,7 @@ static const struct object_ops pipe_client_ops =
default_fd_map_access, /* map_access */
pipe_end_get_sd, /* get_sd */
pipe_end_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -254,6 +257,7 @@ static const struct object_ops named_pipe_device_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
named_pipe_device_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -283,6 +287,7 @@ static const struct object_ops named_pipe_device_file_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -158,7 +158,7 @@ const WCHAR *get_object_name( struct object *obj, data_size_t *len )
}
/* get the full path name of an existing object */
WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len )
WCHAR *default_get_full_name( struct object *obj, data_size_t *ret_len )
{
static const WCHAR backslash = '\\';
struct object *ptr = obj;
@ -686,6 +686,11 @@ int default_set_sd( struct object *obj, const struct security_descriptor *sd,
return set_sd_defaults_from_token( obj, sd, set_info, current->process->token );
}
WCHAR *no_get_full_name( struct object *obj, data_size_t *ret_len )
{
return NULL;
}
struct object *no_lookup_name( struct object *obj, struct unicode_str *name,
unsigned int attr )
{

View File

@ -80,6 +80,8 @@ struct object_ops
struct security_descriptor *(*get_sd)( struct object * );
/* sets the security descriptor of the object */
int (*set_sd)( struct object *, const struct security_descriptor *, unsigned int );
/* get the object full name */
WCHAR *(*get_full_name)(struct object *, data_size_t *);
/* 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 */
@ -132,7 +134,7 @@ extern void *memdup( const void *data, size_t len );
extern void *alloc_object( const struct object_ops *ops );
extern void namespace_add( struct namespace *namespace, struct object_name *ptr );
extern const WCHAR *get_object_name( struct object *obj, data_size_t *len );
extern WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len );
extern WCHAR *default_get_full_name( struct object *obj, data_size_t *ret_len );
extern void dump_object_name( struct object *obj );
extern struct object *lookup_named_object( struct object *root, const struct unicode_str *name,
unsigned int attr, struct unicode_str *name_left );
@ -164,6 +166,7 @@ extern struct security_descriptor *default_get_sd( struct object *obj );
extern int default_set_sd( struct object *obj, const struct security_descriptor *sd, unsigned int set_info );
extern int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd,
unsigned int set_info, struct token *token );
extern WCHAR *no_get_full_name( struct object *obj, data_size_t *ret_len );
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 void default_unlink_name( struct object *obj, struct object_name *name );

View File

@ -84,6 +84,7 @@ static const struct object_ops process_ops =
process_map_access, /* map_access */
process_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -134,6 +135,7 @@ static const struct object_ops startup_info_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -179,6 +181,7 @@ static const struct object_ops job_ops =
job_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -177,6 +177,7 @@ static const struct object_ops msg_queue_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -213,6 +214,7 @@ static const struct object_ops thread_input_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -165,6 +165,7 @@ static const struct object_ops key_ops =
key_map_access, /* map_access */
key_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -102,6 +102,7 @@ static const struct object_ops master_socket_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -64,6 +64,7 @@ static const struct object_ops semaphore_ops =
semaphore_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -98,6 +98,7 @@ static const struct object_ops serial_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -73,6 +73,7 @@ static const struct object_ops handler_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -152,6 +152,7 @@ static const struct object_ops sock_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -985,6 +986,7 @@ static const struct object_ops ifchange_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -1204,6 +1206,7 @@ static const struct object_ops socket_device_ops =
default_fd_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
socket_device_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -66,6 +66,7 @@ static const struct object_ops symlink_ops =
symlink_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
symlink_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -164,7 +165,7 @@ struct object *create_obj_symlink( struct object *root, const struct unicode_str
data_size_t len;
WCHAR *target_name;
if (!(target_name = get_object_full_name( target, &len )))
if (!(target_name = target->ops->get_full_name( target, &len )))
{
set_error( STATUS_INVALID_PARAMETER );
return NULL;

View File

@ -116,6 +116,7 @@ static const struct object_ops thread_apc_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -152,6 +153,7 @@ static const struct object_ops context_ops =
no_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */
@ -186,6 +188,7 @@ static const struct object_ops thread_ops =
thread_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -71,6 +71,7 @@ static const struct object_ops timer_ops =
timer_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */

View File

@ -152,6 +152,7 @@ static const struct object_ops token_ops =
token_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
no_link_name, /* link_name */
NULL, /* unlink_name */

View File

@ -70,6 +70,7 @@ static const struct object_ops winstation_ops =
winstation_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
winstation_lookup_name, /* lookup_name */
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
@ -94,6 +95,7 @@ static const struct object_ops desktop_ops =
desktop_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
no_lookup_name, /* lookup_name */
desktop_link_name, /* link_name */
default_unlink_name, /* unlink_name */