Server reorganization:
- moved request handlers to the specific C files
- moved handle management to handle.c
- moved server private includes to server/ instead of include/server/
diff --git a/server/device.c b/server/device.c
index 83446f4..5822293 100644
--- a/server/device.c
+++ b/server/device.c
@@ -18,7 +18,9 @@
#include "winerror.h"
#include "winbase.h"
-#include "server/thread.h"
+
+#include "handle.h"
+#include "thread.h"
struct device
{
@@ -44,7 +46,7 @@
device_destroy
};
-struct object *create_device( int id )
+static struct object *create_device( int id )
{
struct device *dev;
@@ -77,3 +79,18 @@
assert( obj->ops == &device_ops );
free( dev );
}
+
+/* create a device */
+DECL_HANDLER(create_device)
+{
+ struct object *obj;
+ struct create_device_reply reply = { -1 };
+
+ if ((obj = create_device( req->id )))
+ {
+ reply.handle = alloc_handle( current->process, obj,
+ req->access, req->inherit );
+ release_object( obj );
+ }
+ send_reply( current, -1, 1, &reply, sizeof(reply) );
+}