获取Windows系统版本号

 在驱动中增加系统版本号判断,增加如下方法获取版本号。

#pragma comment(lib, "Version.lib") 
BOOL GetNtVersionNumbers(DWORD& dwMajorVer, DWORD& dwMinorVer, DWORD& dwBuildNumber, DWORD& dwBuildSubNumber)
{
	BOOL bRet = FALSE;
	DWORD size, len, dwHandle;
	unsigned int puLen;
	void* version;
	char Filename[MAX_PATH];
	LPVOID lpBuffer;
	VS_FIXEDFILEINFO file_info;

	memset(&file_info, 0, sizeof(file_info));
	size = GetFileVersionInfoSize(TEXT("C:\\WINDOWS\\SYSTEM32\\NTDLL.DLL"), &dwHandle);
	if (size) {
		version = VirtualAlloc(0, size, MEM_COMMIT, PAGE_READWRITE);
		if (version == NULL)
		{
			DBG_LOGE("VirtualAlloc fail");
			return FALSE;
		}
		if (GetFileVersionInfo(TEXT("C:\\WINDOWS\\SYSTEM32\\NTDLL.DLL"), 0, size, version) && VerQueryValue(version, TEXT("\\"), &lpBuffer, &puLen)) {
			len = puLen;
			if (puLen >= 52)
				len = 52;
			memcpy(&file_info, lpBuffer, len);
		}
		VirtualFree(version, 0, MEM_RELEASE);
		bRet = TRUE;
	}
	dwMajorVer = (file_info.dwProductVersionMS >> 16) & 0xffff;
	dwMinorVer = file_info.dwProductVersionMS & 0xffff;
	dwBuildNumber = (file_info.dwProductVersionLS >> 16) & 0xffff;
	dwBuildSubNumber = file_info.dwProductVersionLS & 0xffff;

	return bRet;
}

调用:

DWORD dwMajorVer, dwMinorVer, dwBuildNumber, dwBuildSubNumber;
	if (pDevContext->GetNtVersionNumbers(dwMajorVer, dwMinorVer, dwBuildNumber, dwBuildSubNumber))
	{
		DBG_LOGI("Windows Version = %d.\%d.%d.%d\n", dwMajorVer, dwMinorVer, dwBuildNumber, dwBuildSubNumber);
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值