调试nullfilter

最近开始学写驱动,编译环境是找网上的“Windows 7 + Visual 2010 + WDK 7600驱动开发环境配置方法”来配置的,先前运行一些小NT/WDM驱动也正常,今天拿DDK的示例代码来玩,想想文件过滤驱动稍简单一点,不涉及硬件,又minifilter比较实用,可是打开一看好几个地方显示错误信息,以我的菜鸟水平看不出什么问题,只好放弃,再看一下DDK的说明,捡个最简单的Nullfilter先玩一下,打开后编译器还是提示有二处错误,在

NullQueryTeardown和NullUnload下面红红的波浪线,错误是类型不匹配,坑爹啊,这二个是回调函数,只好查回调函数类型定义,发现nullfilter文件的函数定义少了FLTAPI(其实就是__stdcall)修饰,增加相应的修饰符后总算没见报错,可是一运行生成,提示三个函数
FltUnregisterFilter、FltRegisterFilter、FltStartFiltering 错误,错误信息类似:"1>nullFilter.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 [email protected] 中被引用”,网上搜一下相关的错误的解决办法,试了几个也不行,后来一想打开WDK的文件夹,看了一下source文件,发现需要包含fltMgr.lib,于是在前面加上pragma comment(lib,"fltMgr.lib"),再生成还是一样的错误,真是一头的黑线,难道微软的文件有问题?于是打开WINDDK的命令行编译工具,转到相应目录,运行build,居然成功!问题出在哪里呢?晕了,后来打开项目属性查看,看到链接-输入-附加依赖时顿时想到是否这里有问题,于是在链接依赖那里加上fltMgr.lib试一下,再就生成成功了,此时取消刚才的pragma comment(lib,"fltMgr.lib")语句也能生成成功,平常写一般的程序加了这个语句应该就会包含指定的库,可能是是因为配置了“忽略所有默认库”的原因导致此语句不起作用了吧。  估计网上的配置方法作者很少玩文件过滤驱动,所以少了fltmgr.lib项,因此开发文件过滤驱动的时候要记得加上fltMgr.lib  ps:驱动比一般的程序要麻烦很多。
时间: 2024-10-13 15:59:24

调试nullfilter的相关文章

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

微信开发之本地接口调试(非80端口,无需上传服务器服务器访问

前言: 本文是总结在开发微信接口时,为方便开发所采取的一些快捷步骤,已节省开发人员难度开发时间从而提高开发效率. 本地测试: (提醒,在本地模拟微信get或post数据时先将校验参数注释掉) 利用微信模拟器weixinPost进行模拟发送xml数据 由于这个软件是微信没公开高级接口时公布的,所以对于高级接口的调试,笔者利用的是Fiddler这个抓包工具模拟post数据 高端测试: 利用反向代理软件ngrok访问本地项目: ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之

PHPStorm调试PHP代码~实际操作+mark~~

因为wamp自己已经下载了xdebug,只要配置开启就行了. 1. 配置php.ini(有就打开注释,没有就加上) XDEBUG Extension[xdebug]zend_extension ="D:/wamp64/bin/php/php5.6.25/zend_ext/php_xdebug-2.4.1-5.6-vc11-x86_64.dll"xdebug.remote_enable = 1;远程主机xdebug.remote_host = localhost;主机端口xdebug.r

Tomcat配置远程调试端口(windows、Linux)

当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081" // Windows系统:

Android APP 调试过程中遇到的问题。

调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Android APP 调试过程中遇到的问题. >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007192169/AndroidAPP调试过程中遇到的问题.html

Linux-hexdump命令调试event驱动—详解(13)

hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 1.调试 键盘驱动 讲解 当我们insmod挂载了键盘驱动后,找到键盘驱动被放在event1设备里, 此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来? 通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层,此时的用户层就是hexdump 因为键盘驱动的input_handler 是:evdev_handler 所以键盘驱动的read函数是: evdev_handle

调试信息的完成

gdb中-x是为了实现通过文件的初始化gdb GAS(gcc)(AT&T 语法),NASM(Intel 语法) 当boot loader 引导操作系统的时候,机器必须有如下的状态: EAX: 必须包含魔数OX2BADB002,这个值告诉操作系统目前它是由兼容的Multiboot 的boot loader 引导的. EBX: 必须包含boot loader 提供的多重引导信息结构(见3.3 节多重信息引导结构)的32位物理地址. CS: 必须是32 位的读/执行的代码段,偏移是0 以及界限是 0X

gdb调试

[前言]使用gdb调试前,在编译程序时,要加 -g 选项,否则你将看不见程序的函数名.变量名,所代替的全是运行时的内存地址. 1.开始调试 a.  gdb <program> program也就是你的执行文件,一般在当前目录下. b. gdb <program> core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件. 2.[列出源码],从第n行开始(编译时要加 -g 选项) l n 3.[设置断点]在第N行加断点 break

WebPack+WebStorm调试

怎么用webstorm来调试WebPack? 今天查了很多文档,最终在官网上耐心看完英文文档后,才解决.附上链接:https://blog.jetbrains.com/webstorm/2015/09/debugging-webpack-applications-in-webstorm/ 工具简介 Windows7 WebStorm2017 Webpack2 谷歌浏览器(默认浏览器) 操作 在Project视图里找到index.html,右击进入Debug模式 WebStrom会自动进入Debu