[Bug 44620] New: `Nt{WaitFor,Release}KeyedEvent()` don' t accept null handles, while Windows 7 does.
wine-bugs at winehq.org
wine-bugs at winehq.org
Mon Feb 26 23:06:44 CST 2018
https://bugs.winehq.org/show_bug.cgi?id=44620
Bug ID: 44620
Summary: `Nt{WaitFor,Release}KeyedEvent()` don't accept null
handles, while Windows 7 does.
Product: Wine
Version: 3.0
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ntdll
Assignee: wine-bugs at winehq.org
Reporter: lh_mouse at 126.com
Distribution: ---
Created attachment 60609
--> https://bugs.winehq.org/attachment.cgi?id=60609
testcase
Testcase (also attached as 'ntwaitforkeyedevent.c'):
------
#include <winternl.h>
#include <winnt.h>
#include <stdio.h>
__attribute__((__dllimport__, __stdcall__))
extern NTSTATUS NtWaitForKeyedEvent(HANDLE hKeyedEvent, void *pKey, BOOLEAN
bAlertable, const LARGE_INTEGER *pliTimeout);
int main(void){
LARGE_INTEGER liTimeout;
NTSTATUS lStatus;
liTimeout.QuadPart = -10000000;
printf("Waiting...\n");
lStatus = NtWaitForKeyedEvent(NULL, &lStatus, FALSE, &liTimeout);
printf("NtWaitForKeyedEvent() returned %08lx\n", lStatus);
return 0;
}
------
Compiling and running this program on Linux Mint 18.3 results in the following
output:
------
lh_mouse at lhmouse-ideapad-720S ~/桌面 $ x86_64-w64-mingw32-gcc
ntwaitforkeyedevent.c -Wall -Wextra -Wpedantic -lntdll && ./a.exe
Waiting...
NtWaitForKeyedEvent() returned c0000008
lh_mouse at lhmouse-ideapad-720S ~/桌面 $ wine --version
wine-3.0
lh_mouse at lhmouse-ideapad-720S ~/桌面 $
------
On Windows 7 `NtWaitForKeyedEvent()` returns `STATUS_TIMEOUT` i.e. it
succeeds:
------
E:\Desktop>x86_64-w64-mingw32-gcc ntwaitforkeyedevent.c -Wall -Wextra
-Wpedantic -lntdll && a.exe
Waiting...
NtWaitForKeyedEvent() returned 00000102
------
Passing null handles to `Nt{WaitFor,Release}KeyedEvent()` is how SRW locks and
condition variables are implemented on Windows 7. I presume that a handle to
the preallocated global keyed event with the name
'\KernelObjects\CritSecOutOfMemoryEvent' is used in this case.
At the moment <https://github.com/lhmouse/mcfgthread> expects the Windows
behavior and fails in Wine.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list