插入新的 USB 设备时 CPU 使用率为 100% - services.exe / Windows Server 2003

插入新的 USB 设备时 CPU 使用率为 100% - services.exe / Windows Server 2003

我正在尝试在我的服务器上安装一个新的 USB 驱动器,但发生的情况是系统开始使用 services.exe 占用大量处理器周期。使用进程资源管理器仔细检查后发现,一个名为 umpnpmgr.dll 的线程占用了 services.exe 的大部分处理器时间。

我等了半个小时,还是什么反应都没有。

重新启动并再试,结果相同。

尝试了不同的 USB 驱动器,然后是闪存驱动器,但问题仍然存在。

尝试更新驱动程序,但它说更新功能已启动。

我已经使用进程资源管理器来终止线程,以便服务器仍然可以执行其预期的功能。

在发生这种情况之前安装的任何设备仍可工作,但系统上新安装的任何设备均无法工作。

我的问题是:

有没有办法将设备手动安装到注册表中,以便 Windows 认为它​​是以前安装的设备?

或者除了重新安装之外,还有什么方法可以解决这个问题?重新安装意味着要备份大量数据,而这对于 USB 驱动器来说很难,而且所有其他网络机器上的空间也不足。

任何帮助将不胜感激。

威廉

答案1

更新:Windows 7 Service Pack 1 包含修补程序:

KB981214:使用连接到 USB 2.0 EHCI 主控制器的 USB 音频设备时 CPU 使用率过高

在这种情况下,您会注意到计算机大约每 15 秒就会出现一次高 CPU 使用率。此外,当整体 CPU 使用率达到 100% 时,您可能会遇到音频设备音频播放跳跃的情况。

看看 SP1 是否能修复该问题。


使用进程探索器查看正在运行的线程,并查看其堆栈跟踪。至少您可以看到 services.exe 中托管的服务。

替代文本

我假设机器在这段时间内是 CPU 受限,而不是 IO 受限。如果它是 I/O 受限,你可以使用以下命令查看它正在做什么进程监控- 它可能会带来一些见解。


我在您的 Process Explorer 屏幕截图中看到该进程占用了 50% 的 CPU。我假设它是一台双核机器,占用了整个核心。因此 CPU 卡住了,无法执行某些操作。

查看堆栈跟踪:

替代文本

这些事关键在于(我不是专家,它们只是激起了我的兴趣):

  • 验证目录文件
  • 设置查找下一匹配行西
  • 设置Di枚举设备接口

从术语“目录文件”来看,听起来好像它正在遍历所有已安装的 INF。我不知道这些功能是做什么的,但我可以检查:

验证目录文件

验证单个目录文件。

设置查找下一个匹配行

SetupFindNextMatchLine 函数返回 INF 文件中相对于 ContextIn.Line 与指定键匹配的下一行的位置。

SetupDiEnumDeviceInterfaces

SetupDiEnumDeviceInterfaces 函数枚举设备信息集中包含的设备接口。

听起来它正在经历所有的信息文件文件,通过每一个,然后做事根据其发现。

下一个问题是,它是否卡在INF 文件,或者只有一个很多其中,或者是重复它本身是否具有访问权限,或者根本无权访问该访问权限,或者......谁知道呢。

我接下来要做的事情是加载进程监控并将其设置为仅显示文件活动服务程序。然后你可以看到它快速浏览所有 inf 文件。希望你能看到它卡在哪个文件上(希望它只是卡在一个上)。那么也许您可以重命名/隐藏该有问题的 INF 文件。


更新二

过程监控入门。

在工具栏上,关闭除文件系统活动

替代文本

然后添加一个过滤器:

Process Name
is
services.exe
Include

并点击添加:

替代文本

答案2

检查是否已启用 USB 轮询空闲。有关详细信息,请参阅http://www.pctools.com/guides/registry/detail/1210/。此外,如果您不需要 HID 用户输入服务(通过开始 -> 运行 -> services.msc 查看您的服务),您可能需要禁用它。

答案3

您最好先安装驱动器,然后将其插入系统,有时需要关闭防病毒软件或防火墙,然后安装驱动程序,然后插入设备。有时您必须在安全模式下安装才能更好地工作。但我的建议是不要先插入设备,然后再安装驱动程序。

答案4

这可能是 AutoRun 妨碍了你吗?请尝试禁用它shift,或者在设备首次连接时按住。

相关内容