Windows IO优先级为的SetFileInformationByHandle工作不正常
我想在不更改线程优先级的情况下将文件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
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。在这种情况下,您的意图将完全传递给底层块级驱动程序。优先级毕竟是一个暗示