传递的是句柄,句柄的定义为 HDECINFO hDevInfo = INVALID_HANDLE_VALUE,具体使用则是SetupDiDestoryDeviceInfoList(hDevInfo)
时间: 2024-03-16 09:42:10 浏览: 16
如果你传递的是句柄,那么句柄的值应该是一个有效的设备信息列表句柄,而不是 `INVALID_HANDLE_VALUE`。`INVALID_HANDLE_VALUE` 是一个特殊的值,表示无效的句柄,如果你传递这个值给 `SetupDiDestoryDeviceInfoList` 函数,那么会引发一个异常。
你需要先创建一个设备信息列表,并将返回的句柄保存在 `hDevInfo` 变量中,然后使用这个句柄调用 `SetupDiDestoryDeviceInfoList` 函数来销毁这个设备信息列表,例如:
```
// 创建设备信息列表
HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
// 使用设备信息列表
// 销毁设备信息列表
SetupDiDestroyDeviceInfoList(hDevInfo);
```
注意,在调用 `SetupDiGetClassDevs` 函数之后,你需要检查返回的句柄是否有效,如果句柄无效,则说明函数调用失败,你需要根据错误码来查找错误原因。
相关问题
if(m_hCom == INVALID_HANDLE_VALUE)
这段代码是用来判断串口句柄是否打开成功,其中 `INVALID_HANDLE_VALUE` 是一个特殊的值,表示无效的句柄。如果打开串口失败,`CreateFile` 函数会返回 `INVALID_HANDLE_VALUE`,此时判断条件成立,代码块中的语句会被执行,一般是输出错误信息或者进行其他处理。如果打开串口成功,`m_hCom` 就是一个有效的串口句柄,可以通过该句柄进行串口通信。
m_hCom = INVALID_HANDLE_VALUE;
这也是一个IT类问题。这段代码的作用是将一个串口的句柄设置为无效句柄值(INVALID_HANDLE_VALUE)。在Windows操作系统中,当打开一个串口或其他资源时,如果返回的句柄值为无效句柄值(INVALID_HANDLE_VALUE),说明打开资源失败。因此,将一个句柄设置为无效句柄值可以表示该资源已经关闭或者打开失败。