阅读:2332回复:10
各位大侠帮忙呀,NDISMRegiterDevice的问题!
在调用NdisMRegisterDevice的时候,要用到ntddk.h里的一些数据结构和常量,可是当包含ntddk.h和ndis.h且有:#define NDIS_WDM 1
在#include <ndis.h>前面,但编译的时候总是通不过,说我的IRP好象是不合法,哪位大侠遇到过这种情况,请指点一二,3ks! |
|
最新喜欢:fsb |
沙发#
发布于:2001-08-13 16:45
调用NdisMRegisterDevice的时候
需要编译irp吗 把你的代码和错误信息一起放上来 你的说法太不详细了 |
|
|
板凳#
发布于:2001-08-14 08:29
在调用NdisMRegisterDevice的时候,不是要传入一个函数数组,而这个数据中的函数一定要定义成这样的形式:
NTSTATUS PassthruDispatch( IN PDEVICE_OBJECT pDO, IN PIRP pIrp ) 虽然在调用NdisMRegisterDevice的时候不用PIRP这个结构,但在函数数组里要用,而这个PIRP结构是在ntddk.h里面定义的,就要包含ntddk.h,但这样compile不过去。我把函数数组写入一个Dispatch.c文件,把函数的声明放在dispatch.h文件里,compile的时候出现这样的错误: dispatch.h(9) : error C2146: syntax error : missing ')' before identifier 'pIrp' dispatch.h(9) : error C2081: 'PIRP' : name in formal parameter list illegal dispatch.h(9) : error C2061: syntax error : identifier 'pIrp' dispatch.h(9) : error C2059: syntax error : ';' dispatch.h(10) : error C2059: syntax error : ')' passthru.c(47) : error C2061: syntax error : identifier 'pirp' passthru.c(47) : error C2059: syntax error : ';' 但程序里并不缺少这些符号,不知道怎么回事,请大侠指点!!! |
|
地板#
发布于:2001-08-14 10:41
你做的要点是对的,还出现这个错误不是#include的问题,而是#define NDIS_WDM 1的问题,你试着将这个定义加到其他文件中(这个文件可能并没有PIRP的任何痕迹)。因为我无法知道你的文件结构,所以也就没有办法知道你到底应该加到哪个文件中了
|
|
|
地下室#
发布于:2001-08-14 10:53
你可以试试在她的Source文件中的C_DEFINES=$(C_DEFINES) -DNDIS40 -DNDIS_MINIPORT_DRIVER -DNDIS40_MINIPORT一行的后面加上-DBINARY_COMPATIBLE=0,我是这样试成功的。
|
|
|
5楼#
发布于:2001-08-14 12:31
谢谢各位,我已经compile过了,是在precomp.h里加的那句#define
可是还有问题,compile过后,加载服务,可在加载的时候,突然就篮屏了,我在“白”上好象有人说NdisMRegisterDevice与什么冲突,哪位大侠知道,怎么回事?谢谢乐!:) |
|
6楼#
发布于:2001-08-14 15:55
我现在也是遇见这个问题,现在可以判断的是
ndismregisterdevice和NdisIMRegisterLayeredMiniport 之间的问题,如果在程序中现运行ndismregisterdevice,那么 可以成功,但是,当运行到NdisIMRegisterLayeredMiniport 时就失败了。如果程序中把NdisIMRegisterLayeredMiniport放在 ndismregisterdevice,那么NdisIMRegisterLayeredMiniport 可以成功,但是ndismregisterdevice失败 |
|
|
7楼#
发布于:2001-08-14 16:11
上面那个问题,已经解决了,可能是我的收发程序有问题,具体的原因我没找到。我找了一个干净的passthru,把irp的dispatch处理加进去,然后运行就没事!现在可以与用户态交互了,谢谢各位帮忙 。
我还有一个问题,DriverObject->MajorFunction如果所有的都清空,只为处理一些ioctl,为什么系统的网络起不来!3ks! |
|
8楼#
发布于:2001-08-14 16:18
说一说你是怎样解决的嘛!大家也好学习一下。
|
|
|
9楼#
发布于:2001-08-14 16:30
是呀,能不能把你的驱动程序给我一份,或者
给我driverEntry()函数,我的e_mail是: baijbupt@263.net. 谢谢 另外,你的win32程序中的createfile函数时 怎么写的呢?能不能一并告知? |
|
|
10楼#
发布于:2001-08-14 17:15
不用了,谢谢,我也已经调出来了。
如果有人想要源代码的话,请看我发的另一片贴子: 《安装passthru。sys提示没有数字签名》。 祝大家天天向上! |
|
|