diff --git a/server/Makefile.in b/server/Makefile.in index 4a593a9f090..b8438a78d5c 100644 --- a/server/Makefile.in +++ b/server/Makefile.in @@ -8,6 +8,7 @@ MODULE = server C_SRCS = \ change.c \ console.c \ + device.c \ event.c \ file.c \ mapping.c \ diff --git a/server/device.c b/server/device.c new file mode 100644 index 00000000000..3ded814184e --- /dev/null +++ b/server/device.c @@ -0,0 +1,79 @@ +/* + * Server-side device management + * + * Copyright (C) 1999 Alexandre Julliard + */ + +/* + * FIXME: + * all this stuff is a simple hack to avoid breaking + * client-side device support. + */ + +#include +#include +#include +#include +#include + +#include "winerror.h" +#include "winnt.h" +#include "server/thread.h" + +struct device +{ + struct object obj; /* object header */ + int id; /* client identifier */ +}; + +static void device_dump( struct object *obj, int verbose ); +static int device_get_info( struct object *obj, struct get_file_info_reply *reply ); +static void device_destroy( struct object *obj ); + +static const struct object_ops device_ops = +{ + device_dump, + no_add_queue, + NULL, /* should never get called */ + NULL, /* should never get called */ + NULL, /* should never get called */ + no_read_fd, + no_write_fd, + no_flush, + device_get_info, + device_destroy +}; + +struct object *create_device( int id ) +{ + struct device *dev; + + if (!(dev = mem_alloc(sizeof(*dev)))) return NULL; + init_object( &dev->obj, &device_ops, NULL ); + dev->id = id; + return &dev->obj; +} + +static void device_dump( struct object *obj, int verbose ) +{ + struct device *dev = (struct device *)obj; + assert( obj->ops == &device_ops ); + fprintf( stderr, "Device id=%08x\n", dev->id ); +} + +static int device_get_info( struct object *obj, struct get_file_info_reply *reply ) +{ + struct device *dev = (struct device *)obj; + assert( obj->ops == &device_ops ); + memset( reply, 0, sizeof(*reply) ); + reply->type = FILE_TYPE_UNKNOWN; + reply->attr = dev->id; /* hack! */ + return 1; +} + +static void device_destroy( struct object *obj ) +{ + struct device *dev = (struct device *)obj; + assert( obj->ops == &device_ops ); + free( dev ); +}