Цитата(garrymax @ 19:05:2008, 13:05 )

Вопервых, в API от микрософт по этой функции сказано, что начиная с Windows2000 структуру OSVERSIONINFO можно заменить структурой SVERSIONINFOEX - получается наоборот. Рекомендую поиграться.
Вот я тоже смотрю, что что-то не так получается. Хотя в XP работают обе структуры, а в 98 ни одна из них

Цитата(garrymax @ 19:05:2008, 13:05 )

Во вторых, функция возвращает BOOL, а значит лучше пользоваться не 0 и 1.
Ну 0 и 1 я сказал как раз подразумевая false и true. Я как раз обычно если надо что-то сравнить с 0, пишу
if (GetVersionEx(...))
или
if (!GetVersionEx(...))
Цитата(garrymax @ 19:05:2008, 13:05 )

В третьих, если в проверяемой версии Windows98 вместо функции стоит заглушка, то можно воспользоваться вариантом старой функции DWORD GetVersion(VOID); - DWORD делим пополам и младшем слове берем версию windows (в старшем версия MS-DOS).
Про это читал. Только вот непонятно, какие версии чему соответствуют (хотя можно заглянуть в MSDN). Кроме того, зачем-то жесть GetVersionEx и хочется разобраться именно с ней.
Цитата(garrymax @ 19:05:2008, 13:05 )

P.S. Не выдержал и "залез" к Рихтеру в "Windows для профессионалов" (как раз для функций Win95/98) - у него описана только структура OSVERSIONINFO, а SVERSIONINFOEX не упоминается - по логике похоже - Windows2000 был выпущен позже. Кстати, там тоже упоминается функция GetVersion. Может SVERSIONINFOEX у него в другом издании?
У меня 4 издание, там как раз про OSVERSIONINFOEX написано подробно, а про OSVERSIONINFO написано лишь, что её следует используется в версиях до 2000 и от OSVERSIONINFOEX она отличается отсутствием последних 5 элементов.