2011-02-27 48 views
1

我使用Win32 API的一些功能,但MSDN不要告訴我從哪個Windows版本它們的來源,他們的歷史視界就是現在的Win2K(如ReadFile功能可見文檔)。介紹一些版本的Win32 API調用

由於代碼可能需要在NT4或win9x上運行,所以我想知道如果系統中不存在這些功能,我是否必須實施「優雅」回退。因此,沒有人有大約引進日期/版本的下列功能的一些信息:

  • CreatePipe
  • SetHandleInformation
  • PeekNamedPipe

感謝

回答

1

下被切斷,N-從與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. 
+0

非常感謝:) – 2011-02-27 21:16:48

2

這些API函數自從Win32 API的第一次發佈以來一直存在,早在〜1993年。無需編寫特殊代碼。

如果您打算針對古代的操作系統,如NT4和Win95的,你會然而必須支付給微軟博物館訪尋舊版本的SDK程序和編譯程序的。至少在過去的6年中,SDK和編譯器版本僅與Windows 2000及更高版本兼容。發現這些版本可能比看起來難,與Sun和解是非法的微軟還是發佈的Visual Studio版本5和6。你必須至少回到4.2版本。自從我看到有人願意承擔支持這種古代文物的費用已經有很長一段時間了。

+0

很高興知道,謝謝 – 2011-02-27 21:23:34

+0

@Raoul:即使您需要支持這些古老的操作系統,您也不必在編譯器版本中走得太遠。 Visual Studio 2005中可以編譯,將在NT 4.運行二進制文件,必須回到2003年得到外的現成支持Windows 95,雖然有一些[黑客](HTTP://ma.wishmesh。 COM/2009/09 /運行EXE-DLL編譯-與微軟可視-C-2005-下窗口-95 /),理應讓2005年的目標95。 – 2011-03-01 06:26:40