吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 623|回复: 10
收起左侧

[求助] Visual Studio 2015 编译C++一直报Could not open version header file :bldnump.h

[复制链接]
weist123 发表于 2024-12-28 11:11
Visual Studio 2015 编译C++一直报Could not open version header file :bldnump.h

Visual Studio 2015专业版

已经安装WIN10 1607的SDK;
已经安装WIN10 1607的WDK;


新建一个WDM驱动,只添加一个c文件(内容相同的cpp文件也不行):

[C] 纯文本查看 复制代码
///
/// [url=home.php?mod=space&uid=267492]@file[/url] hello.c
/// [url=home.php?mod=space&uid=686208]@AuThor[/url] REInject
/// [url=home.php?mod=space&uid=686237]@date[/url] 2020-05-31
///

#include <ntddk.h>

// 提供一个Unload 函数只是为了让这个程序能够动态卸载,方便调试
VOID DriverUnload(PDRIVER_OBJECT driver)
{
	// 但是实际上我们什么都不做,只打印一句话
	DbgPrint("hello: Our driver is unloading...\r\n");
}

// DriverEntry,入口函数。相当于main。
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
	// 这是内核模块入口,可以在这里写入我们想写的东西
	DbgPrint("hello: my salary!");

	// 设置一个卸载函数,便于这个函数退出
	driver->DriverUnload = DriverUnload;
	return STATUS_SUCCESS;
}



保存为x64的配置,编译:报以下错误:

=========================
1>------ 已启动生成: 项目: MyDriver1, 配置: Debug x64 ------
1>  Building 'MyDriver1' with toolset 'WindowsKernelModeDriver10.0' and the
'Desktop' target platform.
1>  Using version information from C:\Program Files (x86)\Windows Kits\10\Include
\10.0.14393.0\shared\\ntverp.h
1>  Could not open version header file C:\Program Files (x86)\Windows Kits
\10\Include\10.0.14393.0\shared\\bldnump.h. (0x00000002)
1>  Could not determine version information.  Please specify using -v option.
1>  Updates common INF file directives
1>          USAGE:
1>          stampinf -f filename [-s section] [-d <xx/yy/zzzz> | *]
1>                   -a architecture -n [-c catalogfile]
1>                               [-v <w.x.y.z> | *]
1>                               [-k nnnnn] [-u nnnnn]
1>                               [-i path]
.
.
.
大堆信息,省略……
1>C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.common.targets(480,5):
error MSB6006: “stampinf.exe”已退出,代码为 1。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

经查:文件夹:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\
有ntverp.h文件,不存在bldnump.h


这是怎么回事呢?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wyp123 发表于 2024-12-28 12:08
ntddk.h换成wdm.h试试
ldw471427015 发表于 2024-12-28 13:03
首先你得知道这个“bldnump.h” 是什么,然后在设置里面那些警告等级调低
htwd 发表于 2024-12-28 14:47
 楼主| weist123 发表于 2024-12-28 14:58
另外,还有个问题:

1、究竟要安装什么版本的SDK合适?

比如,我安装的主机系统是win7sp1x64,想安装vs2019,用于开发最高支持win10 2004的程序和驱动(也想开发win10 2004以下,比如win7、win8的程序和驱动),
是不是一定要安装win10 2004的SDK和win10 2004的WDK?而不是安装win7的SDK吧!

还是我一定要在win10 2004上安装VS2019,才能安装win10 2004的SDK和win10 2004的WDK?才能开发最高支持win10 2004的程序和驱动?
百度了都说要开发驱动,SDK和WDK的版本一定要一致。这个我是理解的。

2、安装vs2019的时候,会不会自动安装相应版本的SDK?比如我是在win7上安装,他给自动装了win7的呢?
wyp123 发表于 2024-12-28 15:23
编译驱动时,wdk在设置里面可以设置版本的:项目右键属性-》Driver Settings -》 General -》target os version设置对应的操作系统版本
 楼主| weist123 发表于 2024-12-28 15:38
本帖最后由 weist123 于 2024-12-28 15:42 编辑
wyp123 发表于 2024-12-28 15:23
编译驱动时,wdk在设置里面可以设置版本的:项目右键属性-》Driver Settings -》 General -》target os ver ...

谢谢回答,这个我知道。
意思是将要开发的驱动在什么平台运行,比如Target OS Version改成Windows 7,Target Platform改为Desktop;就保证开发的驱动在win7上运行了。

但是SDK呢,百度了下都说,一大堆的头文件找不到报错,可能是因为SDK与WDF不对应造成的。

要开发最高支持win10 2004的程序和驱动,是不是这样的方案可行:
主机系统是win7sp1x64,安装好vs2019,安装好win10 2004的SDK和win10 2004的WDK就行了。

还是非要这样的方案:一定非要在主机上安装好win10 2004操作系统,再安装好vs2019,再安装好win10 2004的SDK和win10 2004的WDK,才行?
wyp123 发表于 2024-12-28 16:01
weist123 发表于 2024-12-28 15:38
谢谢回答,这个我知道。
意思是将要开发的驱动在什么平台运行,比如Target OS Version改成Windows 7,Ta ...

我记着我当时安装是先安装最新版的sdk,然后根据sdk去找到wdk,应该是要匹配的
 楼主| weist123 发表于 2024-12-28 18:11
wyp123 发表于 2024-12-28 12:08
ntddk.h换成wdm.h试试

换了,报错依旧。

实际上, C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\文件夹里面存在ntverp.h文件,但不存在bldnump.h文件。


查看了下windows的SDK版本号:

·打开Visual Studio 2015,然后选择“帮助”菜单中的“关于Microsoft Visual Studio”选项。在弹出的对话框中,看不到看到Visual Studio使用的SDK版本号。但能看到windows DWK版本为10.0.14393.0。

·在命令提示符cmd中,输入以下命令
reg query "HKLM\SOFTWRE\Microsoft\Microsoft SDKs\windows" /s /v InstallationFolder
提示:不存在键值。

但是,在解决方案上右键--属性--配置属性--常规,里面有目标平台和windows SDK版本。
目标平台为win10,已经选择windows SDK版本为10.0.14393.0。

我确实安装了SDK 10.0.14393.0呀,也显示安装成功了!
为什么?

sumile 发表于 2024-12-28 18:28
本帖最后由 sumile 于 2024-12-28 19:54 编辑

看起来是处理inf文件的时候报错了,把Driver Files下的.inf文件移除掉。WDM驱动用不上

Screenshot 2024-12-28 182756.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-2 19:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表