Ntcreatefile allocationsize

时间:2012-12-25 11:22:12

标签: windows

AllocationSize参数的目的是什么? 在函数Ntcreatefile

AllocationSize使用非零值并使用NtClose关闭文件时, 实际文件大小不等于 AllocationSize

为什么?

这个参数似乎毫无用处。

由于

1 个答案:

答案 0 :(得分:4)

NtCreateFile()不对参数做任何特殊操作,它只是将其传递给MJ_CREATE请求中的文件系统驱动程序。你需要WDK才能看到它是如何被使用的。一个好看的是FAT驱动程序,你会发现在src / filesys / fastfat / w2k / create.c中使用的AllocationSize。跟随调用链进入allocsup.c,FatAllocateDiskSpace()。

预先知道预期的分配规模,机会比比皆是。它可以预先分配集群,磁盘驱动器头已经在正确的位置更新文件分配表。在消耗每个可用集群之前,当卷空间不足时,它可能会失败创建调用。相反,如果没有失败,将确保您可以写入文件而不会耗尽磁盘空间。只要你写的不比你要求的多。

当然,当您关闭文件时,文件大小将更新为写入的实际字节数。 AllocationSize只是一个提示。