From: Eric K. <ek...@rz...> - 2002-09-01 12:42:39
|
"Royce Mitchell III" <ro...@ev...> wrote: > Here are the results: > > (atapi.c:782) TargetAddress ccc64482 TransferSize 512 > (atapi.c:782) TargetAddress ccc64482 TransferSize 512 > (atapi.c:782) TargetAddress c04dd78a TransferSize 53456 > > Kind of an odd transfer size on that last one... Well, it clearly shows that something is going wrong. In AtapiInterrupt() you will find some more DPRINT() macros. Enable one of them, by changing it to DPRINT1(), to get some more information about the failed data transfer. For example, enable the DPRINT() at line 718 to check the validity of the SRB (Scsi Request Block). The SRB should be the same for each valid interrupt of a data-transfer. Or enable the DPRINT()s at lines 757, 758 and 771 to check the progress of the current transfer. IsLastBlock should be TRUE at the last interrupt of a transfer. TransferLength is the number of bytes that will have to be transferred to complete the transfer. It should diminish by 512 (0x200) upon each interrupt. Your harddisk might generate an excessive interrupt after the data transfer has completed. In this case atapi.sys might not identify this interrupt as invalid. Eric |