当我开发PCIe通信接口时,我使用CreateFile&Readfile函数操作设备。但是当我试图设置句柄的超时时,我遇到了以下问题,这是我的代码,
HANDLE* device;
char device_path_process[MAX_PATH+1] = "";
...
*device = CreateFile(device_path_process, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if (*device == INVALID_HANDLE_VALUE) {
std::cout<< std::to_string(GetLastError()) << std::endl;
status = 2;
goto Exit;
}
COMMTIMEOUTS cto;
if(!GetCommTimeouts(*device, &cto)) {
std::cout<< std::to_string(GetLastError()) << std::endl;
status = 3;
goto Exit;
}
CreateFile函数工作正常,但当我想获得它的超时设置时,它返回错误代码50。
有人有想法吗?谢谢
最后,我通过更改驱动程序中的设置参数来实现与SetCommTimeout((相同的功能,从而解决了这个问题