Bug in DLTTAPE.SYS -- no EOT warning?
In our backup code, when writing to tape we get an error 1129 (ERROR_EOM_OVERFLOW) instead
of an 1100 (ERROR_END_OF_MEDIA). At this point it's too late to close the session with a
WriteTapemark call.
If we query the drive/driver using GetTapeParameters with TAPE_GET_DRIVE_PARAMETERS we see
an EOTWarningZoneSize of 0, and also a TAPE_DRIVE_SET_EOT_WZ_SIZE of false. However, if we
ignore this bit and call SetTapeParameters with a non-zero EOTWarningZoneSize, the call
returns success. However, if we call GetTapeParameters again, the reported
EOTWarningZoneSize is still 0. However, if we now run a backup, we do get an EOT warning and
can successfully call WriteTapemark.
What gives? Testing has been done on a DLT8000. Same model connected to a machine running
our proprietary OS always reports EOT properly. Is this problem specific to DLT or endemic
to Windows (been tested on 2000 and 2003)?
It would be feasible to write workaround code if all the setting and reporting API's
functioned consistently, but they don't (just count the Howevers two paragraphs up...).
Please help.
--
Tom
|