首页
社区
课程
招聘
[讨论]在VS2012 x64下编译驱动使用asm关键字的完整方案
发表于: 2014-9-20 14:40 17373

[讨论]在VS2012 x64下编译驱动使用asm关键字的完整方案

2014-9-20 14:40
17373
以前看雪一篇帖子讲到了用ICC编译器来恢复__asm 本菜倒腾了一会 在VS2012 64位驱动下使用asm关键字,废话少说贴出我的配置

1、去Intel官网下载Intel Parallel Studio XE,我下载的是2015版本。

2、安装好Intel Parallel Studio XE 2015后,安装WDK 7600.16385.1(WDK8似乎配置不起来)。

3、大体配置参看http://www.cnblogs.com/quark/archive/2013/05/20/3088974.html 这篇32位的驱动VS2010的配置 将其配置应用到VS2012上
然后注意修改一下几点:
Platform toolset:Intel C++ Compiler XE 15.0
lib目录 C:\WinDDK\7600.16385.1\lib\win7\amd64
附加依赖库 ntoskrnl.lib;hal.lib;ntstrsafe.lib
目标机器 x64
预处理定义 WIN64
_CONSOLE
_AMD64_
_DDK_
_NDEBUG
DBG=0
4、测试
#include"ntddk.h"

NTSTATUS DriverEntry( PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{
        DbgPrint("HI!!\n");
        __asm
        {
                xor rax,rax
        }
        return STATUS_SUCCESS;
}

编译成功
1>  Building with Intel(R) C++ Compiler XE 15.0
1>ClCompile:
1>  ***** ClCompile (x64 - Intel C++)
1>  DriverEntry.c
成功运行在Win7 x64
...亲爱的内联又回来了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
2
XE2015 不要钱了么?
话说,其实用VS2012或者VS2013直接选择驱动项目,然后更改编译器参数即可~
2014-9-21 04:07
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
求详解~
2014-9-21 13:48
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LINK : fatal error LNK1104: 无法打开文件“libmmt.lib”
错误,何解?
=============
上面这个问题找到答案了,要把intel lib的目录添加到lib的路径里面。

另外,intel c++我没有找到修改fastcall的选项,在哪里啊?
结果编译出来,变成long __cdecl DriverEntry,
error LNK2019: 无法解析的外部符号 DbgPrint,该符号在函数 "long __cdecl DriverEntry(struct _DRIVER_OBJECT *,struct _UNICODE_STRING *)" (?DriverEntry@@YAJPEAU_DRIVER_OBJECT@@PEAU_UNICODE_STRING@@@Z) 中被引用
2014-9-21 15:06
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
fastcall选项是笔误了。。。
至于你那个问题,我没有遇到过。看看你的WDK路径配置是否正确
2014-9-21 19:00
0
雪    币: 24
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
补充一下吧。还需要加入 libifcoremt.lib、libirc.lib、libifcoremt.lib、libirc.lib.否则很多标准C函数无法使用的。
2014-10-7 22:49
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢补充~
2014-10-8 23:30
0
雪    币: 38
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
请问 应用程序下可有解决方案么
2014-11-26 19:13
0
雪    币: 62
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mark  一下  明天试试
2014-11-27 00:33
0
雪    币: 346
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
学习了! 正在找!
2015-3-9 21:34
0
雪    币: 13
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
请问,如果我是在命令行下,用 Sources , build ,那么还有办法使用内联汇编吗?谢谢!
2018-7-10 11:35
0
雪    币: 24330
活跃值: (5304)
能力值: ( LV12,RANK:529 )
在线值:
发帖
回帖
粉丝
12
简单的内联汇编可以写成机器码保存到堆里面,在堆中执行
2018-7-10 12:54
0
游客
登录 | 注册 方可回帖
返回
//