阅读:3258回复:5
求助,有关miniport/usb?
现在我正在开发一个CableModem的驱动程序。上沿是NDIS,下沿用WDM(USB)。在测试机上安装此驱动程序,在设备管理器中出现一个网络适配器。设置好IP地址,ping 一任意地址,出现unreachable address.用IE浏览出现网络为绑定。
用WINDBG调试,MiniportInitialize调用成功。随后执行MiniportQueryInformation 和MiniprotSetInformation. miniport定时调用getbuff 从USB获得数据。 在使用Ping和IE时未见调用MiniportSend. 请各位高手指点那里除了错误,是不是MiniportQueryInformation 对此类驱动有特殊要求? 谢谢! |
|
最新喜欢:superj... |
沙发#
发布于:2001-04-06 08:31
在网卡安装后,不管是否有tcp/ip,NDIS会定时调用MINIPORTSEND
从你的情况来看,可能是初始化或OID有问题。 对了,我对usb的用法感兴趣,不知是否赐教? |
|
|
板凳#
发布于:2001-04-08 10:39
谢谢。
我最后发现是在响应OID_GEN_RECEIVE_BLOCK_SIZE时出错。我把此查询值误设成了4,导致ndis认为我的miniport不支持tcp/ip包。以至不能绑定。 不知您想知道usb那方面的知识。我在这儿简单的说一下我的用法。 在driver中我使用bulk方式传输数据。 1 发送数据。 当有一包ip数据要发送时,首先创建irp.然后创建urb并填充各属性。把urb放入usb驱动堆栈,设置完成例程,最后调用IoCallDriver 发送数据。最重要的一点是当ip数据长度是usb管道最大尺寸的整数倍时,一定要在发送一个数据长度为0的USB包作为结束符(这个特性是usb协议决定的,请查看usb规范1.1。(->OUT<-DATA0->ACK->DATA1->ACK..... 在此过程中,DATA0和DATA1的数据长度应是USB管道的最大长度。当一个小于USB管道的最大长度的数据包出现时认为一次IN或OUT传输结束。))。 2 接收数据 我创建了一个polling线程(PASSIVE LEVEL)。定时查询usb总线(interval time 1秒)。其中有关USB包的处理基本与1相同。 |
|
地板#
发布于:2003-04-21 11:17
Hjj,
我正准备写一个802.11b的USB网卡的Driver,请问你是否参考了DDK里的例子?你觉的像e100bex是否适合做NDIS upper edge的参考呢?请多多指教! |
|
地下室#
发布于:2004-06-07 23:06
Hjj, 我也正在为一个usb设备写ndis miniport driver,但创建irp接收数据失败,返回的irp->iostatus.status是0xC000000D,说我传的参数不对,但我几乎是从walter oney的sample照搬的,实在不知道错哪儿了,可不可以把你接收数据、发送数据从创建irp到调用IoCallDriver的代码发给我参考参考,多谢了!
请发送到 gubaoqiang@263.net 拜托了! |
|
5楼#
发布于:2009-05-31 17:19
Hjj, 我正在学习 usb 网卡的例子, 每次在 调用 IoCallDriver 时返回 0xC0000010, 查了一下, 有人说是没有指定 IOCTL_INTERNAL_USB_SUBMIT_URB 的处理函数..., 可在 DriverEntry 里也没处定义啊.., 大虾请指教啊....
|
|
|