Implement directory object in wineserver.
Implement Nt[Create|Open]DirectoryObject.
Change tests accordingly.
diff --git a/server/object.h b/server/object.h
index f73d8a1..0c2ee1a 100644
--- a/server/object.h
+++ b/server/object.h
@@ -44,6 +44,7 @@
struct async;
struct async_queue;
struct winstation;
+struct directory;
struct unicode_str
@@ -102,6 +103,8 @@
extern void *alloc_object( const struct object_ops *ops );
extern const WCHAR *get_object_name( struct object *obj, size_t *len );
extern void dump_object_name( struct object *obj );
+extern void *create_object( struct namespace *namespace, const struct object_ops *ops,
+ const struct unicode_str *name, struct object *parent );
extern void *create_named_object( struct namespace *namespace, const struct object_ops *ops,
const struct unicode_str *name, unsigned int attributes );
extern struct namespace *create_namespace( unsigned int hash_size );
@@ -177,6 +180,19 @@
extern int grab_global_atom( struct winstation *winstation, atom_t atom );
extern void release_global_atom( struct winstation *winstation, atom_t atom );
+/* directory functions */
+
+extern struct directory *get_directory_obj( struct process *process, obj_handle_t handle, unsigned int access );
+extern struct object *find_object_dir( struct directory *root, const struct unicode_str *name,
+ unsigned int attr, struct unicode_str *name_left );
+extern void *create_named_object_dir( struct directory *root, const struct unicode_str *name,
+ unsigned int attr, const struct object_ops *ops );
+extern obj_handle_t open_object_dir( struct directory *root, const struct unicode_str *name,
+ unsigned int attr, const struct object_ops *ops,
+ unsigned int access );
+extern void init_directories(void);
+extern void close_directories(void);
+
/* global variables */
/* command-line options */