【问题标题】:SetFileInformationByHandle with IO priority not working well具有 IO 优先级的 SetFileInformationByHandle 无法正常工作
【发布时间】:2014-10-28 16:41:46
【问题描述】:

我想在不改变线程优先级的情况下将文件 IO 设置为低优先级,所以我使用 SetFileInformationByHandle 如下:

FILE_IO_PRIORITY_HINT_INFO priorityHint;
priorityHint.PriorityHint = IoPriorityHintVeryLow;

bool result = SetFileInformationByHandle(desHandle,
    FileIoPriorityHintInfo,
    &priorityHint,
    sizeof(priorityHint));

我这样创建文件:

HANDLE desHandle = CreateFile(desPath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL,     CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL);

每次我将 4kb 数据写入 desHandle,如下所示:

while()
{
  ....
  if (!WriteFile(desHandle, startPtr, numOfEachWrite, reinterpret_cast<LPDWORD>         (&numOfBytesWritten), NULL))![enter image description here][1]
{}
...
}

但是当我使用进程监视器只查找低优先级的前 4kb 数据时,其他所有数据都具有正常优先级

【问题讨论】:

    标签: windows io


    【解决方案1】:

    您可能应该尝试非缓存 IO。在这种情况下,您的意图将完全传递给底层块级驱动程序。优先级毕竟是一个提示。

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 2017-05-19
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      相关资源
      最近更新 更多