AllocConsole 错误代码
Posted
技术标签:
【中文标题】AllocConsole 错误代码【英文标题】:AllocConsole error codes 【发布时间】:2013-09-21 05:08:34 【问题描述】:对AllocConsole 的调用失败会生成哪些错误代码?在 MSDN 网站上它说 If the function fails, the return value is zero. To get extended error information, call GetLastError.
但我没有看到任何地方说它会产生什么样的错误。
【问题讨论】:
系统错误代码的完整列表是here。 我的意思是 AllocConsole 可能导致的错误。唯一可以使该功能失败的控制台是否已经存在? 【参考方案1】:在大多数系统调用中,有一个相当长的“可能的失败场景”列表,这意味着您会得到大量可能的错误代码。例如,操作系统中的某些资源可能已满(我希望操作系统中的某处有一个控制台列表,如果该列表已满和/或无法增长,则会出现一些错误)。控制台还需要内存作为文本内容的缓冲区,以及图形输出缓冲区(以避免每次刷新屏幕时都必须绘制每个字符)——这两者都会导致至少两个不同的错误(out内存不足,图形内存不足,并且可能“无法为图形资源创建句柄”)。
不同类别的可能错误是基于权限的错误 - 可能您的进程(基于正在登录的用户)没有足够的权限来创建控制台。
我很确定实际可能出现的错误列表远不止于此。
总之,不要期望从函数中得到的错误是有限的——如果你对一组特定的错误代码感兴趣,然后检查这些错误代码,如果它不是其中之一,就做一些理智的事情那些。不要指望你不能得到任何其他错误代码。
【讨论】:
以上是关于AllocConsole 错误代码的主要内容,如果未能解决你的问题,请参考以下文章
WIN32程序挂钩SetLastError,输出错误描述到控制台
使用AllocConsole在Win32程序中调用控制台调试输出
MFC的GUI窗口使用Console输出函数printf(AllocConsole后,使用GetStdHandle取得句柄,然后就可以操作了)