各个朋友,我在 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 中调用。
不知道什么问题。
1
geelaw 2018-02-22 23:01:01 +08:00
我觉得你这种描述方式即使 Raymond Chen 也帮不了你
|
2
helloallen OP 简单点说就是 IoRegisterDeviceInterface 和 IoSetDeviceInterfaceState 都调用成功了,interface_name 和注册表中的值一致,但是在 winobj 中没有发现只想 /device/xxxx 的符号链接,通过 SetupDiGetDeviceInterfaceDetail 得到的值也是和 interface_name 一致的,但是 createfile 打开失败。
|
3
helloallen OP 简单点说就是 IoRegisterDeviceInterface 和 IoSetDeviceInterfaceState 都调用成功了,interface_name 和注册表中的值一致,但是在 winobj 中没有发现指向 /device/xxxx 的符号链接,通过 SetupDiGetDeviceInterfaceDetail 得到的值也是和 interface_name 一致的,但是 createfile 打开失败。
|