旅游网站建设前的市场分析,页面设计模板图片,阿里云认证网站建设,做网站实现登陆功能本博文将会不定期更新。以便记录我的驱动开发生涯中的一些点点滴滴的技术细节和琐事。
1. link阶段找不到导出函数
比如LNK2019 无法解析的外部符号 _FltCreateCommunicationPort32。
出现这种情况的原因是#xff0c;驱动的编译环境忽略了所有的默认库#x…本博文将会不定期更新。以便记录我的驱动开发生涯中的一些点点滴滴的技术细节和琐事。
1. link阶段找不到导出函数
比如LNK2019 无法解析的外部符号 _FltCreateCommunicationPort32。
出现这种情况的原因是驱动的编译环境忽略了所有的默认库但是像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_STARTCreateService返回错误码是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会发生编译错误。