使用blktap / libvhd直接写入VHD磁盘

时间:2016-01-18 22:32:21

标签: c++ vhd

我尝试使用libvhd(c ++)将char数组写入vhd磁盘。但它错误的错误号为-22' (-EINVAL / *无效参数* /)。使用libvhd打开和读取vhd磁盘没有问题,但我不知道写入它的问题是什么。以下是我编写代码的一部分:

vhd_context_t *ctx = NULL;
int size,err;
int z;

char *buf =(char *)malloc(VHD_SECTOR_SIZE);
z=vhd_unix_open("/home/zahra/Desktop/zahra/macemu/sys.vhd", &size, false, &ctx);
printf("z: %d \n",z);
/*reading a sector from a vhd disk*/
if ((err = vhd_io_read(ctx,  buf, (uint64_t)0 ,(uint32_t) 1))){
        printf("vhd read error %d \n", err);

}
BIO_dump_fp (stdout, (const char *)buf, size_t (VHD_SECTOR_SIZE));
/*reading is OK*/
/*writing check*/
  char * plaintext= (char *)"This is a writing test";  
if ((err = vhd_io_write(ctx,plaintext ,(uint64_t)0 ,(uint32_t)1))) {
            printf("vhd write error %d\n", err);
            printf("vhd footer current size %lld\n", ctx->footer.curr_size);}

写入失败,并且' vhd写错误-22'。

1 个答案:

答案 0 :(得分:0)

我通过使用'posix_memalign'进行内存分配来解决问题。