1.8驱动代码中和区别-24课_第1页
1.8驱动代码中和区别-24课_第2页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.8 驱动代码中C和C+代码区别-24课A、函数调用约定 B、C和C+编译方式C、用C+方式编译驱动 D、C代码升级至C+E、优化21课的代码课时:16分*.c当文件后缀名为*.c时 编译器将会用C编译器方式编译*.cpp当文件后缀名为*.cpp时 编译器将会用C+编译器方式编译区别:解决办法在需要用到C方式编译的函数前加extern C需要用C方式编译的头文件做如下修改#pragma once #ifdef cplusplus extern C#endif#include /这里包含需要用C方式编译的头文件 #ifdef cplusplus#endif1errors in director

2、y g:驱动教程024_驱动代码中c和c+代码区别mini_ddk 1mini_ddk.obj : error LNK2001: unresolved external symbol struct_ServiceDescriptorTable * KeServiceDescriptorTable (?KeServiceDescriptorTable3PAU_ServiceDescriptorTableA) 1bufferoverflowk.lib(gs_support.obj) : error LNK2019: unresolved external symbol _DriverEntry8

3、referenced in function _GsDriverEntry8 1sysi386ddk_helloworld.sys : error LNK1120: 2 unresolved externals?DriverEntryYGJPAU_DRIVER_OBJECTPAU_UNICODE_STRINGZ_DriverEntry8 /要求格式?DriverEntryYGJPAU_DRIVER_OBJECTPAU_UNICODE_STRINGZ?实例 修改21课的代码 升级到C+编译模式A、为入口函数 添加extern C B、修改Source文件C、修改21课的BUGextern C d

4、eclspec(naked) stdcalltest(int a, int b)前面已经完成了初级内核代码的编写,已经是一个小巧完整的驱动文件了,本节课要讲解一下理论知识。编译器认死理儿,载入文件时.C就按C方式.CPP就按C+方式。我们将之前的.C文件改成.CPP,再用BUILD编译一下就发现了一大堆的错误,解决的办法写在教案中.将代码加入头文件再次编译后只剩下3个错误,头文件的错误已经没有了,再看下错误信息(教案中的红字).大概是说函数符号没有找到,另外入口函数也没找到,总体上是LINK链接错误,所以在这两个函数前也要加入extern C按照C方式编译.然后看一下mini_ddl.obj里

5、入口函数被替换成了一个长串的入口函数?DriverEntryYGJPAU_DRIVER_OBJECTPAU_UNICODE_STRINGZ ?在 C 方式的时候是原来的入口函数_DriverEntry8虽然 DDK 方式编译成功了,但是在 VC+中还是提示错误,这是一个非常经典的错误,我们在 属性页 - C/C+ - 高级 -编译为 里面设置为”默认”或者”编译为 C+代码”.还有在上节课的测试中有一个 BUG,因为在卸载函数中是直接恢复代码,应该加上一个判断,如果在未HOOK 的情况下就不要再做代码恢复了.比如在虚拟机里测试前面课程的代码在卸载的时候就蓝屏了,而更改后的代码就不会蓝屏了.前面我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论