c++ - 使用 `bdrv_pread(..)` 或替代品读取 qcow2 图像的内容

标签 c++ c qemu kvm

我想使用 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/

相关文章:

来自子类型的 C++ 模板特化

c++ - 为什么 std::sort() 比 std::make_heap() 快?

c - fwprintf 将回车符放在换行符之前

c - 如何在嵌入式C中生成UUID

QEMU - 代码流程 [ 指令缓存和 TCG]

arm - 使用 KVM 加速在 ARM 上运行 qemu

c++ - short 没有被正确打印 c++

c++ - 排序算法面试

c++ - 使用 libusb-win32 与 USB 转 DMX512 接口(interface)通信,找不到任何端点

linux - ubuntu 15.04 64 位中 qemu 0.14.1 的 makefile 错误