我可以在C#中毫无问题地读取LTO磁带。
每个盒带中还有一个盒带存储器(LTO-CM)。http://en.wikipedia.org/wiki/Linear_Tape-Open
我如何在C#或C中读/写这个芯片中的一些字节?
C中有一个项目:https://github.com/scangeo/lto-cm
它是用来读写应用程序或用户应该使用的"文本属性"的。大多数其他字段是为驱动器和磁带供应商及制造商保留的。
它通过SCSI命令使用集成在磁带驱动器中的读卡器。
目前,它已经在HP和IBM LTO-4驱动器上进行了测试,可能需要对其他硬件进行一些调整。由于某些原因,它也只能与某些SCSI卡配合使用。
我们用它来写一个标识磁带的磁带标签,并提供磁带的完整MD5校验和,以便在写入整个磁带后进行未来的完整性检查。
在C#和其他编程语言/框架中,似乎都没有读取LTO盒式内存的通用方法。
只有在.NET中编写的特定驱动器型号的工具才能用于此目的。你可以在制造商的网站上找到它。
根据这篇来自ADSM.ORG的帖子:
为了读取CM[CartridgeMemory]内容,我们需要访问它通过特定驱动器的接口,而不是CM的API它本身
访问该信息的方法可能使用专有每个驱动器制造商的扩展。我的是HP驱动器,HP有磁带工具包。
尽管如此,根据ADSM.ORG网站Richard Sims的回答,您仍然可以使用SCSI命令访问盒式存储器:
供应商不认为客户应该访问介质辅助存储器(MAM)-的行业通用名称一种盒式非易失性存储芯片,用于跟踪使用情况和其他信息。
手册"IBM TotalStorage LTO Ultrium磁带机-SCSI参考"(GA32-4050)充分描述了他们的MAM以及如何通过SCSI读写它命令。
设备驱动程序编程手册(在本例中为"IBM Ultrium设备驱动程序-编程参考(GC35-0483))提供了许多ioctl使程序员更容易调用SCSI解析的函数命令;但在这种情况下,我没有看到用于获取MAM数据的准备好的操作。
这些ioctl操作是方便的dandyntutil和tapeutil命令调用以获取信息,我在他们的文档中没有看到任何内容表明他们可以返回它(尽管它可能是从其他操作隐式返回的)。
这里是另一个用于读取LTO盒式内存的Linux软件。该软件支持超过lto-cm的更多属性。
此外,您可以使用通用RFID读卡器,如Proxmark3或ACR122u,而不是LTO驱动器。
https://github.com/RfidResearchGroup/proxmark3
https://github.com/philpem/nfc-ltocm