尝试找出 Windows 10 登录延迟;xperf 显示 explorer.exe 挂断在“Windows.Devices.Lights.dll”上

尝试找出 Windows 10 登录延迟;xperf 显示 explorer.exe 挂断在“Windows.Devices.Lights.dll”上

情况:

  • 我启动笔记本电脑,登录 Windows,一切都按预期快速加载。
  • 系统运行“一段时间”后,第二个用户通过快速用户切换登录。
  • 对于第二个用户,系统在开始工作之前会“挂起”五分钟,桌面上几乎一片空白。桌面“挂起”时,任务栏上会显示“开始”按钮和搜索栏,但没有程序图标,桌面没有响应,“开始”按钮/菜单也没有响应。

挂起不是特定于用户的。我的笔记本电脑上有五个用户,其中任何一个都可能遇到登录延迟。即使是我自己的帐户,通常运行良好,如果我不是第一个登录的人,并且在系统启动“一段时间”后尝试登录,也会出现问题。

我不确定“一段时间”是多久。如果我尝试通过重新启动然后连续以两个用户身份登录来重现此问题,则两个登录都可以正常工作。(这使得通过禁用启动项和服务并重新启动进行检查来排除故障变得困难。)

我最初在 Windows 10 版本 1909 中遇到了这个问题,升级到 20H2 后这个问题仍然存在。实际上,我在两台不同的笔记本电脑上都遇到了这个问题,一台是 Dell Precision M6700,另一台是 Dell Precision 7510。这两台电脑之间的软件重叠并不多,7510 除了 Office / Acrobat / 和几款 Steam 游戏外,没有太多软件。它们确实有类似的硬件和驱动程序设置。

当第二个用户挂起时,如果我切换回第一个用户(一切正常)并对第二个(挂起)用户的 explorer.exe 实例执行“分析等待链”,则显示它正在等待 sihost.exe。

...无论如何,我已经“处理它”一段时间了,但昨天我使用 xperf 试图找出导致延迟的原因。

我运行了三种不同的跟踪,结果都惊人地相似。果然,“UI 延迟”视图显示 explorer.exe 在挂起期间存在“COM 模式循环”延迟。

性能分析器显示 COM 模式循环挂起(绿色) 性能分析器显示登录时挂起期间的 COM 模式循环延迟(绿色)

我觉得很奇怪,挂起/延迟似乎正好持续 5 分钟。好吧,结果发现它并不完全是 5 分钟。跟踪显示它持续挂起 308 秒(5 分钟 + 8 秒)。

无论如何,我进入了“线程生存期”视图,可以看到这与 explorer.exe 中具有线程启动模块“Windows.Devices.Lights.dll”的线程完全一致。在该线程终止之前,许多其他线程不会开始运行以执行其业务。

在此处输入图片描述 COM 模式循环延迟(顶部绿色)和 explorer.exe 中的 Windows.Devices.Lights.dll 线程(底部红色)同时发生且持续时间相同

...无论如何,我在这里已经有点走投无路了。我对 xperf 不是很熟悉。有没有办法进一步深入了解 Explorer 在这里试图做什么?“Windows.Devices.Lights.dll”到底是干什么的?它的描述只是说“Windows Runtime Lights DLL”。我猜想我可以关闭某些东西来停止这种行为。我很想删除/重命名这个 DLL 文件,看看这是否能解决问题。

任何见解均值得赞赏...

[编辑] 发帖后偶然发现了这个帖子,显然它与 USB Microsoft Pro IntelliMouse 有关,我已连接到两个系统。(未提供解决方案……)

Microsoft Answers 帖子

答案1

该问题是由 Microsoft Pro IntelliMouse 引起的。

在设备管理器(查看 → 按连接查看设备)中,鼠标设备树显示如下:

装置经理

禁用“HID 兼容设备”(上面突出显示)可解决问题。用户登录时不再遇到延迟。我没有发现任何负面影响(尽管可能无法再控制鼠标颜色;我没有重新安装 Microsoft 键盘和鼠标中心软件来检查)。

选择该选项后,Windows 提示我必须重新启动才能禁用该设备。但是,只需断开鼠标连接并重新连接即可。

相关内容