一些Win32 API调用的简介版本

时间:2011-02-27 20:45:20

标签: winapi

我正在使用Win32 API的几个功能,但是MSDN没有告诉我它们来自哪个Windows版本,它们的历史范围现在只是Win2K(如ReadFile函数文档中所示)。

由于代码可能必须在NT4或win9x上运行,我想知道如果系统上没有这些功能,我是否必须实现'优雅'回退。所以有人得到了关于以下功能的介绍日期/版本的一些信息:

  • CreatePipe
  • SetHandleInformation
  • PeekNamedPipe

由于

2 个答案:

答案 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.