تمام سوالات سوالات بدون پاسخ سوال بپرسید

سلام به همه دوستان. در ادامه این سوال من تونستم به super block و اطلاعات اون دست پیدا کنم.حالا قصد دارم data block bitmap و inode bitmap رو از اون برای یکی از بلاک هام که اولیش هستش استخراج کنم و بصورت دو دویی نمایش بدم. این کد من هست :

#include <cstdlib>
#include <ext2fs/ext2fs.h>
#include <linux/fs.h>
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <fcntl.h>

using namespace std;
#define BASE_OFFSET 1024
#define BLOCK_OFFSET(block) (BASE_OFFSET + (block-1)*block_size)
#define DEVICE "/dev/sda6"

int block_size;

int open_device(struct ext2_super_block* super) {
    int fd;
    //    struct ext2_group_desc* group = (ext2_group_desc*) malloc(sizeof (struct ext2_group_desc));
    struct ext2_group_desc group_descr;
    //    struct ext2_super_block super;
    unsigned char *bitmapBlock, *bitmapInode;
    /* open USB device */
    fd = open(DEVICE, O_RDONLY); //opening the device for reading
    if (fd < 0) { //some kind of error occurred
        perror(DEVICE);
        exit(1); //we give up at this point
    }
    /* Now we read in Mr. Superblock */
    /* seeking across the ’disk’ to the superblock location */
    lseek(fd, BASE_OFFSET, SEEK_SET);
    /*actually reading in the bytes */
    read(fd, super, sizeof (struct ext2_super_block));
    /* Some sanity checks */
    /* Make sure we’re reading an EXT2 filesystem */
    if (super->s_magic != EXT2_SUPER_MAGIC) {
        fprintf(stderr, "Not an Ext2 filesystem!\n");
        exit(1);
    }
    block_size = 1024 << super->s_log_block_size;

    /* calculate number of block groups on the disk */
    unsigned int group_count =
            (super->s_blocks_count - 1) / super->s_blocks_per_group;
    /* calculate size of the group descriptor list in bytes */
    unsigned int descr_list_size =
            group_count * sizeof (struct ext2_group_desc);

    /* position head above the group descriptor block */
    // lseek(fd, 1024 + block_size, SEEK_SET);
    //read(fd, group_descr, sizeof (group_descr));

    bitmapBlock = (unsigned char*) malloc(block_size);
    /* allocate memory for the bitmap */
    //    lseek(fd, BLOCK_OFFSET(group_descr.bg_block_bitmap), SEEK_SET);

    lseek(fd, 1024 + 4096 + descr_list_size, SEEK_SET);
    read(fd, bitmapBlock, block_size);

    printf("%d", descr_list_size);

    return fd;
}

int main() {
    struct ext2_super_block devi_block;
    int file_descriptor;
    file_descriptor = open_device(&devi_block);
    return 0;

}

ممنون می شم اگر راهنماییم کنید که چطور می تونم اون رو چاپ کنم.

آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×79
  • ×55
  • ×5
  • ×2
  • پرسیده شده: 21 دسامبر '12, 16:09
  • بازدید: 841 بار
  • آخرین بروزرسانی: 21 دسامبر '12, 16:58

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها