Low-Level 控制台输入函数

重要

本文档介绍不再是 生态系统路线图的一部分的控制台平台功能。 我们不建议在新产品中使用此内容,但我们将继续支持未来无限期的现有使用情况。 我们首选的新式解决方案侧重于 虚拟终端序列 ,以实现跨平台方案中的最大兼容性。 可以在 经典控制台与虚拟终端 文档中找到有关此设计决策的详细信息。

低级控制台输入函数缓冲区包含输入记录,这些记录可以包含有关键盘、鼠标、缓冲区大小调整、焦点和菜单事件的信息。 低级别函数提供对输入缓冲区的直接访问,与筛选和处理输入缓冲区数据的高级函数不同,丢弃除键盘输入在内的所有内容。

有五个低级别函数可用于访问主机的输入缓冲区:

ReadConsoleInputPeekConsoleInputWriteConsoleInput 函数使用 INPUT_RECORD 结构读取或写入输入缓冲区。

以下是低级别控制台输入函数的说明。

功能 DESCRIPTION
ReadConsoleInput 从输入缓冲区读取和删除输入记录。 在至少有一条记录可供读取之前,该函数不会返回。 然后,所有可用记录将传输到调用进程的缓冲区,直到没有更多记录可用或已读取指定的记录数。 对于下一次读取作,未读记录将保留在输入缓冲区中。 该函数报告已读取的记录总数。 有关使用 ReadConsoleInput 的示例,请参阅 读取输入缓冲区事件
PeekConsoleInput 在不删除输入缓冲区中挂起的输入记录的情况下读取。 截至指定号码的所有可用记录将复制到调用进程的缓冲区中。 如果没有可用的记录,该函数将立即返回。 该函数报告已读取的记录总数。
GetNumberOfConsoleInputEvents 确定输入缓冲区中未读输入记录的数目。
WriteConsoleInput 将输入记录置于缓冲区中任何挂起记录的后面输入缓冲区中。 如果需要,输入缓冲区会动态增长,以容纳写入的记录数。 若要使用此函数,指定的输入缓冲区句柄必须具有GENERIC_WRITE访问权限。
FlushConsoleInputBuffer 放弃输入缓冲区中的所有未读事件。 若要使用此函数,指定的输入缓冲区句柄必须具有GENERIC_WRITE访问权限。

应用程序的进程的线程可以执行等待作,等待输入在输入缓冲区中可用。 若要启动等待作,请在调用任何 等待函数时指定输入缓冲区的句柄。 当发出一个或多个对象的信号时,这些函数可以返回。 当控制台输入句柄的输入缓冲区中存在未读记录时,控制台输入句柄的状态将发出信号。 当输入缓冲区变为空时,状态将重置为非信号。 如果没有可用的输入,调用线程将进入有效的等待状态,在等待等待作的条件时消耗很少的处理器时间。