【问题标题】:WriteFile Failure with error code 87 in 4096 Bytes per sector DiskWriteFile 失败,错误代码为 87,每扇区 4096 字节磁盘
【发布时间】:2013-02-19 09:58:35
【问题描述】:

WriteFile() 输入缓冲区大小 = 512 的 Win32 调用失败。当我尝试写入每个扇区字节数 = 4096.[3 TB 磁盘] 的磁盘时。输入缓冲区大小 = 4096 的相同 WriteFile 工作正常。,

任何机构都可以解释这种行为吗?

【问题讨论】:

  • 您使用的是什么操作系统?并非所有 Windows 都支持 4K 扇区大小。
  • 87L ERROR_INVALID_PARAMETER 参数不正确
  • 告诉我们更多关于你正在写什么类型的句柄。我们需要更多细节。不要害羞!
  • 您是否会使用 FILE_FLAG_NO_BUFFERING 打开此文件?

标签: c++ winapi visual-c++ disk hard-drive


【解决方案1】:

对于低级 I/O 操作,您的缓冲区必须是扇区大小的整数倍。在您的情况下,k*4096。很可能您的硬盘驱动器不是很久以前生产的。它们被称为“高级格式”,每个扇区有 4096 个字节。我的不介意我是否将其设置为 512,因为它很旧。尝试使用GetDiskFreeSpace 函数来了解有关您的硬盘的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2014-04-30
    • 2010-12-17
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多