具有IO优先级的SetFileInformationByHandle不能正常工作

时间:2014-09-04 03:35:52

标签: windows io

我想将文件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);

每次我像这样写deskandle 4kb数据:

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

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

1 个答案:

答案 0 :(得分:0)

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