ntdll: Use callback stored in async user for calling APC_ASYNC_IO.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b82782a9c1
commit
05410c4aa6
|
@ -406,10 +406,9 @@ static BOOL invoke_apc( const apc_call_t *call, apc_result_t *result )
|
||||||
{
|
{
|
||||||
void *apc = NULL, *arg = NULL;
|
void *apc = NULL, *arg = NULL;
|
||||||
IO_STATUS_BLOCK *iosb = wine_server_get_ptr( call->async_io.sb );
|
IO_STATUS_BLOCK *iosb = wine_server_get_ptr( call->async_io.sb );
|
||||||
NTSTATUS (*func)(void *, IO_STATUS_BLOCK *, NTSTATUS, void **, void **) = wine_server_get_ptr( call->async_io.func );
|
NTSTATUS (**user)(void *, IO_STATUS_BLOCK *, NTSTATUS, void **, void **) = wine_server_get_ptr( call->async_io.user );
|
||||||
result->type = call->type;
|
result->type = call->type;
|
||||||
result->async_io.status = func( wine_server_get_ptr( call->async_io.user ),
|
result->async_io.status = (*user)( user, iosb, call->async_io.status, &apc, &arg );
|
||||||
iosb, call->async_io.status, &apc, &arg );
|
|
||||||
if (result->async_io.status != STATUS_PENDING)
|
if (result->async_io.status != STATUS_PENDING)
|
||||||
{
|
{
|
||||||
result->async_io.total = iosb->Information;
|
result->async_io.total = iosb->Information;
|
||||||
|
|
Loading…
Reference in New Issue