我正在使用Win32 API的几个功能,但是MSDN没有告诉我它们来自哪个Windows版本,它们的历史范围现在只是Win2K(如ReadFile函数文档中所示)。
由于代码可能必须在NT4或win9x上运行,我想知道如果系统上没有这些功能,我是否必须实现'优雅'回退。所以有人得到了关于以下功能的介绍日期/版本的一些信息:
由于
答案 0 :(得分:2)
这些API函数自Win32 API首次发布以来就存在,早在1993年。无需编写特殊代码。
如果您打算使用像NT4和Win95这样的古老操作系统,那么您将需要访问Microsoft博物馆以查找SDK和编译器的旧版本。至少在过去6年中,SDK和编译器版本仅与Windows 2000及更高版本兼容。找到这些版本可能比它看起来更难,与Sun的和解使微软仍然分发Visual Studio的第5版和第6版是非法的。你必须至少回到4.2版本。自从我看到有人愿意忍受支持这些古代遗物的费用以来,已经有很长一段时间了。
答案 1 :(得分:1)
以下是与visual studio 2005一起安装的msdn文档中的剪切贴片。我包含了函数签名,因此您可以验证我们正在讨论相同的函数。
-----
BOOL CreatePipe(
PHANDLE hReadPipe,
PHANDLE hWritePipe,
LPSECURITY_ATTRIBUTES lpPipeAttributes,
DWORD nSize
);
Client: Requires Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.
Server: Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server.
Header: Declared in Winbase.h; include Windows.h.
Library: Link to Kernel32.lib.
DLL: Requires Kernel32.dll.
-----
BOOL SetHandleInformation(
HANDLE hObject,
DWORD dwMask,
DWORD dwFlags
);
Client: Requires Windows XP, Windows 2000 Professional, or Windows NT Workstation 3.51 and later.
Server: Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 3.51 and later.
Header: Declared in Winbase.h; include Windows.h.
Library: Link to Kernel32.lib.
DLL: Requires Kernel32.dll.
-----
BOOL PeekNamedPipe(
HANDLE hNamedPipe,
LPVOID lpBuffer,
DWORD nBufferSize,
LPDWORD lpBytesRead,
LPDWORD lpTotalBytesAvail,
LPDWORD lpBytesLeftThisMessage
);
Client: Requires Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.
Server: Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server.
Header: Declared in Winbase.h; include Windows.h.
Library: Link to Kernel32.lib.
DLL: Requires Kernel32.dll.