CreateFile(L"\\?\\MyFirstDevice", GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 分析代码
时间: 2024-03-11 22:46:02 浏览: 19
这段代码使用CreateFile函数打开一个设备。该函数的第一个参数指定了设备的名称,这里是"\\?\MyFirstDevice",其中"\\?\"是一个特殊的前缀,表示使用完全限定路径名(Fully Qualified Path Name),这样可以避免路径名过长的问题。第二个参数指定了访问权限,这里是GENERIC_READ和GENERIC_WRITE,表示可以进行读和写操作。第三个参数是保留参数,应该设置为NULL。第四个参数指定了文件属性,这里是普通文件属性,应该设置为FILE_ATTRIBUTE_NORMAL。第五个参数指定了打开的方式,这里是OPEN_EXISTING,表示打开一个已经存在的文件或设备。第六个参数是保留参数,应该设置为NULL。
需要注意的是,这段代码的正确性还取决于MyFirstDevice设备是否存在,以及设备驱动程序是否正确地实现了相应的设备控制代码。如果设备不存在或者驱动程序没有正确实现设备控制代码,那么打开设备的操作将会失败。
相关问题
m_hCom = CreateFile(m_sPort,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
这段代码是用来打开一个串口的句柄,其中:
- `m_sPort` 是串口名称,比如 COM1;
- `GENERIC_READ | GENERIC_WRITE` 表示该串口句柄可读可写;
- `OPEN_EXISTING` 表示打开已经存在的串口;
- `FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED` 表示该文件可以使用异步 I/O 操作(overlapped I/O)。
hdevice = CreateFile(L"\\.\\MyFirstDevice", GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 在win10中运行
在Windows 10中,CreateFile函数打开设备对象的方式与之前的版本有所不同。在Windows 10中,需要将设备名称修改为"\\.\MyFirstDevice",也就是在前面添加一个".",表示使用当前命名空间。因此,正确的代码应该是:
```C++
hdevice = CreateFile(L"\\\\.\\MyFirstDevice", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
```
需要注意的是,如果设备对象存在于另一个会话中,或者需要管理员权限才能访问,那么打开设备对象的操作可能会失败。在这种情况下,需要以管理员身份运行程序,或者使用特殊的访问权限来打开设备对象。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)