2014-09-04 89 views
0

我想设置的文件IO在不改变线程的优先级低优先级,于是我就用SetFileInformationByHandle象下面这样:SetFileInformationByHandle与IO优先工作不正常

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数据时,所有其他优先级均为正常优先级

回答

0

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