如何解决为什么DeviceIoControl有时不起作用错误= 2?
DISK_PERFORMANCE DiskPerformance = {0};
DWORD dwDiskInfoSize = 0;
for (int i = 0; i < 10; i++)
{
std::printf("Try %d th Open \\\\.\\c:\n",i);
HANDLE hDevice = CreateFile(L"\\\\.\\c:",FILE_SHARE_READ | FILE_SHARE_WRITE,//SYNCHRONIZE | FILE_READ_ATTRIBUTES,NULL,OPEN_EXISTING,NULL);
std::printf("hDevice = %p\n",hDevice);
if (hDevice == INVALID_HANDLE_VALUE)
{
std::printf("CreateFile failed = %d \n",GetLastError());
continue;
}
if (!DeviceIoControl(hDevice,IOCTL_DISK_PERFORMANCE,&DiskPerformance,sizeof(DiskPerformance),&dwDiskInfoSize,NULL))
{
CloseHandle(hDevice);
std::printf("DeviceIoControl failed = %d \n",GetLastError());
continue;
}
std::printf("QuDeviceIoControlery Success\n");
CloseHandle(hDevice);
Sleep(1000);
std::printf("\n\n");
}
我重新启动程序,大约95%的DeviceIoControl将得到error 2
,而5%的将得到正确的结果...。
我无法在另一台计算机上重现该错误,因为此代码可以100%在我的笔记本电脑(win10)上正常工作。
我的目标操作系统是Windows Server 2016。
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。