• Zebediah Figura's avatar
    ntdll: Avoid accessing the I/O status block in wait_async(). · 97afac46
    Zebediah Figura authored
    Steam uses WSASend() with completion ports, reusing OVERLAPPED structures as
    soon as they are returned from GetQueuedCompletionStatus(). Since completion is
    queued during the select request in wait_async(), the I/O status block can be
    reused even before the call to NtDeviceIoControl exits.
    
    This works fine with current Wine, because WSASend() doesn't access the I/O
    status block after queuing completion. However, a patch that changes it to use
    wait_async() like other async requests causes NtDeviceIoControlFile to
    consistently return garbage status codes.
    Signed-off-by: 's avatarZebediah Figura <z.figura12@gmail.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    97afac46
Name
Last commit
Last update
dlls Loading commit data...
documentation Loading commit data...
fonts Loading commit data...
include Loading commit data...
libs Loading commit data...
loader Loading commit data...
nls Loading commit data...
po Loading commit data...
programs Loading commit data...
server Loading commit data...
tools Loading commit data...
.editorconfig Loading commit data...
.mailmap Loading commit data...
ANNOUNCE Loading commit data...
AUTHORS Loading commit data...
COPYING.LIB Loading commit data...
LICENSE Loading commit data...
LICENSE.OLD Loading commit data...
MAINTAINERS Loading commit data...
Makefile.in Loading commit data...
README Loading commit data...
VERSION Loading commit data...
aclocal.m4 Loading commit data...
configure Loading commit data...
configure.ac Loading commit data...