首页
社区
课程
招聘
[求助]WDK编译X64位驱动
发表于: 2014-3-10 09:39 17796

[求助]WDK编译X64位驱动

2014-3-10 09:39
17796


如图所示,这种是否影响64位驱动的编译。。主机环境也是x64的操作系统。。

另外还会提示warning C4819:The file contains a character that cannot be represented in the current code page<936>.Save the file in Unicode format to prevent data loss

这又是什么原因呢?真心求问。。。。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感觉 这像是x86环境啊。 不仅不叫cross compiler
2014-3-10 11:32
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
主机环境是Windows 64位系统
虚拟机环境也是Windows 64位系统
编译器用的是WDK的build environments目录下Windows 7x64 check版本build编译
2014-3-10 11:46
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有没有想过,编译器,可能只有32位,没有64位。你看到的X64位选项,只不过传递给编译器的参数而已。
2014-3-10 11:53
0
雪    币: 25
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
_asm?
2014-3-10 15:03
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我百度过。。。我确实是用的64位的编译器。。。有用传参数给32位编译器的反而成功了
2014-3-11 20:35
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你用什么编译器你百度出来的?你用64位编译器,那拿出证明来看看,我不懂你百度出来是什么意思
2014-3-17 00:59
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
WDK自带的amd 64 build工具算不?
2014-3-17 09:20
0
雪    币: 37
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
“解决WDK7编译驱动时出现的warning C4819警告”
http://www.m5home.com/bbs/blog-4158-27.html
2014-3-17 09:52
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢,不过我找到了另外一种解法,也分享下吧!在vs里面高级保存选项将页面保存为Unicode1200,也可以解决这个警告
2014-3-17 10:13
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
那个东西,我没记错的话,是32位的程序,只不过可以编译64位驱动而已,我在win7 x64用wdk编译amd64位的驱动,出来的build工具,编译程序,都是32位程序。
这个我现在没电脑,没法看,你可以试试,看看编译的时候,编译程序是32位,还是64位(不要看cmd本身,这个不属于编译器的一部分)
2014-3-18 01:02
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
看了WDK目录amd64目录下的CL.exe和Link.exe,都是64bit的程序,可能是因为我下载的WDK比较新点
2014-3-18 10:21
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哥们,别老看啊,看得未必是真正用的,你又不是编译器,你干嘛不测测呢。
我现在有电脑用了,帮你测了一下子。
在WIN7 X64系统下,编译WIN7 X64的驱动。
一样提示using cross compilers。
我编译了一个驱动,发现他使用了"WinDDK\7600.16385.1\bin\x86\amd64"下面的编译器。用了build.exe cl.exe 等程序,无一例外,都是32位程序。
拿着32位程序去编译x64的代码,不是交叉编译,又是什么呢
2014-3-25 11:34
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
If you have a hex editor program, just open your file with it and shortly after the standard header intro stuff (like "This program cannot be run in DOS mode...") you will see either
"PE..L" (hex code: 504500004C) = 32 bit
or
"PE..d†" (hex code: 504500006486) = 64 bit

我是通过winhex工具看的PE文件的头文件中具体的域才发现WDK目录下的Cl.exe和Link.exe都是64位的。。。这确实是测过了
2014-3-25 14:27
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
你说的是哪个目录,给个路径。
另外,我说的你没有测试,你测试过没有,你说的那个cl.exe和link.exe在编译过程中,有没有运行呢?
还有,你用的,是什么版本的WDK?
2014-3-25 15:18
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我好像找到了为什么会显示如上语句。

C:\Windows\System32\cmd.exe /k C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ chk x64 WIN7
这是我的X64编译器的属性中命令行参数
然后我查看了setenv.bat这个批处理文件。发现其中有一句

if not "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto amd64crosscompile
rem AMD64 Native builds
@ECHO WARNING: x64 Native compiling isn't supported. Using cross compilers.
REM goto envtest

编译器上显示的就是这句。

然后我用同样的一个简化的批处理判断

IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" GOTO REGAMD64
IF "%PROCESSOR_ARCHITECTURE%"=="x86" GOTO REGX86

:REGAMD64
@ECHO WARNING: x64

:REGX86
@ECHO WARNING: x86
我自己的机器的PROCESSOR_ARCHITECTURE是amd64

上面那个批处理中无论机器架构是amd64还是x86最终都会调用下面这一句:
:amd64crosscompile
rem X86 to AMD64 cross compile
set PATH=%BASEDIR%\bin\x86\amd64;%BASEDIR%\bin\x86;%BASEDIR%\bin\SelfSign;%PATH%
set PATH=%BASEDIR%\tools\pfd\bin\bin\x86_AMD64;%BASEDIR%\bin\SelfSign;%PATH%
goto envtest
只不过如果是amd64时,会显示x64 Native compiling isn't supported. Using cross compilers.
2014-3-26 09:30
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
大哥,确实是在这里提示的,但那就输出一句话,你依然不知道为什么要输出这句话。
2014-3-26 10:01
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
就是不知道为什么我的机器无论是amd64还是x86都会执行同样的语句。。
2014-3-26 15:20
0
游客
登录 | 注册 方可回帖
返回
//