阅读:1270回复:5
ndis2网卡驱动:到底是我Bind时出的问题还是umb出的问题(30分答谢)?问题已解决
Bind是这么回事:DOS启动时加载各协议模块和网卡驱动,这些模块都RegisterModule,协议模块都会在RegisterModule时指定BindingLists,之后ProtMan会根据这些BindingLists信息依次调用协议模块的InitiaBind,并把协议模块要绑定的模块的CommonCharacteristics传过去,协议模块再根据CommonCharacteristics调用要绑定模块的Bind接口,这里就是我的网卡驱动的Bind接口。至于Bind接口我已经把ndis201看了不知多少遍,很简单的一个接口,我实在不敢再认为我会在这里犯错误了。所以现在我认为可能的确是umb的问题,因为如果我不加载softice,net initialize时会出现\'-null pointer assignment\'错误提示,但能\'the command completed successfully\',加载softice后就没有这个提示了,只是tcptsr一直过不去,始终会出现现\'NET0125: NETBIND must be executed before TCP/IP TSR module is loaded. Unloaded TCP 1.0 not loaded.\'提示。可我用\'mem /a/d/p\'看了一下,内存还有很多啊,tcpdrv也加载了,我对dos内存不懂,各位能不能说详细点,我的问题到底出在什么地方?
[编辑 - 11/16/02 by silan] |
|
|
沙发#
发布于:2002-10-31 21:08
我特意跟踪了一下TCPTSR,其中有一段代码:
mov ax, cx mov ds, ax mov byte ptr[070Fh],07h mov bx, [070Dh] ----:值为0005,应该是某个handle mov dx, 070Fh mov ax, 4402h mov cx, 0019h int 21h 我看了一下,执行int21h前ds:dx的内容是\"07 00 00 00 00 00 00 00 00 00 00 ......\",执行后变成\"07 07 00 00 00 00 00 ......\",可是我用rtl8139的网卡跟踪了一下,执行前ds:dx也是\"07 00 00 00 00 00 00 00 ......\",执行后变成\"07 00 00 00 62 00 A7 0C 00 00......\",以上省略号代表\"00\",我看了一下0CA7:0062指向了网卡的MACServiceCharacteristics(不是CommonCharacteristics)。我想我的问题可能还是出在前面,但我实在在我的绑定那一块代码中找不出问题。是不是UMB造成的问题我又还不知道怎么检测。我该怎么办啊??? |
|
|
板凳#
发布于:2002-11-01 09:15
我看了一下,上面bx指向的句柄应是TCPDRV。
|
|
|
地板#
发布于:2002-11-01 10:13
哪儿能找到TCPTSR或TCPDRV的接口说明吗?
|
|
|
地下室#
发布于:2002-11-04 14:15
协议上说网卡驱动在初始化时,要做:1.打开设备PROTMAN$;2.调用PROTMAN的GetProtocolManagerInfo,获得网卡的信息(如DMA等);3.调用PROTMAN的RegisterModule,提交自己的CommonCharactristics。第二步我没做,因为我用不到这些,我想这没有关系吧,不至于因为我没调用GetProtocolManagerInfo然后在Bind被调用后还出问题吧!?
|
|
|
5楼#
发布于:2002-11-08 09:23
谁能给点提示啊!?
|
|
|