createfile打开设备符号链接返回错误码2,系统找不到指定的文件 解决方案

博主写驱动程序时遇应用层打不开设备对象问题,检查代码无误且WinObj能找到设备仍无法打开,最终发现是AddDevice有问题。调用IoCreateDevice创建设备对象时,I/O管理器会设置标记,除DriverEntry外创建的设备对象需自行清除标记,清除后应用层可顺利打开。

这两天写驱动程序时遇到设备对象打不开的问题,在检查代码无误、WinObj可以找到设备的情况下无法打开设备,最后发现是AddDevice写的有问题。

调用 IoCreateDevice 创建设备对象时,I/O 管理器在 DEVICE_OBJECT 结构的 Flags 字段中设置 DO_DEVICE_INITIALIZING,防止其它组件在驱动程序完成初始化设备对象之前向设备发送 I/O。

DriverEntry 之外的任何例程中创建的设备对象,需要自行清除 DO_DEVICE_INITIALIZING。

只要在创建完设备对象之后清除掉DO_DEVICE_INITIALIZING标记,应用层就可以顺利打开该设备对象。

deviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值