https://bugs.winehq.org/show_bug.cgi?id=47424
--- Comment #7 from Zebediah Figura z.figura12@gmail.com --- I don't think that's how it works, no. The documentation clearly states that resid "is 'dxfer_len' less the number of bytes actually transferred." In your example dxfer_len is 20480, so the driver should set resid to 20480 - 2048 = 18432, causing us to return 20480 - 18432 = 2048 in DataTransferLength. A quick skim of the Linux source suggests this is indeed how scsi drivers behave, though I won't claim to have any familiarity with that code.