server: Store full sized completion information on the server side. Take 2.
Dmitry Timoshkov
dmitry at baikal.ru
Fri Aug 23 05:37:51 CDT 2013
---
dlls/ntdll/tests/file.c | 5 -----
server/async.c | 4 ++--
server/completion.c | 4 ++--
server/file.h | 4 ++--
server/protocol.def | 6 +++---
5 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index e30ada0..744c3b2 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -1008,11 +1008,6 @@ static void test_iocp_setcompletion(HANDLE h)
if (get_msg(h))
{
ok( completionKey == CKEY_FIRST, "Invalid completion key: %lx\n", completionKey );
- /* FIXME: Remove once Wine is fixed */
- if (sizeof(size) > 4)
-todo_wine
- ok( ioSb.Information == size, "Invalid ioSb.Information: %lu\n", ioSb.Information );
- else
ok( ioSb.Information == size, "Invalid ioSb.Information: %lu\n", ioSb.Information );
ok( U(ioSb).Status == STATUS_INVALID_DEVICE_REQUEST, "Invalid ioSb.Status: %x\n", U(ioSb).Status);
ok( completionValue == CVALUE_FIRST, "Invalid completion value: %lx\n", completionValue );
diff --git a/server/async.c b/server/async.c
index ccddec7..017419d 100644
--- a/server/async.c
+++ b/server/async.c
@@ -241,7 +241,7 @@ void async_set_timeout( struct async *async, timeout_t timeout, unsigned int sta
}
static void add_async_completion( struct async_queue *queue, apc_param_t cvalue, unsigned int status,
- unsigned int information )
+ apc_param_t information )
{
if (status == STATUS_MORE_PROCESSING_REQUIRED)
return; /* The async callback has successfully finished but no completion should be reported */
@@ -262,7 +262,7 @@ static void add_async_completion( struct async_queue *queue, apc_param_t cvalue,
}
/* store the result of the client-side async callback */
-void async_set_result( struct object *obj, unsigned int status, unsigned int total, client_ptr_t apc )
+void async_set_result( struct object *obj, unsigned int status, apc_param_t total, client_ptr_t apc )
{
struct async *async = (struct async *)obj;
diff --git a/server/completion.c b/server/completion.c
index 948d7d1..cf891fe 100644
--- a/server/completion.c
+++ b/server/completion.c
@@ -82,7 +82,7 @@ struct comp_msg
struct list queue_entry;
apc_param_t ckey;
apc_param_t cvalue;
- unsigned int information;
+ apc_param_t information;
unsigned int status;
};
@@ -152,7 +152,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 int information )
+ unsigned int status, apc_param_t information )
{
struct comp_msg *msg = mem_alloc( sizeof( *msg ) );
diff --git a/server/file.h b/server/file.h
index ead356d..2a35979 100644
--- a/server/file.h
+++ b/server/file.h
@@ -143,7 +143,7 @@ extern struct dir *get_dir_obj( struct process *process, obj_handle_t handle, un
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 int information );
+ unsigned int status, apc_param_t information );
/* serial port functions */
@@ -157,7 +157,7 @@ extern struct async *create_async( struct thread *thread, struct async_queue *qu
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 int total, client_ptr_t apc );
+ apc_param_t total, client_ptr_t apc );
extern int async_queued( struct async_queue *queue );
extern int async_waiting( struct async_queue *queue );
extern void async_terminate( struct async *async, unsigned int status );
diff --git a/server/protocol.def b/server/protocol.def
index 8fd592e..5da9938 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3326,7 +3326,7 @@ enum coords_relative
obj_handle_t handle; /* port handle */
apc_param_t ckey; /* completion key */
apc_param_t cvalue; /* completion value */
- unsigned int information; /* IO_STATUS_BLOCK Information */
+ apc_param_t information; /* IO_STATUS_BLOCK Information */
unsigned int status; /* completion result */
@END
@@ -3337,7 +3337,7 @@ enum coords_relative
@REPLY
apc_param_t ckey; /* completion key */
apc_param_t cvalue; /* completion value */
- unsigned int information; /* IO_STATUS_BLOCK Information */
+ apc_param_t information; /* IO_STATUS_BLOCK Information */
unsigned int status; /* completion result */
@END
@@ -3362,8 +3362,8 @@ enum coords_relative
@REQ(add_fd_completion)
obj_handle_t handle; /* async' object */
apc_param_t cvalue; /* completion value */
+ apc_param_t information; /* IO_STATUS_BLOCK Information */
unsigned int status; /* completion status */
- unsigned int information; /* IO_STATUS_BLOCK Information */
@END
--
1.8.3.4
More information about the wine-patches
mailing list