From c40239d989075cecb2a0f58dbe122f6db2d19cf3 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 13 Mar 2015 17:02:35 +0900 Subject: [PATCH] ntoskrnl: Allow running user APC inside the device manager loop. --- dlls/ntoskrnl.exe/ntoskrnl.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 0ba26b21b2e..95dcdc9c4aa 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -244,10 +244,15 @@ NTSTATUS CDECL wine_ntoskrnl_main_loop( HANDLE stop_event ) /* restart with larger buffer */ break; case STATUS_PENDING: - if (WaitForMultipleObjects( 2, handles, FALSE, INFINITE ) == WAIT_OBJECT_0) + for (;;) { - HeapFree( GetProcessHeap(), 0, in_buff ); - return STATUS_SUCCESS; + DWORD ret = WaitForMultipleObjectsEx( 2, handles, FALSE, INFINITE, TRUE ); + if (ret == WAIT_OBJECT_0) + { + HeapFree( GetProcessHeap(), 0, in_buff ); + return STATUS_SUCCESS; + } + if (ret != WAIT_IO_COMPLETION) break; } break; } -- 2.11.4.GIT