文件如何在低级别复制?

时间:2009-12-25 19:33:27

标签: winapi hardware low-level file-copying

我有一个小问题:

例如,我正在使用.NET Framework中的System.IO.File.Copy()方法。此方法是WinAPI的CopyFile()函数的托管包装器。但CopyFile函数如何工作?它与HDD的固件交互,或者可能通过Assembler或其他某些操作执行其他操作......

从最高级到最低级看起来如何?

3 个答案:

答案 0 :(得分:9)

答案 1 :(得分:5)

这是一个问题要求或一个非常长的答案,但我正在努力使其简短。

基本上,.NET Framework包含一些“本机”调用,这些调用是在较低级别的库中处理的。这些较低级别的调用通常包含在缓冲区逻辑中,以隐藏复杂的内容,例如同步文件内容。

下面是本机级别,与OS内核交互。内核是任何操作系统的核心,然后将您的高级指令转换为您的硬件可以理解的内容。例如,Windows和Linux都使用硬件抽象层,这是一个隐藏通用接口背后的硬件特定细节的系统。因此,为特定设备编写驱动程序只是实现某些设备必须提供的所有方法的任务。

在你的硬件上调用任何东西之前,文件系统就会被涉及,文件系统本身也会缓冲和缓存很多,但是再次透明,所以你甚至都没有注意到。调用队列中的最后一个元素是设备本身,同样,大多数设备符合某些标准(如SATA或IDE),因此可以以类似的方式进行接口。

我希望这会有所帮助: - )

答案 2 :(得分:2)

.NET框架调用Windows API。

Windows API具有跨各种文件系统管理文件的功能。

然后它取决于有问题的文件系统。请记住,它不一定是硬盘上的“普通”文件系统;它甚至可以是一个shell扩展,只是模拟驱动器并将数据保存在您的Gmail帐户中,或者其他任何内容。关键是Windows API中的相同文件操作函数被用作许多可能的较低数据层的抽象。

所以答案实际上取决于您感兴趣的文件系统类型。