Terminal: 写入非活动屏幕缓冲区被破坏

创建于 2018-10-16  ·  3评论  ·  资料来源: microsoft/terminal

Windows 版本 10.0.17763.1

CreateConsoleScreenBuffer 函数

一个控制台可以有多个屏幕缓冲区,但只有一个活动屏幕缓冲区。 可以访问非活动屏幕缓冲区进行读写,但只显示活动屏幕缓冲区。 要使新屏幕缓冲区成为活动屏幕缓冲区,请使用 SetConsoleActiveScreenBuffer 函数。

此功能已损坏 - 发送到非活动屏幕缓冲区的文本最终处于活动状态,因此在屏幕上可见。

它不会在传统模式下发生。

重现所附问题的最小项目。

AlternativeScreenBufferBug.zip

Product-Conhost Resolution-Fix-Committed Work-Item

最有用的评论

谢谢。 幸运/不幸的是,您的工作进展顺利,提交错误的速度比我调查和修复它们的速度要快。

我已在内部将其归档为MSFT:19317384。 有时间我会处理的。

所有3条评论

谢谢。 幸运/不幸的是,您的工作进展顺利,提交错误的速度比我调查和修复它们的速度要快。

我已在内部将其归档为MSFT:19317384。 有时间我会处理的。

值得一提的是,这仅在从 Visual Studio 运行时发生,默认情况下,它通过自己的 VsDebugConsole.exe 帮助程序执行此操作。

行。 我已经对此进行了调查,制定了修复程序,对其进行了审查,并从今天开始对其进行了检查。

我还在您提供的示例上安装了一个变体到我们的功能测试套件中,以确保我们以后不会再搞砸了。 或者至少我们不会以这种非常具体的方式搞砸它。 :P

非常非常感谢您提供最少的复制代码。 它极大地加快了我扭转这个错误的速度。

它应该在大约 3 周内到达 Insiders 版本。

此页面是否有帮助?
0 / 5 - 0 等级