Module: wine Branch: master Commit: 50975c81f0d595f6b8a683b861a9c4dd5c819c62 URL: http://source.winehq.org/git/wine.git/?a=commit;h=50975c81f0d595f6b8a683b861...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Mar 20 19:27:10 2007 +0100
server: Return the status from an async I/O APC call to the server.
---
dlls/ntdll/sync.c | 2 ++ include/wine/server_protocol.h | 7 ++++++- server/protocol.def | 5 +++++ server/trace.c | 4 ++++ 4 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index 1f7fad8..72d73bb 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -682,6 +682,8 @@ static BOOL invoke_apc( const apc_call_t *call, apc_result_t *result ) case APC_ASYNC_IO: NtCurrentTeb()->num_async_io--; call->async_io.func( call->async_io.user, call->async_io.sb, call->async_io.status ); + result->type = call->type; + result->async_io.status = ((IO_STATUS_BLOCK *)call->async_io.sb)->u.Status; break; case APC_VIRTUAL_ALLOC: result->type = call->type; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 93087cf..6c17242 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -338,6 +338,11 @@ typedef union { enum apc_type type; unsigned int status; + } async_io; + struct + { + enum apc_type type; + unsigned int status; void *addr; unsigned long size; } virtual_alloc; @@ -4694,6 +4699,6 @@ union generic_reply struct allocate_locally_unique_id_reply allocate_locally_unique_id_reply; };
-#define SERVER_PROTOCOL_VERSION 281 +#define SERVER_PROTOCOL_VERSION 282
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/protocol.def b/server/protocol.def index d335d0a..57e306f 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -352,6 +352,11 @@ typedef union enum apc_type type; struct { + enum apc_type type; /* APC_ASYNC_IO */ + unsigned int status; /* new status of async operation */ + } async_io; + struct + { enum apc_type type; /* APC_VIRTUAL_ALLOC */ unsigned int status; /* status returned by call */ void *addr; /* resulting address */ diff --git a/server/trace.c b/server/trace.c index b5aab1a..659ec28 100644 --- a/server/trace.c +++ b/server/trace.c @@ -179,6 +179,10 @@ static void dump_apc_result( const apc_result_t *result ) { case APC_NONE: break; + case APC_ASYNC_IO: + fprintf( stderr, "APC_ASYNC_IO,status=%s", + get_status_name( result->async_io.status ) ); + break; case APC_VIRTUAL_ALLOC: fprintf( stderr, "APC_VIRTUAL_ALLOC,status=%s,addr=%p,size=%lu", get_status_name( result->virtual_alloc.status ),