Ознакомительная версия некоторых Win32 API Call - PullRequest
1 голос
/ 27 февраля 2011

Я использую несколько функций Win32 API, но MSDN не сообщает мне, из какой версии Windows они берутся, их горизонт истории теперь просто Win2K (как видно из документации по ReadFile функции).

Поскольку код может работать на NT4 или win9x, я хотел бы знать, должен ли я создать «изящный» запасной вариант, если эти функции отсутствуют в системе.Так кто-нибудь получил информацию о дате / версии введения следующих функций:

  • CreatePipe
  • SetHandleInformation
  • PeekNamedPipe

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Эти функции API существуют с момента первого выпуска Win32 API, примерно в 1993 году.Не нужно писать специальный код.

Если вы намереваетесь использовать древние операционные системы, такие как NT4 и Win95, вам, однако, придется посетить Музей Microsoft, чтобы найти старую версию SDK и компилятора.Выпуски SDK и компилятора, по крайней мере, последние 6 лет совместимы только с Windows 2000 и выше.Нахождение этих версий может оказаться сложнее, чем кажется, соглашение с Sun сделало незаконным распространение Microsoft версий 5 и 6 Visual Studio.Вам придется вернуться хотя бы к версии 4.2.Прошло много времени с тех пор, как я видел, как кто-то готов смириться со стоимостью поддержки таких древних реликвий.

1 голос
/ 28 февраля 2011

Ниже приведены фрагменты из документов msdn, установленных вместе с Visual Studio 2005. Я включил сигнатуры функций, чтобы вы могли убедиться, что речь идет об одних и тех же функциях.

-----

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.  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...