diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index cf4edb714f6..42979d5884c 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -346,7 +346,7 @@ NTSTATUS WINAPI NtCreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATTRIB * Asynchronous file I/O * */ -typedef NTSTATUS async_callback_t( void *user, IO_STATUS_BLOCK *io, NTSTATUS status, void **apc, void **arg ); +typedef NTSTATUS async_callback_t( void *user, IO_STATUS_BLOCK *io, NTSTATUS status ); struct async_fileio { @@ -432,7 +432,7 @@ static async_data_t server_async( HANDLE handle, struct async_fileio *user, HAND } /* callback for irp async I/O completion */ -static NTSTATUS irp_completion( void *user, IO_STATUS_BLOCK *io, NTSTATUS status, void **apc, void **arg ) +static NTSTATUS irp_completion( void *user, IO_STATUS_BLOCK *io, NTSTATUS status ) { struct async_irp *async = user; ULONG information = 0; @@ -452,8 +452,6 @@ static NTSTATUS irp_completion( void *user, IO_STATUS_BLOCK *io, NTSTATUS status { io->u.Status = status; io->Information = information; - *apc = async->io.apc; - *arg = async->io.apc_arg; release_fileio( &async->io ); } return status; @@ -511,8 +509,7 @@ NTSTATUS FILE_GetNtStatus(void) /*********************************************************************** * FILE_AsyncReadService (INTERNAL) */ -static NTSTATUS FILE_AsyncReadService( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS FILE_AsyncReadService( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct async_fileio_read *fileio = user; int fd, needs_close, result; @@ -558,8 +555,6 @@ static NTSTATUS FILE_AsyncReadService( void *user, IO_STATUS_BLOCK *iosb, { iosb->u.Status = status; iosb->Information = fileio->already; - *apc = fileio->io.apc; - *arg = fileio->io.apc_arg; release_fileio( &fileio->io ); } return status; @@ -1118,8 +1113,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, void **apc, void **arg ) +static NTSTATUS FILE_AsyncWriteService( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct async_fileio_write *fileio = user; int result, fd, needs_close; @@ -1161,8 +1155,6 @@ static NTSTATUS FILE_AsyncWriteService( void *user, IO_STATUS_BLOCK *iosb, { iosb->u.Status = status; iosb->Information = fileio->already; - *apc = fileio->io.apc; - *arg = fileio->io.apc_arg; release_fileio( &fileio->io ); } return status; @@ -1843,8 +1835,7 @@ struct read_changes_fileio char data[1]; }; -static NTSTATUS read_changes_apc( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS read_changes_apc( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct read_changes_fileio *fileio = user; int size = 0; @@ -1914,8 +1905,6 @@ static NTSTATUS read_changes_apc( void *user, IO_STATUS_BLOCK *iosb, { iosb->u.Status = status; iosb->Information = size; - *apc = fileio->io.apc; - *arg = fileio->io.apc_arg; release_fileio( &fileio->io ); } return status; diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index e906898c1e6..c02a12ab19a 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -404,11 +404,10 @@ static BOOL invoke_apc( const apc_call_t *call, apc_result_t *result ) } case APC_ASYNC_IO: { - void *apc = NULL, *arg = NULL; IO_STATUS_BLOCK *iosb = wine_server_get_ptr( call->async_io.sb ); - NTSTATUS (**user)(void *, IO_STATUS_BLOCK *, NTSTATUS, void **, void **) = wine_server_get_ptr( call->async_io.user ); + NTSTATUS (**user)(void *, IO_STATUS_BLOCK *, NTSTATUS) = wine_server_get_ptr( call->async_io.user ); result->type = call->type; - result->async_io.status = (*user)( user, iosb, call->async_io.status, &apc, &arg ); + result->async_io.status = (*user)( user, iosb, call->async_io.status ); if (result->async_io.status != STATUS_PENDING) result->async_io.total = iosb->Information; break; diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 5bf04824344..9d27fabe1aa 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -470,7 +470,7 @@ static inline const char *debugstr_optval(const char *optval, int optlenval) * Async IO declarations ****************************************************************/ -typedef NTSTATUS async_callback_t( void *user, IO_STATUS_BLOCK *io, NTSTATUS status, void **apc, void **arg ); +typedef NTSTATUS async_callback_t( void *user, IO_STATUS_BLOCK *io, NTSTATUS status ); struct ws2_async_io { @@ -2399,8 +2399,7 @@ static int WS2_recv( int fd, struct ws2_async *wsa, int flags ) * * Handler for overlapped recv() operations. */ -static NTSTATUS WS2_async_recv( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS WS2_async_recv( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct ws2_async *wsa = user; int result = 0, fd; @@ -2437,12 +2436,7 @@ static NTSTATUS WS2_async_recv( void *user, IO_STATUS_BLOCK *iosb, { iosb->u.Status = status; iosb->Information = result; - if (wsa->completion_func) - { - *apc = ws2_async_apc; - *arg = wsa; - } - else + if (!wsa->completion_func) release_async_io( &wsa->io ); } return status; @@ -2454,13 +2448,11 @@ static NTSTATUS WS2_async_recv( void *user, IO_STATUS_BLOCK *iosb, * This function is used to finish the read part of an accept request. It is * needed to place the completion on the correct socket (listener). */ -static NTSTATUS WS2_async_accept_recv( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS WS2_async_accept_recv( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { - void *junk; struct ws2_accept_async *wsa = user; - status = WS2_async_recv( wsa->read, iosb, status, &junk, &junk ); + status = WS2_async_recv( wsa->read, iosb, status ); if (status == STATUS_PENDING) return status; @@ -2476,8 +2468,7 @@ static NTSTATUS WS2_async_accept_recv( void *user, IO_STATUS_BLOCK *iosb, * * This is the function called to satisfy the AcceptEx callback */ -static NTSTATUS WS2_async_accept( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS WS2_async_accept( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct ws2_accept_async *wsa = user; int len; @@ -2621,8 +2612,7 @@ static int WS2_send( int fd, struct ws2_async *wsa, int flags ) * * Handler for overlapped send() operations. */ -static NTSTATUS WS2_async_send( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS WS2_async_send( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct ws2_async *wsa = user; int result = 0, fd; @@ -2665,12 +2655,7 @@ static NTSTATUS WS2_async_send( void *user, IO_STATUS_BLOCK *iosb, if (status != STATUS_PENDING) { iosb->u.Status = status; - if (wsa->completion_func) - { - *apc = ws2_async_apc; - *arg = wsa; - } - else + if (!wsa->completion_func) release_async_io( &wsa->io ); } return status; @@ -2681,8 +2666,7 @@ static NTSTATUS WS2_async_send( void *user, IO_STATUS_BLOCK *iosb, * * Handler for shutdown() operations on overlapped sockets. */ -static NTSTATUS WS2_async_shutdown( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS WS2_async_shutdown( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct ws2_async_shutdown *wsa = user; int fd, err = 1; @@ -3040,8 +3024,7 @@ static NTSTATUS WS2_transmitfile_base( int fd, struct ws2_transmitfile_async *ws * * Asynchronous callback for overlapped TransmitFile operations. */ -static NTSTATUS WS2_async_transmitfile( void *user, IO_STATUS_BLOCK *iosb, - NTSTATUS status, void **apc, void **arg ) +static NTSTATUS WS2_async_transmitfile( void *user, IO_STATUS_BLOCK *iosb, NTSTATUS status ) { struct ws2_transmitfile_async *wsa = user; int fd;