Patch for ReadFile with NULL hEvent

Eric Pouech pouech-eric at wanadoo.fr
Mon May 17 11:39:24 CDT 2004


> ...Windows doesn't do it this way, although according to the docs
> other members of the overlapped structure are modified by Windows.
Ok, we need to rewrite GetOverlappedResult to use the internal 
structures (and get the hEvent we might have created in ReadFile), 
instead of relying on the one from the overlapped struct itself

>>I'd rather say it's GetOverlappedResult which is to blame. If the
>>hEvent is NULL, then we shouldn't return any error (as we do) but
>>rather assume all wait operation succeed (if hEven is NULL, ReadFile
>>and WriteFile operations are synchronous, so calling
>>GetOverlappedResult is a no-op).
> 
> 
> This turns out not to be the case.  As long as lpOverlapped is
> supplied, a NULL hEvent will work fine and allows overlapped reads.
Could you also test it with opening a file (files and sockets semantics 
are somehow different)

> Ah, I didn't know that.  If we keep calling CreateEvent over and over
> again with a NULL parameter, will we eventually run out of some
> resource?  If so, it may still be best to construct a name, since
> calling CreateEvent with the same name twice will apparently avoid
> creating another event.
if you run out of resource with calling with a NULL parameter, you'll 
also get out of resource with constructing the name, so you don't need 
to bother here

> The attached test program uses overlapped reads with a NULL hEvent in
> the OVERLAPPED structure to connect to an IP address and port given on
> the command line.  Here's an example from Windows:
> 
>     C:>overlapped-test 216.12.213.139 25
>     Calling ReadFile
>     ReadFile returned ERROR_IO_PENDING, as expected
>     ov      .hEvent=00000000
>     Calling Sleep(2000)
>     Calling GetOverlappedResult
>     GetOverlappedresult read 85 bytes:
>     220 2search2.com ESMTP Sendmail 8.10.2-SOL3/8.10.2; Mon, 17 May 2004  11:58:26 -0400
just for fun, what gives without the Sleep ?
A+



More information about the wine-devel mailing list