Thuật toán đo dung lượng của các phân vùng ổ cứng với 2 định dạng NTFS và FAT32

Chào mọi người, tình hình là mình sắp tới bảo vệ đồ án môn học môn này. Đề tài 1 mình làm xong rồi mà đề tài 2 này mình chưa làm xong. Tên đề tài 2 là:

  • Xây dựng chương trình đọc thông tin đĩa cứng với định dạng NTFS và FAT32
  • Xây dựng chương trình thực hiện các chức năng sau: đưa ra màn hình Ổ
    đĩa, tên ổ đĩa, số serial, trạng thái, định dạng, dung lượng, còn trống, số
    byte /sector, số sector/cluster.
  • Ngôn ngữ sử dụng: Visual C++
    Ở định dạng FAT32 mình đọc được tên ổ đĩa, số serial, định dạng, số byte/sector, số sector/cluster rồi, nó nằm hết ở sector đầu tiên của mỗi phân vùng. NTFS tương tự nhưng mình không biết tìm tên ổ đĩa (nhãn-label phân vùng) ở đâu, mình tìm trong sector đầu tiên chả thấy như FAT32.

Và cuối cùng là phần tính dung lượng và dung lượng còn trống, search trên mạng toàn bài viết dùng API của windows :)) thầy mình bảo phải tự viết thuật toán để tính không được dùng hàm của API.

Các bác nào biết làm những thứ còn thiếu như mình kể thì chỉ mình với, hoặc chỉ cái hướng cho mình cũng được, chứ giờ search hoài chả ra nản quá :cry:

2 Likes

NTFS và FAT32 là những định dạng do thằng Windows tạo ra, nên nếu ko dùng hàm Win32 API thì khó đấy, ko thể ngày 1 ngày 2 xây được! Cái này ko phải thuật toán mà nó liên quan đến kiến trúc máy tính ở dưới, nhiều khi phải dùng Assembly!

3 Likes

Mình tìm được cái này, tuy nhiên cũng dùng hàm của Windows thôi, mình nghĩ ko ai đi xây dựng lại cái này từ đầu cả, vô cùng khó! http://www.ntfs.com/guid-part-table.htm
Em về hỏi lại thầy em xem muốn làm cái đề tài này giới hạn tới đâu nhé!

2 Likes

Được dùng hàm của Win32 API nhưng mà không được dùng những hàm mà xài là có ngay kết quả ấy. Ví dụ tên, định dạng, số byte sector, … thì mình chỉ dùng 2 api là CreateFile và ReadFile để đọc sector đầu tiên rồi convert chuỗi byte ra thông tin, như thế thì mình cũng có tự tính toán chút ít chứ không phải ăn sẵn dùng hàm GetVolumeInfo của win32 api.

Anh tìm được cái này, hi vọng giúp dc em! http://www.cplusplus.com/forum/windows/18019/

Ở trường mình,có môn OPP còn có vụ đọc,phân tích cấu trúc file class,java mà không dùng java reflection api,chỉ dùng file reader.Chợt nghĩ,ủa vậy khác gì viết lại chương trình dịch

À truy cập vào sector phân vùng bằng c++ thì em làm đc rồi, em truy cập sector đầu tiên rồi parse chuỗi 512 byte để lấy thông tin của phân vùng, cơ mà truy cập xong rồi tính tổng dung lượng phân vùng với dung lượng còn trống thì chưa biết làm thế nào, dù sao cũng cảm ơn anh :smile:

1 Like

chào Anh.anh có thể cho em xin thuật toàn đề tài anh làm được không ạ?

Cho mình hỏi bạn làm được đề tài này chưa ạ, có thể cho mình tham khảo được không ạ?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?