mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2024-11-19 17:06:04 -07:00
server: Use an explicit union instead of a typedef for IRP params.
This commit is contained in:
parent
6f5e34ad14
commit
ab399468c2
8 changed files with 25 additions and 24 deletions
|
@ -506,7 +506,7 @@ static NTSTATUS WINAPI dispatch_irp_completion( DEVICE_OBJECT *device, IRP *irp,
|
|||
|
||||
struct dispatch_context
|
||||
{
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
HANDLE handle;
|
||||
struct irp_data *irp_data;
|
||||
ULONG in_size;
|
||||
|
|
6
include/wine/server_protocol.h
generated
6
include/wine/server_protocol.h
generated
|
@ -748,7 +748,7 @@ enum irp_type
|
|||
IRP_CALL_CANCEL
|
||||
};
|
||||
|
||||
typedef union
|
||||
union irp_params
|
||||
{
|
||||
enum irp_type type;
|
||||
struct
|
||||
|
@ -816,7 +816,7 @@ typedef union
|
|||
int __pad;
|
||||
client_ptr_t irp;
|
||||
} cancel;
|
||||
} irp_params_t;
|
||||
};
|
||||
|
||||
|
||||
typedef struct
|
||||
|
@ -5239,7 +5239,7 @@ struct get_next_device_request_request
|
|||
struct get_next_device_request_reply
|
||||
{
|
||||
struct reply_header __header;
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
obj_handle_t next;
|
||||
thread_id_t client_tid;
|
||||
client_ptr_t client_thread;
|
||||
|
|
|
@ -49,7 +49,7 @@ struct irp_call
|
|||
struct device_file *file; /* file containing this irp */
|
||||
struct thread *thread; /* thread that queued the irp */
|
||||
struct async *async; /* pending async op */
|
||||
irp_params_t params; /* irp parameters */
|
||||
union irp_params params; /* irp parameters */
|
||||
struct iosb *iosb; /* I/O status block */
|
||||
int canceled; /* the call was canceled */
|
||||
client_ptr_t user_ptr; /* client side pointer */
|
||||
|
@ -348,7 +348,8 @@ static void irp_call_destroy( struct object *obj )
|
|||
if (irp->thread) release_object( irp->thread );
|
||||
}
|
||||
|
||||
static struct irp_call *create_irp( struct device_file *file, const irp_params_t *params, struct async *async )
|
||||
static struct irp_call *create_irp( struct device_file *file, const union irp_params *params,
|
||||
struct async *async )
|
||||
{
|
||||
struct irp_call *irp;
|
||||
|
||||
|
@ -455,7 +456,7 @@ static struct object *device_open_file( struct object *obj, unsigned int access,
|
|||
if (device->manager)
|
||||
{
|
||||
struct irp_call *irp;
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
memset( ¶ms, 0, sizeof(params) );
|
||||
params.create.type = IRP_CALL_CREATE;
|
||||
|
@ -512,7 +513,7 @@ static int device_file_close_handle( struct object *obj, struct process *process
|
|||
if (!file->closed && file->device->manager && obj->handle_count == 1) /* last handle */
|
||||
{
|
||||
struct irp_call *irp;
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
file->closed = 1;
|
||||
memset( ¶ms, 0, sizeof(params) );
|
||||
|
@ -542,7 +543,7 @@ static void device_file_destroy( struct object *obj )
|
|||
release_object( file->device );
|
||||
}
|
||||
|
||||
static int fill_irp_params( struct device_manager *manager, struct irp_call *irp, irp_params_t *params )
|
||||
static int fill_irp_params( struct device_manager *manager, struct irp_call *irp, union irp_params *params )
|
||||
{
|
||||
switch (irp->params.type)
|
||||
{
|
||||
|
@ -595,7 +596,7 @@ static void free_irp_params( struct irp_call *irp )
|
|||
}
|
||||
|
||||
/* queue an irp to the device */
|
||||
static void queue_irp( struct device_file *file, const irp_params_t *params, struct async *async )
|
||||
static void queue_irp( struct device_file *file, const union irp_params *params, struct async *async )
|
||||
{
|
||||
struct irp_call *irp = create_irp( file, params, async );
|
||||
if (!irp) return;
|
||||
|
@ -615,7 +616,7 @@ static enum server_fd_type device_file_get_fd_type( struct fd *fd )
|
|||
static void device_file_get_volume_info( struct fd *fd, struct async *async, unsigned int info_class )
|
||||
{
|
||||
struct device_file *file = get_fd_user( fd );
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
memset( ¶ms, 0, sizeof(params) );
|
||||
params.volume.type = IRP_CALL_VOLUME;
|
||||
|
@ -626,7 +627,7 @@ static void device_file_get_volume_info( struct fd *fd, struct async *async, uns
|
|||
static void device_file_read( struct fd *fd, struct async *async, file_pos_t pos )
|
||||
{
|
||||
struct device_file *file = get_fd_user( fd );
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
memset( ¶ms, 0, sizeof(params) );
|
||||
params.read.type = IRP_CALL_READ;
|
||||
|
@ -638,7 +639,7 @@ static void device_file_read( struct fd *fd, struct async *async, file_pos_t pos
|
|||
static void device_file_write( struct fd *fd, struct async *async, file_pos_t pos )
|
||||
{
|
||||
struct device_file *file = get_fd_user( fd );
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
memset( ¶ms, 0, sizeof(params) );
|
||||
params.write.type = IRP_CALL_WRITE;
|
||||
|
@ -650,7 +651,7 @@ static void device_file_write( struct fd *fd, struct async *async, file_pos_t po
|
|||
static void device_file_flush( struct fd *fd, struct async *async )
|
||||
{
|
||||
struct device_file *file = get_fd_user( fd );
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
memset( ¶ms, 0, sizeof(params) );
|
||||
params.flush.type = IRP_CALL_FLUSH;
|
||||
|
@ -660,7 +661,7 @@ static void device_file_flush( struct fd *fd, struct async *async )
|
|||
static void device_file_ioctl( struct fd *fd, ioctl_code_t code, struct async *async )
|
||||
{
|
||||
struct device_file *file = get_fd_user( fd );
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
memset( ¶ms, 0, sizeof(params) );
|
||||
params.ioctl.type = IRP_CALL_IOCTL;
|
||||
|
@ -671,7 +672,7 @@ static void device_file_ioctl( struct fd *fd, ioctl_code_t code, struct async *a
|
|||
static void cancel_irp_call( struct irp_call *irp )
|
||||
{
|
||||
struct irp_call *cancel_irp;
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
irp->canceled = 1;
|
||||
if (!irp->user_ptr || !irp->file || !irp->file->device->manager) return;
|
||||
|
@ -842,7 +843,7 @@ void free_kernel_objects( struct object *obj )
|
|||
{
|
||||
struct kernel_object *kernel_object = LIST_ENTRY( ptr, struct kernel_object, list_entry );
|
||||
struct irp_call *irp;
|
||||
irp_params_t params;
|
||||
union irp_params params;
|
||||
|
||||
assert( !kernel_object->owned );
|
||||
|
||||
|
|
|
@ -764,7 +764,7 @@ enum irp_type
|
|||
IRP_CALL_CANCEL
|
||||
};
|
||||
|
||||
typedef union
|
||||
union irp_params
|
||||
{
|
||||
enum irp_type type; /* irp call type */
|
||||
struct
|
||||
|
@ -832,7 +832,7 @@ typedef union
|
|||
int __pad;
|
||||
client_ptr_t irp; /* opaque ptr for canceled irp */
|
||||
} cancel;
|
||||
} irp_params_t;
|
||||
};
|
||||
|
||||
/* information about a PE image mapping, roughly equivalent to SECTION_IMAGE_INFORMATION */
|
||||
typedef struct
|
||||
|
@ -3695,7 +3695,7 @@ typedef union
|
|||
data_size_t result; /* IOSB result of the previous irp */
|
||||
VARARG(data,bytes); /* output data of the previous irp */
|
||||
@REPLY
|
||||
irp_params_t params; /* irp parameters */
|
||||
union irp_params params; /* irp parameters */
|
||||
obj_handle_t next; /* handle to the next irp */
|
||||
thread_id_t client_tid; /* tid of thread calling irp */
|
||||
client_ptr_t client_thread; /* pointer to thread object of calling irp */
|
||||
|
|
2
server/request_handlers.h
generated
2
server/request_handlers.h
generated
|
@ -608,7 +608,6 @@ C_ASSERT( sizeof(file_pos_t) == 8 );
|
|||
C_ASSERT( sizeof(generic_map_t) == 16 );
|
||||
C_ASSERT( sizeof(int) == 4 );
|
||||
C_ASSERT( sizeof(ioctl_code_t) == 4 );
|
||||
C_ASSERT( sizeof(irp_params_t) == 32 );
|
||||
C_ASSERT( sizeof(lparam_t) == 8 );
|
||||
C_ASSERT( sizeof(mem_size_t) == 8 );
|
||||
C_ASSERT( sizeof(mod_handle_t) == 8 );
|
||||
|
@ -641,6 +640,7 @@ C_ASSERT( sizeof(union apc_call) == 64 );
|
|||
C_ASSERT( sizeof(union apc_result) == 40 );
|
||||
C_ASSERT( sizeof(union debug_event_data) == 160 );
|
||||
C_ASSERT( sizeof(union hw_input) == 40 );
|
||||
C_ASSERT( sizeof(union irp_params) == 32 );
|
||||
C_ASSERT( sizeof(union message_data) == 48 );
|
||||
C_ASSERT( sizeof(unsigned __int64) == 8 );
|
||||
C_ASSERT( sizeof(unsigned char) == 1 );
|
||||
|
|
2
server/request_trace.h
generated
2
server/request_trace.h
generated
|
@ -11,7 +11,7 @@ static void dump_async_data( const char *prefix, const struct async_data *val );
|
|||
static void dump_generic_map( const char *prefix, const generic_map_t *val );
|
||||
static void dump_hw_input( const char *prefix, const union hw_input *val );
|
||||
static void dump_ioctl_code( const char *prefix, const ioctl_code_t *val );
|
||||
static void dump_irp_params( const char *prefix, const irp_params_t *val );
|
||||
static void dump_irp_params( const char *prefix, const union irp_params *val );
|
||||
static void dump_luid( const char *prefix, const struct luid *val );
|
||||
static void dump_obj_locator( const char *prefix, const obj_locator_t *val );
|
||||
static void dump_rectangle( const char *prefix, const rectangle_t *val );
|
||||
|
|
|
@ -387,7 +387,7 @@ static void dump_async_data( const char *prefix, const struct async_data *data )
|
|||
fputc( '}', stderr );
|
||||
}
|
||||
|
||||
static void dump_irp_params( const char *prefix, const irp_params_t *data )
|
||||
static void dump_irp_params( const char *prefix, const union irp_params *data )
|
||||
{
|
||||
switch (data->type)
|
||||
{
|
||||
|
|
|
@ -38,7 +38,6 @@ my %formats =
|
|||
"timeout_t" => [ 8, 8 ],
|
||||
"abstime_t" => [ 8, 8 ],
|
||||
"rectangle_t" => [ 16, 4 ],
|
||||
"irp_params_t" => [ 32, 8 ],
|
||||
"generic_map_t" => [ 16, 4 ],
|
||||
"ioctl_code_t" => [ 4, 4 ],
|
||||
"obj_locator_t" => [ 16, 8 ],
|
||||
|
@ -58,6 +57,7 @@ my %formats =
|
|||
"struct filesystem_event" => [ 12, 4 ],
|
||||
"struct handle_info" => [ 20, 4 ],
|
||||
"union hw_input" => [ 40, 8 ],
|
||||
"union irp_params" => [ 32, 8 ],
|
||||
"struct luid" => [ 8, 4 ],
|
||||
"struct luid_attr" => [ 12, 4 ],
|
||||
"union message_data" => [ 48, 8 ],
|
||||
|
|
Loading…
Reference in a new issue