CreateConsoleScreenBuffer函数创建一个控制台屏幕缓冲区并返回一个句柄。
手柄CreateConsoleScreenBuffer(
DWORD 【dwDesiredAccess】, | //访问标志 |
DWORD 【dwShareMode】, | //缓冲区共享模式 |
LPSECURITY_ATTRIBUTES 【*lpSecurityAttributes】, | //指向安全属性的指针 |
DWORD 【dwFlags中】, | //要创建的缓冲区类型 |
LPVOID 【lpScreenBufferData】 | //保留 |
); |
参数
【dwDesiredAccess】
指定对控制台屏幕缓冲区的所需访问。此参数可以是以下值之一或两者:
值 | 含义 |
GENERIC_READ | 请求访问控制台屏幕缓冲区,使进程能够从缓冲区读取数据。 |
GENERIC_WRITE | 请求对控制台屏幕缓冲区的写入访问,使进程能够将数据写入缓冲区。 |
【dwShareMode】
指定如何共享此控制台屏幕缓冲区。此参数可以为零,表示缓冲区不能共享,或者它可以是以下两个值之一或两者:
值 | 含义 |
FILE_SHARE_READ | 可以在控制台屏幕缓冲区上执行其他打开操作,以进行读取访问。 |
FILE_SHARE_WRITE | 可以在控制台屏幕缓冲区上执行其他打开操作以进行写访问。 |
【lpSecurityAttributes】
指向SECURITY_ATTRIBUTES结构的指针,用于确定返回的句柄是否可由子进程继承。如果【lpSecurityAttributes】为NULL,则无法继承该句柄。
Windows NT:结构的lpSecurityDescriptor成员指定新的控制台屏幕缓冲区的安全描述符。如果【lpSecurityAttributes】为NULL,则控制台屏幕缓冲区将获得默认安全描述符。
Windows 95:结构的lpSecurityDescriptor成员将被忽略。
【dwFlags中】
指定要创建的控制台屏幕缓冲区的类型。目前唯一支持的屏幕缓冲区类型是CONSOLE_TEXTMODE_BUFFER。
【lpScreenBufferData】
Reserved for possible future use; should be NULL.
返回值
如果函数成功,则返回值是新控制台屏幕缓冲区的句柄。
如果函数失败,返回值为INVALID_HANDLE_VALUE。要获取扩展错误信息,请调用GetLastError.
备注
控制台可以有多个屏幕缓冲区,但只有一个活动屏幕缓冲区。可以访问非活动屏幕缓冲区进行读写,但仅显示活动屏幕缓冲区。要使新屏幕缓冲区为活动屏幕缓冲区,请使用SetConsoleActiveScreenBuffer功能。
调用进程可以使用需要控制台屏幕缓冲区的句柄的任何函数中的返回句柄,但受【dwDesiredAccess】参数指定的访问限制。
调用进程可以使用DuplicateHandle函数来创建与原始句柄不同的访问或继承性的重复屏幕缓冲区句柄。但是,DuplicateHandle不能用于创建对不同进程有效的副本(通过继承除外)。
要关闭屏幕缓冲区句柄,请使用CloseHandle功能。
也可以看看
CloseHandle, DuplicateHandle, GetConsoleScreenBufferInfo, SECURITY_ATTRIBUTES, SetConsoleActiveScreenBuffer, SetConsoleScreenBufferSize