I've been trying to change the active partition of an LTO8 tape in Windows (7 & Server 2012 R2) using the following code snippet (which gcc compiles without any warnings):
DWORD partition= 2;
if(SetTapePosition(hTape, TAPE_LOGICAL_BLOCK, partition, 0, 0, FALSE) != NO_ERROR)
<irrelevant error code here>
which returns without any errors. But it doesn't change the partition. I can use the same function and handle to seek to various blocks within the first (default) partition, so I don't think that's the problem.
The tape is definitely partitioned, and I have no problem changing to the second partition under linux using the mt command.
Turns out the issue is with Quantum's device driver; if I force load HP's device driver, I can change the active partition without any issue.