当前位置: 首页 > news >正文

驱动开发错误汇编

本博文将会不定期更新。以便记录我的驱动开发生涯中的一些点点滴滴的技术细节和琐事。

1. link阶段找不到导出函数

比如"LNK2019 无法解析的外部符号 _FltCreateCommunicationPort@32"。

出现这种情况的原因是,驱动的编译环境忽略了所有的默认库,但是像"FltMgr.lib"等内核库也被忽略,因此在文件中添加"#pragma comment(lib,“FltMgr.lib”)"也是无效的,只能在”属性->链接->输入->附加依赖项“中,手动添加需要的内核lib库。

2. minifilter驱动的安装

FltRegisterFilter函数参数检查合法,但是返回STATUS_OBJECT_NAME_NOT_FOUND,原因是安装驱动时注册表下缺少Instance等项。
在这里插入图片描述

其中Instances下的键值如下:

在这里插入图片描述
xxx Instance下的键值如下:
在这里插入图片描述

详细说明见:https://blog.csdn.net/lionzl/article/details/40709827

https://bbs.kanxue.com/thread-262815.htm

https://stackoverflow.com/questions/42389211/fltregisterfilter-not-working

3. minifilter驱动的卸载

fltmc load xxx:加载驱动
fltmc unload xxx:卸载驱动
前提条件是FltRegisterFilter调用时,FLT_REGISTRATION中未指定FLTFL_REGISTRATION_DO_NOT_SUPPORT_SERVICE_STOP。否则,驱动无论如何都不支持卸载。

4. 驱动程序的启动方式

驱动安装时若指定启动方式为SERVICE_BOOT_START,CreateService返回错误码是87。
解决方案:把驱动文件复制到C:\Windows\System32\Drivers目录,然后安装即可成功。

5. minifilter回调函数的返回值

typedef enum _FLT_PREOP_CALLBACK_STATUS {FLT_PREOP_SUCCESS_WITH_CALLBACK,FLT_PREOP_SUCCESS_NO_CALLBACK,FLT_PREOP_PENDING,FLT_PREOP_DISALLOW_FASTIO,FLT_PREOP_COMPLETE,FLT_PREOP_SYNCHRONIZE,FLT_PREOP_DISALLOW_FSFILTER_IO} FLT_PREOP_CALLBACK_STATUS, *PFLT_PREOP_CALLBACK_STATUS;

上述枚举类型的含义在如下链接:
https://www.cnblogs.com/blck/p/15557931.html

6. 头文件包含错误

在 Windows Vista WDK 之前,用于驱动程序开发的主要头文件为 Wdm.h、Ntddk.h 和 Ntifs.h,它们包含很多重复声明。

从 Windows Vista 版本的 WDK 开始,Wdm.h、Ntddk.h 和 Ntifs.h 将按层次结构来组织并且不包含重复信息。上层的文件将包含下层的文件。每个函数和结构声明仅出现一次。

Ntifs.h 包含 Ntddk.h,而 Ntddk.h 又包含 Wdm.h。因此,如果同时出现wdm.h, ntddk.h ,ntifs.h会发生编译错误。

在这里插入图片描述

http://www.lryc.cn/news/154925.html

相关文章:

  • 知识图谱项目实践
  • stable diffusion实践操作-提示词-人物属性
  • RabbitMQ的安装和配置
  • WebRTC 日志
  • 【python爬虫】16.爬虫知识点总结复习
  • Windows系统中Apache Http服务器简单使用
  • Django ORM 框架中的表关系,你真的弄懂了吗?
  • 第五课:C++实现加密PDF文档解密
  • 罗马数字转整数
  • processflow流程图多人协作预热
  • PCL点云处理之快速计算多个点到同一直线的距离(二百零五)
  • xxl-job 任务调度搭建及简单使用
  • mysql数据库使用技巧整理
  • 车规微控制器的ECC机制及EMU外设
  • Less的强大变量用法
  • 【相机标定】opencv python 标定相机内参时不计算 k3 畸变参数
  • html 标签简介
  • dos汇编总结
  • 四川玖璨电子商务有限公司:短视频有什么运营
  • 混合查询多家快递,快速掌握物流信息
  • 独立站新手引流,谷歌SEO工具汇总
  • SpringMvc 与 Lombok 碰撞导致 JSON 反序列化失败
  • 怎么样显卡叠加,什么是NVIDIA 显卡 非公、公版、涡轮卡
  • CentOS安装Elasticsearch集群
  • 计算机专业毕业生指南
  • Springboot集成Docker并将镜像推送linux服务器
  • 数字孪生与GIS:智慧城市的未来之路
  • nas汇编程序的调试排错方法
  • 【网络安全带你练爬虫-100练】第21练:批量获取文件夹中文件名
  • Unittest自动化测试框架vs Pytest自动化测试框架