C-如何使用libc/winapi将DVD用作二进制BLOB



我最近在思考,每当我使用光盘时,我都会通过将图像刻录到其上,或通过格式化并像USB一样使用它来使用它。我从未将其用作原始存储介质将字节戳入/读取字节。

我现在很好奇是否可以将DVD用作二进制数据的斑点,我可以按照我的要求将其写入。

根据我的理解,如果我格式化它,则使用C写入DVD是微不足道的,这样我就可以像典型的C或D驱动器一样将其连接到(如果我可以将磁盘名称命名为C或D(我想(。

我很好奇我是否可以在不格式化磁盘的情况下做同样的事情,因此上面的唯一位是我写给的磁盘,或者默认的磁盘。

总而言之,我希望能够在未格式化的DVD-RW

上执行以下操作
  1. 在偏移中读取一堆字节到内存字节池中
  2. 在从内存字节池的偏移中覆盖一堆字节,而不会影响磁盘上的其他字节

如何实现?

提前感谢。

在Linux上,您只需打开块设备并进行足够对齐写字:

  • Documentation/cdrom/packet-writing.txt在内核来源

您只需要使用dvd+rw-format将媒体作为DVD RW进行格式化。这是一个相对简单的过程,因此您可以从该工具的源代码中提取它。

但是,根据内核文档,"足够一致的写作"在某种程度上取决于解释 - 规格说2个KIB,但有些驱动器需要更多的对齐方式。在此层上也没有磨损级别或扇区重新映射,因此好的结果确实需要您使用盘数据结构,这些数据结构反映了该技术在现实中更接近编写,而不是真正的随机访问。

最新更新