onecore\base\cmd\maxpathawarestring.cpp
,这表明至少有一个源文件是用C++编写的。
Hans Passant的补充说明:
以及eryksun:它所依赖的导入使它很可能是C和C++混合编程。CRT函数如
longjmp
、calloc
、free
表明它是C代码,可能是古老的,回溯到command.com时代。显然,它还使用了C++异常处理,C++是他们所有最近代码开发的首选武器。混合编程并不罕见。
x cmd!*::*
显示了大量使用C++的std
命名空间。eExit
、eChdir
、ParseStatement
、SearchForExecutable
和ExecPgm
。他们没有将所有这些旧的C代码移植到面向对象的设计中。但是现在有部分代码已经迁移到了C++。Cmd是一个完全用'C'编写的Win32应用程序-这很重要,因为NT的一个关键目标是在许多不同的处理器和机器架构之间实现可移植性。
https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/
Map
,Collection
,这表明它可能使用了一些C++/CX。
从上到下(原始缓冲区的蓝色方框):
- `ScreenInfo` - 维护有关视口等的信息,并包含一个`TextBuffer`
- `TextBuffer` - 将控制台文本区域表示为行的集合
- `Row` - 唯一地表示控制台中的每个`CharRow`和应用于每行的格式属性
- `CharRow` - 包含一组`CharRowCells`,以及处理行包装和导航的逻辑和状态
- `CharRowCell` - 包含实际单元格的文本,以及包含特定单元格标志的`DbcsAttribute`字节conhost.exe
是Windows原始的命令行用户体验。它实现了Windows的命令行基础结构,并负责托管Windows控制台API、输入引擎、渲染引擎和用户首选项。此存储库中的控制台主机代码是Windows自身中conhost.exe
构建的实际源代码。