2012-10-05 74 views
10

Tôi muốn cung cấp một cách để nhận ra khi một tệp lớn bị phân mảnh đến một mức độ nhất định và cảnh báo người dùng khi họ nên thực hiện chống phân mảnh. Ngoài ra, tôi muốn hiển thị cho họ một màn hình hiển thị trực quan thể hiện cách tệp thực sự được chia thành các phần trên đĩa.Làm cách nào để xác định mức độ tệp bị phân mảnh?

Tôi không cần biết làm thế nào để tính toán phân đoạn của nó như thế nào, hoặc cách hiển thị hình ảnh. Những gì tôi cần biết là hai điều: 1) cách xác định các cụm cụ thể trên bất kỳ đĩa nào chứa các phần của bất kỳ tệp cụ thể nào và 2) cách xác định tổng số cụm trên đĩa đó. Về cơ bản, tôi cần một danh sách tất cả các cụm chứa các phần của tệp này, và ở đâu trên đĩa, mỗi cụm đó đều nằm.

Hầu hết các tiện ích chống phân mảnh đều có hiển thị trực quan cho biết cách các tệp được trải đều trên đĩa. Màn hình của tôi sẽ hiển thị cách một tệp cụ thể được chia thành các vùng khác nhau của đĩa. Tôi chỉ cần biết làm thế nào tôi có thể lấy các dữ liệu cần thiết để cho tôi biết nơi các tập tin của cụm/lĩnh vực được đặt trên đĩa, vì vậy tôi có thể tiếp tục xác định cách phân mảnh nó được.

+0

Bạn đang tìm cách xác định (các) tệp trong một lĩnh vực cụ thể hay bạn đang tìm cách xác định các khu vực bị chiếm bởi một tệp nhất định? –

+0

Các lĩnh vực bị chiếm đóng bởi một tệp nhất định. –

+5

Đây là câu hỏi về hệ điều hành cơ bản (xem [NTFS] (http://en.wikipedia.org/wiki/NTFS)). Thông tin về vị trí vật lý của các tập tin trên đĩa liên quan đến (rất thấp) đi qua thông tin NTFS (cụ thể là MFT - xem 'Metafiles' trong trang liên kết). Đó là một câu hỏi rất rộng để hỏi ở đây. Nghiên cứu liên kết và nghiên cứu NTFS, và sau đó bạn có thể quay lại và đặt câu hỏi cụ thể, súc tích. :-) Bây giờ, bỏ phiếu để đóng không phải là một câu hỏi thực sự vì phạm vi rộng. (Tôi đã không downvote, tuy nhiên.) –

Trả lời

11

Bạn có thể sử dụng chức năng DeviceIoControl với mã kiểm soát FSCTL_GET_RETRIEVAL_POINTERS.

Các hoạt động FSCTL_GET_RETRIEVAL_POINTERS lấy một variably kích thước cấu trúc dữ liệu mô tả việc phân bổ và vị trí trên đĩa của một tập tin cụ thể . Cấu trúc mô tả ánh xạ giữa các số cụm ảo (VCN bù trừ trong không gian tệp hoặc luồng) và số cụm lôgíc (bù LCN trong không gian âm lượng).

+2

Khi bạn ở đó, hãy xem ['IOCTL_DISK_GET_DRIVE_GEOMETRY_EX'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365171%28v=vs.85%29.aspx) để đếm số ngành. –

+0

Tuyệt vời, có cấu trúc ở Delphi, giờ là lúc tôi giải mã danh sách khổng lồ các con số này thực sự có nghĩa là gì: D Cảm ơn bạn. –

Các vấn đề liên quan