GetWindowsVersion.c File Reference

#include "GetWindowsVersion.h"

Include dependency graph for GetWindowsVersion.c:

Go to the source code of this file.

Defines

#define SM_SERVERR2   89

Typedefs

typedef void(WINAPI *) PGNSI (LPSYSTEM_INFO)

Functions

IMPORT_EXPORT_GETWINDOWSVERSION_DLL
int 
GetWindowsVersion (void)


Define Documentation

#define SM_SERVERR2   89

Definition at line 4 of file GetWindowsVersion.c.

Referenced by GetWindowsVersion().


Typedef Documentation

typedef void(WINAPI *) PGNSI(LPSYSTEM_INFO)

Definition at line 3 of file GetWindowsVersion.c.


Function Documentation

IMPORT_EXPORT_GETWINDOWSVERSION_DLL int GetWindowsVersion ( void   ) 

Definition at line 6 of file GetWindowsVersion.c.

References NULL, OS_ERROR, OS_WIN32_WINDOWS_2000, OS_WIN32_WINDOWS_95, OS_WIN32_WINDOWS_98, OS_WIN32_WINDOWS_LONGHORN, OS_WIN32_WINDOWS_Me, OS_WIN32_WINDOWS_NT_3_51, OS_WIN32_WINDOWS_NT_4_0, OS_WIN32_WINDOWS_SERVER_2003, OS_WIN32_WINDOWS_SERVER_2003_R2, OS_WIN32_WINDOWS_VISTA, OS_WIN32_WINDOWS_XP, OS_WIN32_WINDOWS_XP_64, si, and SM_SERVERR2.

Referenced by main(), and WinMain().

00007 {
00008         OSVERSIONINFOEX osvi;
00009         BOOL bOsVersionInfoEx;
00010 
00011         ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
00012         osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
00013 
00014         if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
00015         {
00016                 osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
00017                 if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) ) return OS_ERROR;
00018         }
00019 
00020         switch (osvi.dwPlatformId)
00021         {
00022                 case VER_PLATFORM_WIN32_NT:
00023                         if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0 )
00024                         {
00025                                 if( osvi.wProductType == VER_NT_WORKSTATION ) return OS_WIN32_WINDOWS_VISTA;
00026                                 else return OS_WIN32_WINDOWS_LONGHORN;
00027                         }
00028 
00029                         if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
00030                         {
00031                                 SYSTEM_INFO si;
00032                                 PGNSI pGNSI;
00033                                 pGNSI = (PGNSI) GetProcAddress(GetModuleHandle("kernel32.dll"),"GetNativeSystemInfo");
00034                                 if(NULL != pGNSI) pGNSI(&si);
00035 
00036                                 if( GetSystemMetrics(SM_SERVERR2) ) return OS_WIN32_WINDOWS_SERVER_2003_R2;
00037                                 else
00038                                         if( osvi.wProductType == VER_NT_WORKSTATION && si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) return OS_WIN32_WINDOWS_XP_64;
00039                                         else return OS_WIN32_WINDOWS_SERVER_2003;
00040                         }
00041 
00042                         if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) return OS_WIN32_WINDOWS_XP;
00043                         if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) return OS_WIN32_WINDOWS_2000;
00044                         if ( osvi.dwMajorVersion == 4 ) return OS_WIN32_WINDOWS_NT_4_0;
00045                         if ( osvi.dwMajorVersion == 3 && osvi.dwMinorVersion == 51 ) return OS_WIN32_WINDOWS_NT_3_51;
00046                 break;
00047 
00048                 case VER_PLATFORM_WIN32_WINDOWS:
00049                         if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0) return OS_WIN32_WINDOWS_95;
00050                         if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10) return OS_WIN32_WINDOWS_98;
00051                         if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90) return OS_WIN32_WINDOWS_Me;
00052                 break;
00053         }
00054         return OS_ERROR;
00055 }

Here is the caller graph for this function:


Generated on Sun Mar 4 15:11:30 2007 for Scilab [trunk] by  doxygen 1.5.1