阅读:958回复:3
我说得细了一点,希望有人帮一下忙(20分)
我有一个w2k下的LLC驱动(应该是属于Net Driver一类的)文件(.sys),我写了一个简单的.inf文件,对它进行安装,安装过程没什么错误
出现,而且,安装完后,系统的“协议”中出现了我的LLC协议项,但是我发现,我的.sys文件根本就没有被执行,也就是说根本没有进入Driv erEntry函数。 为此,我参考了w2k自带的AppleTalk协议的.inf文件,我只是把其中指明AppleTalk的.sys的地方改成了我自己的.sys,这样,我发现我的.sys 被执行了,也即进入DriverEntry了。 我不知道这是为什么,我最想知道的是:在inf文件中需要怎样设置才能使我的.sys文件在安装时执行进行初始化? 不知道大家以前有没有遇到过这样的问题。 我的前一个贴子可能没有说的太仔细,事情是这样的,我不太会用Driver的开发工具,对于Debug信息的产生,我没有试过,我是用这种方法跟 踪的:我在DriverEntry的开头打开一个文本文件,将跟踪信息fprintf到文件中。我是在DDK For 2000中用Build.exe手工编译的,加入了fprintf所要求的库后,编译链接我的.sys文件,成功。当我用AppleTalk的.inf安装我之前没有fprint f语句的.sys文件时,安装好后,我发现系统设备中出现了.sys中所加的设备(Device),没有错误提示,但是我用有fprintf语句的.sys文件 安装时,在安装时,它就提示执行.sys文件时出错,我想应该是.sys文件中不能有对文件读写的代码,所以我知道,安装时一定是执行了我的D riverEntry函数,但是我用自己写的.inf文件安装有fprintf语句的.sys文件时,没有提示执行.sys文件错,说明肯定没有执行DriverEntry函 数,因为如果执行一定会出错。所以我想知道,是inf文件中的什么部分可能会导致.sys文件不被执行。 |
|
沙发#
发布于:2002-08-08 11:07
我也发现过同样的问题,现象是这样的:
如果驱动已经装载过,如果卸掉重装则DriverEntry不执行,但系统重启时会执行;如果这个驱动在系统启动时没有装载过,则第一次安装时会执行DriverEntry |
|
|
板凳#
发布于:2002-08-08 13:29
运行在和心态的代码,一般情况下,除了标准C里的一些函数可以使用外,一般情况下是不能随便调用用户态的函数的,以前我也发过类似的问题,当时,公司的头要我调用一个用户态的API,我的第一感觉就不行!
|
|
地板#
发布于:2002-08-08 15:44
弟兄们,在imd等底层驱动中不要调用上层(用户级)的api或库函数如printf, malloc等。会出问题的。
调试这些驱动,可以装一个softice,在代码中加入dbgprint打印语句。 |
|
|