我的代码使用CreateFile打开虚拟NIC设备。之后,我在CreateFile返回的句柄上调用SetHandleInformation,以避免泄漏子进程的句柄。问题是,SetHandleInformation失败,错误代码为5(ERROR_ACCESS_DENIED)。 以下是我打开设备并调用SetHandleInformation的代码:
handle = CreateFile(dev_name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED,NULL);
if (handle != INVALID_HANDLE_VALUE) {
if (!(SetHandleInformation(handle, HANDLE_FLAG_INHERIT, 0))) {
printf("SetHandleInformation error, code: %u\n", GetLastError());
}
}
我在Windows 10上观察到此故障。我的应用程序以管理员权限运行。即使在此失败之后,我也能够成功地使用句柄进行读写,这表明CreateFile工作正常。
这种失败的可能原因是什么?我找不到有关错误代码5的SetHandleInformation失败的更多信息。