Implement directory object in wineserver.
Vitaliy Margolen
wine-devel at kievinfo.com
Wed Nov 23 09:38:43 CST 2005
Wednesday, November 23, 2005, 4:53:23 AM, Alexandre Julliard wrote:
> Vitaliy Margolen <wine-patch at kievinfo.com> writes:
>> +/* get parts of an OBJECT_ATTRIBUTES into object_attr */
>> +#define GET_OBJECT_ATTR(a,r,n) \
>> + get_req_unicode_str( n ); \
>> + (a)->rootdir = (r)->rootdir; \
>> + (a)->attributes = (r)->attributes; \
>> + (a)->name = (n);
>> +
> That's ugly, please pass parameters explicitly to the functions, don't
> hide them inside an object_attr structure. Also directories inside the
> server have to be specified as directory objects, not as handles.
So instead of:
void *create_named_object_dir( const struct object_attr *attr,
const struct object_ops *ops );
DECL_HANDLER([open/close]_object)
{
...
GET_OBJECT_ATTR(&attr, req, &name)
if ((dir = create_directory( &attr )))
...
you want this:
void *create_named_object_dir( const struct object *rootdir,
const struct unicode_str *name,
unsigned int attr,
const struct object_ops *ops );
DECL_HANDLER([open/create]_directory)
{
...
get_req_unicode_str( &name );
if (req->rootdir) root_obj = get_handle_obj( current->process, req->rootdir, 0, &directory_ops );
dir = create_directory( root_obj, &name, req->attributes );
if (root_obj) release_object( root_obj );
...
For each named object?
Vitaliy
More information about the wine-devel
mailing list