有没有 Windows 驱动开发的筒子,请教一个问题

2018-02-22 22:39:08 +08:00
 helloallen

各个朋友,我在 XP 上使用 DDK 开发时遇到如下问题,帮忙看看。谢谢

我在 DeviceAdd 中调用了 IoRegisterDeviceInterface API,该函数的返回值为 0。

#define GUID_UART_INTERFACE GUID_DEVCLASS_PORTS

ret = IoRegisterDeviceInterface(port->pdo, &GUID_UART_INTERFACE, NULL, &port->interface_name);

ret = 0,在注册表中发现了 MACH\STSTEM\CURRENT\CONTROL\DEVICECLASS 下面发现了相应的键值,也返回了 interface_name。

但是 winobj 没有发现符号链接,在应用层可以枚举,枚举到的值和注册表中的相同,但 createfile 打开失败,找不到设备。

IoSetDeviceInterfaceState 也返回 0,但无法理解的是 IoSetDeviceInterfaceState 多次调用都是返回 0,根据 MSDN 应该第二次调用应该出错的。IoSetDeviceInterfaceState 在 IRP_MN_START_DEVICE 中调用。

不知道什么问题。

1219 次点击
所在节点    问与答
3 条回复
geelaw
2018-02-22 23:01:01 +08:00
我觉得你这种描述方式即使 Raymond Chen 也帮不了你
helloallen
2018-02-22 23:13:04 +08:00
简单点说就是 IoRegisterDeviceInterface 和 IoSetDeviceInterfaceState 都调用成功了,interface_name 和注册表中的值一致,但是在 winobj 中没有发现只想 /device/xxxx 的符号链接,通过 SetupDiGetDeviceInterfaceDetail 得到的值也是和 interface_name 一致的,但是 createfile 打开失败。
helloallen
2018-02-22 23:13:57 +08:00
简单点说就是 IoRegisterDeviceInterface 和 IoSetDeviceInterfaceState 都调用成功了,interface_name 和注册表中的值一致,但是在 winobj 中没有发现指向 /device/xxxx 的符号链接,通过 SetupDiGetDeviceInterfaceDetail 得到的值也是和 interface_name 一致的,但是 createfile 打开失败。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431775

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX