我做了一个设备驱动程序。但是我的系统在删除设备对象时崩溃了。我认为符号链接已被删除,并且在尝试删除设备后崩溃,因为我在全局中看不到符号链接。我现在如何删除此设备。当我尝试从 Winobj.
我尝试再次启动驱动程序服务。打开服务时,我确实得到了一个句柄。但它不会现在开始。给出找不到指定文件的错误值。我工作得很好,我的意思是在这次崩溃之前启动驱动程序。
我是司机初学者,这样做是为了学习,请指导。
我做了一个设备驱动程序。但是我的系统在删除设备对象时崩溃了。我认为符号链接已被删除,并且在尝试删除设备后崩溃,因为我在全局中看不到符号链接。我现在如何删除此设备。当我尝试从 Winobj.
我尝试再次启动驱动程序服务。打开服务时,我确实得到了一个句柄。但它不会现在开始。给出找不到指定文件的错误值。我工作得很好,我的意思是在这次崩溃之前启动驱动程序。
我是司机初学者,这样做是为了学习,请指导。
我取自:Programming microsoft windows driver 2nd edition by woney 我希望这会有所帮助。
即插即用环境中设备的可移动性是文中提到的提前卸载问题的最终根源。您有责任避免将 IRP 发送到可能不再位于内存中的驱动程序,并防止 PnP 管理器卸载仍在处理您发送给该驱动程序的 IRP 的驱动程序。文本中显示了您如何履行该职责的一个方面:在对 IoCallDriver 的调用周围对 IoGetDeviceObjectPointer 返回的文件对象进行额外引用。在大多数驱动程序中,您可能仅在发送异步 IRP 时才需要额外的引用。在这种情况下,通常取消引用文件对象的代码可能位于与调用 IoCallDriver 异步运行的驱动程序的其他部分中——例如,在完成例程中,您必须为异步 IRP 安装。如果您发送同步 IRP,您更有可能以在 IRP 完成之前不取消引用文件对象的方式对驱动程序进行编码。
使用交互式启动选项,不要加载麻烦的驱动程序。然后,您可以尝试通过向驱动程序添加诊断工具或其他调试技术来确定潜在问题。