but, MS's documentation: http://msdn.microsoft.com/library/en-us/sysinfo/sysinfo_49iw.asp suggests something more like:
#define WIN98_PLUS(version) \ ( (version.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) && \ ( (version.dwMajorVersion > 4) || \ (version.dwMajorVersion==4 && version.dwMinorVersion>0)))
Is this more correct?
I don't think so. If you look at my test, you'll see that I explicitly check for WIN98+ OR Win2k+ (that is, for some functions, the only valid operating systems are Win2k, Winxp, win98, and winme. The code above would allow nt4.0 in there too. The following link is how I defined the macros: http://msdn.microsoft.com/library/en-us/sysinfo/sysinfo_3a0i.asp
For instance, GetLongPathName is only defined for Win2k and later an Win98 and later (thus no NT4.0): http://msdn.microsoft.com/library/en-us/fileio/filesio_2cv9.asp
Is something in the test causing a failure? I've tested them on win2k and win98 (the only real Microsoft OS that I have access too)
Thanks, .Geoff