我想使用 QEMU 中的 bdrv_pread(...)
函数读取 .qcow2
图像的内容。
比如,我的图像的完整路径是 /path/to/myimage.qcow2
,我希望能够从该图像的特定偏移处读取“n”个字节的数据。现在 bdrv_pread
函数采用这些参数“BlockDriverState *bs, int64_t offset, void *buf, int count1
”,我该如何初始化 BlockDriverState
(设备?)来自图像的路径。除了 BlockDriverState
之外的所有其他参数对我来说都很清楚。
谢谢。
最佳答案
如果您的目标是从您自己的程序访问 qcow2 文件,我建议您不要尝试使用 QEMU 函数。这些将有很多与 QEMU 相关的状态,如果您只想读取 qcow2 文件的内容,则这些状态不是必需的。相反,您可以查看 qcow2 specification或者如果你想在更高的抽象层次上工作,你可以查看 libguestfs库,它声明它有一个 API 用于访问支持的 VM 磁盘格式(尽管我自己从未使用过它)。有一些示例代码 here这可以帮助您入门。
关于c++ - 使用 `bdrv_pread(..)` 或替代品读取 qcow2 图像的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30811865/