I'm trying to write a c++/cli library around the IOCTL Win32 API to
manipulate my dell powervault 124t and its LTO drive (ibm ultrium-
I've no issue getting the handle to control those two devices and
issue some commands but when I do IOCTL_CHANGER_GET_PARAMETERS or
IOCTL_TAPE_GET_DRIVE_PARAMS, I don't get the information I would
For example when I execute IOCTL_CHANGER_GET_PARAMETERS, I get in the
GET_CHANGER_PARAMETERS structure, 1 for the FirstSlotNumber field and
16 for the NumberStorageElements field.
It doesn't look like an issue at first sight but FirstSlotNumber field
should have 0 as value instead of 1 because a
IOCTL_CHANGER_GET_ELEMENT_STATUS call on the element 16 with type
storage will fail (element doesn't exist or something like that). On
the other hand, the same call on the element 0 with storage type will
succeed. Am I missing something or I just have to deal with a dirty
hack in my library ?
With IOCTL_TAPE_GET_DRIVE_PARAMS, it's even funnier, I have a non zero
(true) value in the ECC field of the TAPE_GET_DRIVE_PARAMETERS which
means that ECC enabled but if I do a AND mask between featureslow
field and TAPE_DRIVE_ECC (as written in the msdn documentation) ECC is
not a supported feature. So who is right ?!? (according to the tape
drive specs, it should support ecc). Again, dirty hack ?!?
If you have any idea, don't hesitate.
J. De Gyns.
||12/15/2009 2:16:01 PM