【问题标题】:Unload a device卸载设备
【发布时间】:2013-09-26 06:25:00
【问题描述】:

我做了一个设备驱动程序。但是我的系统在删除设备对象时崩溃了。我认为符号链接已被删除,并且在尝试删除设备后崩溃,因为我在全局中看不到符号链接。 我现在如何删除此设备。当我尝试从 Winobj 的设备下打开列出的 Mydriver 时,它还会给我一个错误弹出窗口(系统找不到指定的文件 Device\Mydriver)。

我尝试再次启动驱动程序服务。打开服务时,我确实得到了一个句柄。但它不会现在开始。给出找不到指定文件的错误值。我工作正常,我的意思是在这次崩溃之前启动驱动程序。

我是新手司机,这样做是为了学习,请指导。

【问题讨论】:

    标签: windows device-driver drivers


    【解决方案1】:

    我取自:Programming microsoft windows driver 2nd edition by woney 我希望这会有所帮助。

    即插即用环境中设备的可移除性是提前卸载问题的最终根源 文中提到。您有责任避免将 IRP 发送给可能不再在内存中的驱动程序 并防止 PnP 管理器卸载仍在处理您发送给该驱动程序的 IRP 的驱动程序。 文本中显示了您如何履行该职责的一个方面:对文件对象进行额外引用 由 IoGetDeviceObjectPointer 围绕对 IoCallDriver 的调用返回。在大多数驱动程序中,您可能需要 仅在您发送异步 IRP 时提供额外参考。在这种情况下,通常的代码 取消引用文件对象可能位于与 调用 IoCallDriver——比如说,在完成例程中你必须为一个异步 IRP 安装。如果你发送 同步 IRP,您更有可能以不取消引用文件的方式编写驱动程序 对象,直到 IRP 完成。

    【讨论】:

      【解决方案2】:

      使用交互式启动选项,不要加载麻烦的驱动程序。然后,您可以尝试通过向驱动程序添加诊断工具或其他调试技术来确定潜在问题。

      【讨论】:

      • 你能详细解释一下吗?在不实际加载驱动程序的情况下进行调试是什么意思?正如我告诉过你的,我只是一个初学者。
      猜你喜欢
      • 2020-06-23
      • 2013-08-15
      • 2021-03-16
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 2014-09-01
      相关资源
      最近更新 更多