代码之家  ›  专栏  ›  技术社区  ›  wezten

停止后启动kmdf驱动程序服务会导致神秘错误

  •  0
  • wezten  · 技术社区  · 6 年前

    我编写了一个非常基本的kmdf驱动程序,安装了它,并用 net start KmdfStart 是的。然后我用 net stop KmdfStart .到目前为止还没有问题。

    但是当我再次使用 网络启动kmdfstart 我明白了 System error 2 has occurred. The system cannot find the file specified 是的。只有重新启动计算机才有帮助。每次我启动和停止,然后尝试启动时,都会出现此问题。错误会立即显示在控制台中。

    注册表项 HKLM\SYSTEM\CurrentControlSet\Services\KmdfStart 有价值 ImagePath 设置为 System32\drivers\KmdfStart.sys 这个文件肯定存在。

    怎样才能 net start 当文件明显存在时,这个错误会失败吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   ImmortaleVBR    6 年前

    在这种情况下,在卸载设备驱动程序之前忘记清理通常是错误消息的原因。我以前只看到过两次此错误消息:尝试通过网络加载设备驱动程序时(例如,共享文件夹);或者由于在第一次卸载之前忘记清理设备驱动程序而导致第二次出现问题。

    准确地说,通过“清理”,我指的是取消注册任何已创建的符号链接、设备等。如果不注册,则下次尝试重新加载设备驱动程序(卸载后),可以命中入口点,但在尝试创建设备或符号链接时不会进一步,因为您在上一个会话中不会清理它设备驱动程序。

    如果要创建设备(iocreatedevice/secure)和符号链接,请确保在驱动程序的卸载例程中清除它。在这个例子中,不清理会导致一个问题,因为您将试图创建一个设备/符号链接的名称已经存在,但只是不再被使用,你不能有一个设备/符号链接创建与另一个相同的名称,否则冲突发生在创作尝试。

    基本上,永远不要忘记清理,因为避免此类错误、防止内存泄漏等非常重要。