GetVersion 获取系统版本号

来源:互联网 发布:matlab怎么遍历数组 编辑:程序博客网 时间:2024/06/07 05:27
概述:
DWORD WINAPI GetVersion(void);

返回当前操作系统的版本,如果调用成功,返回值的低位字中包含操作系统的主版本与次版本,高位字节包含有操作系统build号。对于所有平台,低位字包含操作系统的版本号, 低位字的低字节是系统的主版本号,用十六进制表示;低位字的高字节表示系统的次版本号,用十六进制表示,高位字表示系统的bulid号。
示例:
<span style="font-family:Courier New;">#include <Windows.h>#include <stdio.h>int main(){    DWORD dwVerison = 0;    DWORD dwMajorVersion = 0;    DWORD dwMinorVersion = 0;    DWORD dwBuild = 0;    dwVerison = GetVersion();    // Get the Windows version     dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVerison)));    dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVerison)));    // Get the build number.    if (dwVerison < 0x80000000)    {        dwBuild = (DWORD)(HIWORD(dwVerison));    }    printf ("Version is %d.%d (%d)\n",            dwMajorVersion,            dwMinorVersion,            dwBuild            );    return 0;}</span>

另外 MS 提供了一个GetVersionEx  函数, 现有的一些应用程序通过对GetVersion函数的返回值(DWORD)解析错了系统版本(低位字高字节的次版本号与低字节主版本号对调了) ,GetVersionEx 函数为了纠正这些错误而开发的。 然后使用函数VerifyVersionInfo ,通过比对当前系统的版本与应用程序所要求的版本,从而消除了深层潜在的错误。
    OSVERSIONINFO osvi;    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);    // 在调用GerVersionEx函数前须设置OSVERSIONINFO  结构体中的dwOSVersionInfoSize 的值    GetVersionEx(&osvi);
OSVERSIONINFO结构体信息如下:
typedef struct _OSVERSIONINFO {  DWORD dwOSVersionInfoSize;//在调用GerVersionEx函数前必须设置该值  DWORD dwMajorVersion; // 系统主版本号  DWORD dwMinorVersion; // 系统次版本号  DWORD dwBuildNumber; // 系统的构建号  DWORD dwPlatformId; // 标识当前系统支持的套件  TCHAR szCSDVersion[128];// 其它与系统更多的信息} OSVERSIONINFO;

同时 GetVersionEx 接收另外一个结构体作为参数:OSVERSIONINFOEX 

typedef struct _OSVERSIONINFOEX {  DWORD dwOSVersionInfoSize;//在调用GerVersionEx函数前必须设置该值  DWORD dwMajorVersion;// 系统主版本号  DWORD dwMinorVersion; // 系统次版本号  DWORD dwBuildNumber;// 系统的构建号  DWORD dwPlatformId;// 标识当前系统支持的套件  TCHAR szCSDVersion[128];// 其它与系统更多的信息  WORD  wServicePackMajor;// 最新安装的Service pack 主版本号, 如SP3,主版本号为3  WORD  wServicePackMinor;// 最新安装的Service pack 次版本号,如SP3, 次版本号为0  WORD  wSuiteMask;// 标识当前系统所可用的suite()  BYTE  wProductType;// 指出当前系统的产品类型  BYTE  wReserved;// 没有使用,保留} OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;





0 0
原创粉丝点击