Thanks for the speedy reply.
Mike McCormack wrote:
The wineserver may also change the status of the request to STATUS_SUCCESS after a certain timeout is reached. The problem is most likely that the timeout is not being calculated properly.
The code to do that is in server/async.c and server/serial.c.
I cannot actually find the place where that happens (setting the status to STATUS_SUCCESS), but I guess I will eventually.
The timeouts are set by the SetCommTimeouts call. Try using the +serial debug channel to see what timeouts are being set. The
Ok. I had to set +comm to get that info, and modified the code to dump the contents of the COMMTIMEOUTS structure:
trace:comm:SetCommTimeouts ReadIntervalTimeout=4294967295 trace:comm:SetCommTimeouts ReadTotalTimeoutMultiplier=0 trace:comm:SetCommTimeouts ReadTotalTimeoutConstant=0 trace:comm:SetCommTimeouts WriteTotalTimeoutMultiplier=0 trace:comm:SetCommTimeouts WriteTotalTimeoutConstant=5000
MSDN says this means to return immediately with whatever is there.
ReadFile command may also be important - check whether it is being called with an overlapped structure or not.
It is called with an overlapped structure: trace:file:ReadFile 0x88 0x42295ff1 1040 0x4081ace0 0x42295b5f ^^^^^^^^^^ regards, Izak