Я пытаюсь записать массив символов на диск VHD с помощью libvhd (c ++). Но он выдает ошибку с номером ошибки -22 (-EINVAL / * Неверный аргумент * /). Нет проблем с открытием и чтением VHD-дисков с помощью libvhd, но я не знаю, в чем проблема при записи на него. Вот часть моего кода для написания:
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.
Я исправил проблему, используя posix_memalign для выделения памяти.
Других решений пока нет …