1

AllocationSize函数中参数的目的是什么Ntcreatefile

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

为什么 ?

这个参数好像没什么用。

谢谢

4

1 回答 1

4

NtCreateFile() 对参数没有做任何特殊的事情,它只是将它传递给 MJ_CREATE 请求中的文件系统驱动程序。您将需要 WDK 来了解它是如何被使用的。一个值得一看的是 FAT 驱动程序,您会发现 src/filesys/fastfat/w2k/create.c 中使用的 AllocationSize。按照调用链进入 allocsup.c,FatAllocateDiskSpace()。

预先了解预期分配大小的机会比比皆是。它可以在磁盘驱动器磁头已经在正确位置更新文件分配表的情况下预先分配簇。当卷在使用每个可用集群之前空间不足时,它可能会导致创建调用失败。相反,让它不会失败将确保您可以写入文件而不会耗尽磁盘空间。只要您写的内容不超过您的要求。

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

于 2012-12-25T14:25:42.523 回答