【问题标题】:NtQueryInformationFile returns incorrect allocation sizeNtQueryInformationFile 返回不正确的分配大小
【发布时间】:2016-08-30 18:46:25
【问题描述】:

我使用NtQueryInformationFileFILE_STANDARD_INFORMATION 结构来检索文件的分配大小。但对于小文件,它返回不正确的1 结果。例如,大小为 1 字节的文本文件返回 8 字节的分配大小,而不是 4096 字节。问题出在哪里?


1我假设这个值不正确,因为资源管理器(在我的情况下是在 Windows XP Checked Build 上) 磁盘上的大小报告更高的数字(4096 字节对于大小为 1) 的文件。

【问题讨论】:

    标签: winapi filesize ntdll


    【解决方案1】:

    EndOfFile 成员中的文件大小。 AllocationSize - 这是为文件分配了多少磁盘空间 -

    通常,该值是扇区或簇大小的倍数 底层物理设备。

    【讨论】:

    • 谢谢。但这如何回答我的问题?示例:我对 1024 字节大小的文件没有任何问题 - 返回 4096 字节,但对于 1 字节文件大小返回 8 字节而不是 4096 字节。
    • 非常简单 - 如果您需要文件大小 - 查找 EndOfFile 成员 - 这里正是文件大小
    • 好的,明白 - 但这已经是 FS 内部的了。说如果文件大小
    • 问题是计算分配大小,我如何信任 NtQueryInformationFile,小文件何时返回不正确的分配大小?这个“功能”记录在哪里?
    • NTFS 可以在 MFT 本身中存储小文件。
    猜你喜欢
    • 2019-01-20
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多