2

MSDN generally only lists Windows XP as "Minimum supported client", probably because Windows 2000 and older have reached the end of their lifecycle. However, some of our users are using our software on Windows 2000 machines, and I don't want to break this compatibility if I can avoid it. Can I find out if a Windows API function is not available in Windows 2000 (without testing each function on that system)?

Felix Dombek
  • 13,664
  • 17
  • 79
  • 131
  • 2
    This is where it comes in really handy to have a 10 year old copy of MSDN! – David Heffernan Sep 10 '12 at 11:34
  • @Deanna, I plan to accept an answer once I found out what the most viable solution is. That is, either arx' or Neil's will be accepted, once I have checked the full implications. Your own answer was also helpful because I do have an MSDN 6 copy, but I think Windows 2000 supports many more API functions than are described in there, so basically, I need to get a hold on the Windows Server 2003 SP1 platform SDK as arx suggested and then I'll see. – Felix Dombek Sep 21 '12 at 12:15

5 Answers5

3

In theory you could #define NTDDI_VERSION NTDDI_WIN2K and your program would fail to compile if it depended on newer APIs, but unfortunately this doesn't always work.

Neil
  • 54,642
  • 8
  • 60
  • 72
3

Unfortunatley, Microsoft have removed reference to anything earlier than XP from the "supported OS" lists in the latest MSDN. If you still have an old copy of MSDN (I have MSDN6a) then they will still list the true "supported clients" back to Windows 9x.

Deanna
  • 23,876
  • 7
  • 71
  • 156
3

The help in the "Platform SDK for Windows Server 2003 R2" has platform information going back to Windows 95 and Windows NT 3.1. I downloaded it recently but I can't find it on microsoft.com at the moment. I don't know if that's a temporary glitch or if it's gone for good.

The help in the Windows Server 2003 SP1 Platform SDK is probably similar but I haven't looked at it.

arx
  • 16,686
  • 2
  • 44
  • 61
1

You can open your binary using Dependency Walker in Win 2000 system and it will show the missing functions in red. Provided, of course, that you link to them statically and perhaps this might be sufficient - at least it is simple, easy and efficient for starters.

Roman R.
  • 68,205
  • 6
  • 94
  • 158
0

MSDN usually mentions an older OS as well. See: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724211%28v=vs.85%29.aspx

If it does not mention windows 2000, you must test it and there is a high probability of it not being available. You could use an older compiler (Visual Studio 6 for example) to see if the functionallity is available in its libraries. If it has the function, then Windows 2000 should also have it.

victorsavu3
  • 195
  • 1
  • 6
  • 1
    This is not true. Loads of MSDN docs list XP as the min platform, but the function exists on NT/2000. That's the entire point of the question! – David Heffernan Sep 10 '12 at 11:34
  • 1
    @victorsavu3: MS explicitly removed 2000 from the "supported" list as it's not supported anymore. The function may be supported on that Windows version but that version itself is not supported. – Deanna Sep 10 '12 at 11:47
  • There are plenty of functions in the documentation that do still list Win2K as the mimimum supported version. – Remy Lebeau Sep 10 '12 at 22:47