了解程序/文件安装在硬盘的哪个位置

本文关键字:位置 硬盘 程序 文件 安装 了解 | 更新日期: 2023-09-27 18:21:35

假设我有一个文件:test.txt,并将其保存在硬盘上。

有没有办法确定文件保存在硬盘上的哪个(物理)位置?

例如,在硬盘的磁道10上的矢量12上。

我不知道我是否理解了上面的术语,但我希望你明白我的意思。

我想写一个程序,用户可以指向一个文件,程序就会找到文件在硬盘上的位置。类似于旧的碎片整理(它是Windows;),它显示磁盘的哪些部分正在使用。

这叫什么?它能实现吗?(我不是在寻找代码(尽管exmaples是可以的),而是在寻找是否可能)

附言:客户端将是Windows7(所以如果重要的话,可以考虑NTFS)。

了解程序/文件安装在硬盘的哪个位置

我敢肯定,在托管代码中进行这种低级别的磁盘I/o最多会很困难。这是一个做过类似事情的人:

http://codebrainz.ca/index.php/2010/05/23/low-level-disk-io-in-managed-net/

你为做这样的事情而写的任何东西都必须依赖于硬件:除非你知道你在和什么硬件说话,否则你不知道它是如何物理存储数据的(例如,USB记忆棒既没有盘片、轨道也没有扇区,也没有旋转。然而,从所有意图和目的来看,它似乎都是一个磁盘)。

通常,您会编写某种设备驱动程序来实现这一点。此链接

http://en.wikibooks.org/wiki/Windows_Programming/Device_Driver_Introduction

可能会有所帮助。

在Jeffrey Wall的WebLog中,您可以找到Defrag API C#包装器。他的GetFileMap方法似乎接近你所需要的。

这在C++中是可能的,所以只要进行一点互操作,就可以了。在MSDN中查找FSCTL_GET_RETRIEVAL_POINTERS,开始学习。