[Bug 9988] New: IOCTL_SERIAL_WAIT_ON_MASK does not always return correct answer

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Oct 11 07:44:53 CDT 2007


http://bugs.winehq.org/show_bug.cgi?id=9988

           Summary: IOCTL_SERIAL_WAIT_ON_MASK does not always return correct
                    answer
           Product: Wine
           Version: 0.9.46.
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: wine-misc
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: tombrus at gmail.com


The io_control() function with IOCTL_SERIAL_WAIT_ON_MASK in dlls/ntdll/serial.c
does not seem to always return the equivalent status as windows.

Unfortunately I only have an proprietary windows application (no source) that
shows this. It is an application called FanControl shipped with a water cooling
control unit from Innovatek (germany). The application controls the unit via an
USB FTDI serial port. The application only works if there is such a device
available. Rather difficult to reproduce on the average system :(.

The fix is to remove a few lines of code from the wait_on() function:


    *events = check_events(fd, commio->evtmask,
                               &commio->irq_info, &commio->irq_info,
                               commio->mstat, commio->mstat);
    if (*events) goto out_now;

where the 'if' is the essential bit. The status returned to the caller will be
zero when the check_events() returns something. This seems to confuse the
windows application. When the above lines are taken out the returned code is
always "STATUS_PENDING" and the handling through wait_for_event() will always
return the right things to my windows application. 

The code mentioned above looks like a shortcut to avoid starting a workitem
with RtlQueueWorkItem(). My feeling is that this shortcut is not always valid.

I will attach a patch.


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list