阅读:2873回复:5
急!怎样让.sys文件执行起来?
我有一个w2k下的LLC驱动(应该是属于Net Driver一类的)文件(.sys),我写了一个简单的.inf文件,对它进行安装,安装过程没什么错误出现,而且,安装完后,系统的“协议”中出现了我的LLC协议项,但是我发现,我的.sys文件根本就没有被执行,也就是说根本没有进入DriverEntry函数。
为此,我参考了w2k自带的AppleTalk协议的.inf文件,我只是把其中指明AppleTalk的.sys的地方改成了我自己的.sys,这样,我发现我的.sys被执行了,也即进入DriverEntry了。 我不知道这是为什么,我最想知道的是:在inf文件中需要怎样设置才能使我的.sys文件在安装时执行进行初始化? 不知道大家以前有没有遇到过这样的问题。 |
|
沙发#
发布于:2002-08-08 08:29
天下驱动大家抄!
兄弟这样已经可以了。 试问:哪个MINIPORT的DRIVER没有抄NE2000的痕迹? |
|
板凳#
发布于:2002-08-08 08:46
DriverEntry其实早就执行了,它只是告诉系统所注册的处理函数。
你可以在所注册中的函数(比如发送)中设置断点,观察程序的运行情况。 至于在DriverEntry中设置断点,我也没试过,可能要将SoftICE设置成“系统启动时加载”。 |
|
地板#
发布于:2002-08-08 09:25
如果安装成功,初始化(DriverEntry)肯定已经执行过了。不知道你是怎么“发现”的。
你可以在DriverEntry中设置调试语句DbgPrint(\"调试信息\");从DS的Driver Monitor或Dbgview中看到该信息,判断初始化是否被执行。或者使用softICE(需要设置断点)调试。 |
|
|
地下室#
发布于:2002-08-08 10:06
我的前一个贴子可能没有说的太仔细,事情是这样的,我不太会用Driver的开发工具,对于Debug信息的产生,我没有试过,我是用这种方法跟踪的:我在DriverEntry的开头打开一个文本文件,将跟踪信息fprintf到文件中。我是在DDK For 2000中用Build.exe手工编译的,加入了fprintf所要求的库后,编译链接我的.sys文件,成功。当我用AppleTalk的.inf安装我之前没有fprintf语句的.sys文件时,安装好后,我发现系统设备中出现了.sys中所加的设备(Device),没有错误提示,但是我用有fprintf语句的.sys文件安装时,在安装时,它就提示执行.sys文件时出错,我想应该是.sys文件中不能有对文件读写的代码,所以我知道,安装时一定是执行了我的DriverEntry函数,但是我用自己写的.inf文件安装有fprintf语句的.sys文件时,没有提示执行.sys文件错,说明肯定没有执行DriverEntry函数,因为如果执行一定会出错。所以我想知道,是inf文件中的什么部分可能会导致.sys文件不被执行。
|
|
5楼#
发布于:2002-08-09 18:14
老弟呀,象fprintf这样的函数通常是不能在ring0中call的,你可同其它一些的kernel文件操作函数来实现
|
|
|