server: Make async I/O transfer sizes always 32-bit.
This commit is contained in:
parent
dc7f170495
commit
f6fa72d770
|
@ -2302,7 +2302,7 @@ static void WINAPI read_changes_user_apc( void *arg, IO_STATUS_BLOCK *io, ULONG
|
|||
RtlFreeHeap( GetProcessHeap(), 0, info );
|
||||
}
|
||||
|
||||
static NTSTATUS read_changes_apc( void *user, PIO_STATUS_BLOCK iosb, NTSTATUS status, ULONG_PTR *total )
|
||||
static NTSTATUS read_changes_apc( void *user, PIO_STATUS_BLOCK iosb, NTSTATUS status, ULONG *total )
|
||||
{
|
||||
struct read_changes_info *info = user;
|
||||
char path[PATH_MAX];
|
||||
|
|
|
@ -334,7 +334,7 @@ NTSTATUS FILE_GetNtStatus(void)
|
|||
/***********************************************************************
|
||||
* FILE_AsyncReadService (INTERNAL)
|
||||
*/
|
||||
static NTSTATUS FILE_AsyncReadService(void *user, PIO_STATUS_BLOCK iosb, NTSTATUS status, ULONG_PTR *total)
|
||||
static NTSTATUS FILE_AsyncReadService(void *user, PIO_STATUS_BLOCK iosb, NTSTATUS status, ULONG *total)
|
||||
{
|
||||
async_fileio_read *fileio = user;
|
||||
int fd, needs_close, result;
|
||||
|
@ -812,7 +812,7 @@ NTSTATUS WINAPI NtReadFileScatter( HANDLE file, HANDLE event, PIO_APC_ROUTINE ap
|
|||
/***********************************************************************
|
||||
* FILE_AsyncWriteService (INTERNAL)
|
||||
*/
|
||||
static NTSTATUS FILE_AsyncWriteService(void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status, ULONG_PTR *total)
|
||||
static NTSTATUS FILE_AsyncWriteService(void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status, ULONG *total)
|
||||
{
|
||||
async_fileio_write *fileio = user;
|
||||
int result, fd, needs_close;
|
||||
|
@ -1146,7 +1146,7 @@ struct async_ioctl
|
|||
};
|
||||
|
||||
/* callback for ioctl async I/O completion */
|
||||
static NTSTATUS ioctl_completion( void *arg, IO_STATUS_BLOCK *io, NTSTATUS status )
|
||||
static NTSTATUS ioctl_completion( void *arg, IO_STATUS_BLOCK *io, NTSTATUS status, ULONG *total )
|
||||
{
|
||||
struct async_ioctl *async = arg;
|
||||
|
||||
|
@ -1158,7 +1158,7 @@ static NTSTATUS ioctl_completion( void *arg, IO_STATUS_BLOCK *io, NTSTATUS statu
|
|||
req->user_arg = async;
|
||||
wine_server_set_reply( req, async->buffer, async->size );
|
||||
if (!(status = wine_server_call( req )))
|
||||
io->Information = wine_server_reply_size( reply );
|
||||
io->Information = *total = wine_server_reply_size( reply );
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
}
|
||||
|
|
|
@ -211,6 +211,7 @@ static inline struct ntdll_thread_regs *ntdll_get_thread_regs(void)
|
|||
}
|
||||
|
||||
/* Completion */
|
||||
extern NTSTATUS NTDLL_AddCompletion( HANDLE hFile, ULONG_PTR CompletionValue, NTSTATUS CompletionStatus, ULONG_PTR Information );
|
||||
extern NTSTATUS NTDLL_AddCompletion( HANDLE hFile, ULONG_PTR CompletionValue,
|
||||
NTSTATUS CompletionStatus, ULONG Information );
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1393,7 +1393,8 @@ NTSTATUS WINAPI NtQueryIoCompletion( HANDLE CompletionPort, IO_COMPLETION_INFORM
|
|||
return status;
|
||||
}
|
||||
|
||||
NTSTATUS NTDLL_AddCompletion( HANDLE hFile, ULONG_PTR CompletionValue, NTSTATUS CompletionStatus, ULONG_PTR Information )
|
||||
NTSTATUS NTDLL_AddCompletion( HANDLE hFile, ULONG_PTR CompletionValue,
|
||||
NTSTATUS CompletionStatus, ULONG Information )
|
||||
{
|
||||
NTSTATUS status;
|
||||
|
||||
|
|
|
@ -1124,7 +1124,7 @@ static int WS2_recv( int fd, struct ws2_async *wsa )
|
|||
*
|
||||
* Handler for overlapped recv() operations.
|
||||
*/
|
||||
static NTSTATUS WS2_async_recv( void* user, IO_STATUS_BLOCK* iosb, NTSTATUS status, ULONG_PTR *total )
|
||||
static NTSTATUS WS2_async_recv( void* user, IO_STATUS_BLOCK* iosb, NTSTATUS status, ULONG *total )
|
||||
{
|
||||
ws2_async* wsa = user;
|
||||
int result = 0, fd;
|
||||
|
@ -1225,7 +1225,7 @@ static int WS2_send( int fd, struct ws2_async *wsa )
|
|||
*
|
||||
* Handler for overlapped send() operations.
|
||||
*/
|
||||
static NTSTATUS WS2_async_send(void* user, IO_STATUS_BLOCK* iosb, NTSTATUS status, ULONG_PTR *total )
|
||||
static NTSTATUS WS2_async_send(void* user, IO_STATUS_BLOCK* iosb, NTSTATUS status, ULONG *total )
|
||||
{
|
||||
ws2_async* wsa = user;
|
||||
int result = 0, fd;
|
||||
|
@ -1280,7 +1280,7 @@ static NTSTATUS WS2_async_send(void* user, IO_STATUS_BLOCK* iosb, NTSTATUS statu
|
|||
*
|
||||
* Handler for shutdown() operations on overlapped sockets.
|
||||
*/
|
||||
static NTSTATUS WS2_async_shutdown( void* user, PIO_STATUS_BLOCK iosb, NTSTATUS status )
|
||||
static NTSTATUS WS2_async_shutdown( void* user, PIO_STATUS_BLOCK iosb, NTSTATUS status, ULONG *total )
|
||||
{
|
||||
ws2_async* wsa = user;
|
||||
int fd, err = 1;
|
||||
|
@ -1300,6 +1300,7 @@ static NTSTATUS WS2_async_shutdown( void* user, PIO_STATUS_BLOCK iosb, NTSTATUS
|
|||
status = err ? wsaErrno() : STATUS_SUCCESS;
|
||||
break;
|
||||
}
|
||||
*total = 0;
|
||||
iosb->u.Status = status;
|
||||
return status;
|
||||
}
|
||||
|
@ -2647,7 +2648,8 @@ int WINAPI WS_select(int nfds, WS_fd_set *ws_readfds,
|
|||
}
|
||||
|
||||
/* helper to send completion messages for client-only i/o operation case */
|
||||
static void WS_AddCompletion( SOCKET sock, ULONG_PTR CompletionValue, NTSTATUS CompletionStatus, ULONG_PTR Information )
|
||||
static void WS_AddCompletion( SOCKET sock, ULONG_PTR CompletionValue, NTSTATUS CompletionStatus,
|
||||
ULONG Information )
|
||||
{
|
||||
NTSTATUS status;
|
||||
|
||||
|
|
|
@ -273,7 +273,7 @@ typedef union
|
|||
struct
|
||||
{
|
||||
enum apc_type type;
|
||||
unsigned int (*func)(void*, void*, unsigned int, unsigned long *);
|
||||
unsigned int (*func)(void*, void*, unsigned int, unsigned int *);
|
||||
void *user;
|
||||
void *sb;
|
||||
unsigned int status;
|
||||
|
@ -358,7 +358,7 @@ typedef union
|
|||
{
|
||||
enum apc_type type;
|
||||
unsigned int status;
|
||||
unsigned long total;
|
||||
unsigned int total;
|
||||
} async_io;
|
||||
struct
|
||||
{
|
||||
|
@ -4227,7 +4227,7 @@ struct add_completion_request
|
|||
obj_handle_t handle;
|
||||
apc_param_t ckey;
|
||||
apc_param_t cvalue;
|
||||
unsigned long information;
|
||||
unsigned int information;
|
||||
unsigned int status;
|
||||
};
|
||||
struct add_completion_reply
|
||||
|
@ -4247,7 +4247,7 @@ struct remove_completion_reply
|
|||
struct reply_header __header;
|
||||
apc_param_t ckey;
|
||||
apc_param_t cvalue;
|
||||
unsigned long information;
|
||||
unsigned int information;
|
||||
unsigned int status;
|
||||
};
|
||||
|
||||
|
@ -4286,7 +4286,7 @@ struct add_fd_completion_request
|
|||
obj_handle_t handle;
|
||||
apc_param_t cvalue;
|
||||
unsigned int status;
|
||||
unsigned long information;
|
||||
unsigned int information;
|
||||
};
|
||||
struct add_fd_completion_reply
|
||||
{
|
||||
|
|
|
@ -234,7 +234,7 @@ void async_set_timeout( struct async *async, timeout_t timeout, unsigned int sta
|
|||
}
|
||||
|
||||
/* store the result of the client-side async callback */
|
||||
void async_set_result( struct object *obj, unsigned int status, unsigned long total )
|
||||
void async_set_result( struct object *obj, unsigned int status, unsigned int total )
|
||||
{
|
||||
struct async *async = (struct async *)obj;
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ struct comp_msg
|
|||
struct list queue_entry;
|
||||
apc_param_t ckey;
|
||||
apc_param_t cvalue;
|
||||
unsigned long information;
|
||||
unsigned int information;
|
||||
unsigned int status;
|
||||
};
|
||||
|
||||
|
@ -142,7 +142,7 @@ struct completion *get_completion_obj( struct process *process, obj_handle_t han
|
|||
}
|
||||
|
||||
void add_completion( struct completion *completion, apc_param_t ckey, apc_param_t cvalue,
|
||||
unsigned int status, unsigned long information )
|
||||
unsigned int status, unsigned int information )
|
||||
{
|
||||
struct comp_msg *msg = mem_alloc( sizeof( *msg ) );
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ extern struct object *create_dir_obj( struct fd *fd );
|
|||
|
||||
extern struct completion *get_completion_obj( struct process *process, obj_handle_t handle, unsigned int access );
|
||||
extern void add_completion( struct completion *completion, apc_param_t ckey, apc_param_t cvalue,
|
||||
unsigned int status, unsigned long information );
|
||||
unsigned int status, unsigned int information );
|
||||
|
||||
/* serial port functions */
|
||||
|
||||
|
@ -138,7 +138,7 @@ extern void free_async_queue( struct async_queue *queue );
|
|||
extern struct async *create_async( struct thread *thread, struct async_queue *queue,
|
||||
const async_data_t *data );
|
||||
extern void async_set_timeout( struct async *async, timeout_t timeout, unsigned int status );
|
||||
extern void async_set_result( struct object *obj, unsigned int status, unsigned long total );
|
||||
extern void async_set_result( struct object *obj, unsigned int status, unsigned int total );
|
||||
extern int async_waiting( struct async_queue *queue );
|
||||
extern void async_terminate( struct async *async, unsigned int status );
|
||||
extern void async_wake_up( struct async_queue *queue, unsigned int status );
|
||||
|
|
|
@ -289,7 +289,7 @@ typedef union
|
|||
struct
|
||||
{
|
||||
enum apc_type type; /* APC_ASYNC_IO */
|
||||
unsigned int (*func)(void*, void*, unsigned int, unsigned long *);
|
||||
unsigned int (*func)(void*, void*, unsigned int, unsigned int *);
|
||||
void *user; /* user pointer */
|
||||
void *sb; /* status block */
|
||||
unsigned int status; /* I/O status */
|
||||
|
@ -374,7 +374,7 @@ typedef union
|
|||
{
|
||||
enum apc_type type; /* APC_ASYNC_IO */
|
||||
unsigned int status; /* new status of async operation */
|
||||
unsigned long total; /* bytes transferred */
|
||||
unsigned int total; /* bytes transferred */
|
||||
} async_io;
|
||||
struct
|
||||
{
|
||||
|
@ -3034,7 +3034,7 @@ enum message_type
|
|||
obj_handle_t handle; /* port handle */
|
||||
apc_param_t ckey; /* completion key */
|
||||
apc_param_t cvalue; /* completion value */
|
||||
unsigned long information; /* IO_STATUS_BLOCK Information */
|
||||
unsigned int information; /* IO_STATUS_BLOCK Information */
|
||||
unsigned int status; /* completion result */
|
||||
@END
|
||||
|
||||
|
@ -3045,7 +3045,7 @@ enum message_type
|
|||
@REPLY
|
||||
apc_param_t ckey; /* completion key */
|
||||
apc_param_t cvalue; /* completion value */
|
||||
unsigned long information; /* IO_STATUS_BLOCK Information */
|
||||
unsigned int information; /* IO_STATUS_BLOCK Information */
|
||||
unsigned int status; /* completion result */
|
||||
@END
|
||||
|
||||
|
@ -3071,7 +3071,7 @@ enum message_type
|
|||
obj_handle_t handle; /* async' object */
|
||||
apc_param_t cvalue; /* completion value */
|
||||
unsigned int status; /* completion status */
|
||||
unsigned long information; /* IO_STATUS_BLOCK Information */
|
||||
unsigned int information; /* IO_STATUS_BLOCK Information */
|
||||
@END
|
||||
|
||||
|
||||
|
|
|
@ -3745,7 +3745,7 @@ static void dump_add_completion_request( const struct add_completion_request *re
|
|||
fprintf( stderr, " handle=%04x,", req->handle );
|
||||
fprintf( stderr, " ckey=%lx,", req->ckey );
|
||||
fprintf( stderr, " cvalue=%lx,", req->cvalue );
|
||||
fprintf( stderr, " information=%lx,", req->information );
|
||||
fprintf( stderr, " information=%08x,", req->information );
|
||||
fprintf( stderr, " status=%08x", req->status );
|
||||
}
|
||||
|
||||
|
@ -3758,7 +3758,7 @@ static void dump_remove_completion_reply( const struct remove_completion_reply *
|
|||
{
|
||||
fprintf( stderr, " ckey=%lx,", req->ckey );
|
||||
fprintf( stderr, " cvalue=%lx,", req->cvalue );
|
||||
fprintf( stderr, " information=%lx,", req->information );
|
||||
fprintf( stderr, " information=%08x,", req->information );
|
||||
fprintf( stderr, " status=%08x", req->status );
|
||||
}
|
||||
|
||||
|
@ -3784,7 +3784,7 @@ static void dump_add_fd_completion_request( const struct add_fd_completion_reque
|
|||
fprintf( stderr, " handle=%04x,", req->handle );
|
||||
fprintf( stderr, " cvalue=%lx,", req->cvalue );
|
||||
fprintf( stderr, " status=%08x,", req->status );
|
||||
fprintf( stderr, " information=%lx", req->information );
|
||||
fprintf( stderr, " information=%08x", req->information );
|
||||
}
|
||||
|
||||
static void dump_get_window_layered_info_request( const struct get_window_layered_info_request *req )
|
||||
|
|
|
@ -29,7 +29,6 @@ my %formats =
|
|||
"unsigned char" => [ 1, 1, "%02x" ],
|
||||
"unsigned short"=> [ 2, 2, "%04x" ],
|
||||
"unsigned int" => [ 4, 4, "%08x" ],
|
||||
"unsigned long" => [ 4, 4, "%lx" ],
|
||||
"void*" => [ 4, 4, "%p" ],
|
||||
"data_size_t" => [ 4, 4, "%u" ],
|
||||
"obj_handle_t" => [ 4, 4, "%04x" ],
|
||||
|
|
Loading…
Reference in New Issue