Alexandre Julliard : ntoskrnl: Allow running user APC inside the device manager loop.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Mar 13 08:44:25 CDT 2015
Module: wine
Branch: master
Commit: c40239d989075cecb2a0f58dbe122f6db2d19cf3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c40239d989075cecb2a0f58dbe122f6db2d19cf3
Author: Alexandre Julliard <julliard at 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;
}
More information about the wine-cvs
mailing list