Windows IO优先级为的SetFileInformationByHandle工作不正常

Windows IO优先级为的SetFileInformationByHandle工作不正常,windows,io,Windows,Io,我想在不更改线程优先级的情况下将文件IO设置为低优先级,因此我使用SetFileInformationByHandle,如下所示: FILE_IO_PRIORITY_HINT_INFO priorityHint; priorityHint.PriorityHint = IoPriorityHintVeryLow; bool result = SetFileInformationByHandle(desHandle, FileIoPriorityHintInfo, &pr

我想在不更改线程优先级的情况下将文件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);
while()
{
  ....
  if (!WriteFile(desHandle, startPtr, numOfEachWrite, reinterpret_cast<LPDWORD>         (&numOfBytesWritten), NULL))![enter image description here][1]
{}
...
}
每次我向desHandle写入4kb数据时,如下所示:

HANDLE desHandle = CreateFile(desPath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL,     CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
while()
{
  ....
  if (!WriteFile(desHandle, startPtr, numOfEachWrite, reinterpret_cast<LPDWORD>         (&numOfBytesWritten), NULL))![enter image description here][1]
{}
...
}

但是,当我使用process monitor仅查找优先级较低的前4kb数据时,其他所有数据都具有正常优先级

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