C++ AttachConsole的实际最低版本要求是什么?

C++ AttachConsole的实际最低版本要求是什么?,c++,c,windows,winapi,sdk,C++,C,Windows,Winapi,Sdk,在线PSDK文档说明5.1(WinXP): 要编译使用此函数的应用程序,请定义_WIN32\u WINNT 与0x0501或更高版本相同。有关详细信息,请参见使用Windows 标题 要求 支持的最低客户端数:Windows XP[仅限桌面应用程序] 支持的最低服务器数:Windows server 2003[仅限桌面应用程序] PSDK文档的较旧本地副本模糊地不同意上述内容,并试图声明5.0(Win2k)或5.1: 要编译使用此函数的应用程序,请定义_WIN32\u WINNT 与0x050

在线PSDK文档说明5.1(WinXP):

要编译使用此函数的应用程序,请定义_WIN32\u WINNT 与0x0501或更高版本相同。有关详细信息,请参见使用Windows 标题

要求 支持的最低客户端数:Windows XP[仅限桌面应用程序]

支持的最低服务器数:Windows server 2003[仅限桌面应用程序]


PSDK文档的较旧本地副本模糊地不同意上述内容,并试图声明5.0(Win2k)或5.1:

要编译使用此函数的应用程序,请定义_WIN32\u WINNT 与0x0500或更高版本相同。有关更多信息,请参阅使用SDK标头

要求 客户端:需要Windows Vista或Windows XP。
服务器:需要Windows Server“Longhorn”或Windows Server 2003


最后,PSDK头文件(也很旧)支持Win2k:

#if(_WIN32_WINNT >= 0x0500)
WINBASEAPI
BOOL
WINAPI
AttachConsole(
    __in DWORD dwProcessId);

#define ATTACH_PARENT_PROCESS ((DWORD)-1)

#endif /* _WIN32_WINNT >= 0x0500 */


我手头没有任何比WinXP SP3更旧的东西可以检查
kernel32.dll
导出目录,因此请告诉我real、
5.0
5.1

所需的最低客户端是Windows 2000(0x0500)。信息不匹配的原因是MSDN得到更新。根据更新是在Windows 2000下线之前还是之后进行的,客户端要求列出Windows XP或Windows 2000


如果有疑问,头文件是权威的。Windows 8.0 SDK的
#if(_WIN32_WINNT>=0x0500)
附件控制台
的声明周围仍然有
#if(_WIN32_WINNT>=0x0500)
它是5.00,也称为Windows 2000。SDK头总是正确的。当Microsoft放弃对旧版本的支持时,MSDN文章会定期更新,以便显示最后一个版本,并接受支持电话。对Windows 2000的扩展支持于2010年7月结束。XP将于2014年4月结束,Server2003R2将于2015年7月结束


自己支持Windows 2000的智慧相当有限。如果您在需求中声明将支持2000,当客户实际接受您的承诺并发现问题时,您将相当头疼。确保你有一台机器或虚拟机可以启动它。您还需要测试您的程序,以便尽早满足此要求。

MSDN这样做真让人恼火。我理解有必要定期取消对旧版本的支持,但修改已建立的文档,使其看起来好像那些旧版本根本不存在,这完全是错误的。没有很好的理由这么做。嗯,MSDN记录Windows 1.03支持CreateWindow()没有任何意义。责任在某处停止。短语“Minimum supported”毫无疑问,您可以在w2k机器上使用AttachConsole(),但它不受支持。显然,他们不想在电话里与坚持MSDN文章说他值得支持的程序员打交道。