Module: wine Branch: master Commit: c40239d989075cecb2a0f58dbe122f6db2d19cf3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c40239d989075cecb2a0f58dbe...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Mar 13 17:02:35 2015 +0900
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 0ba26b2..95dcdc9 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; }