阅读:1863回复:2
询问:pcmcia接口的ethernet驱动不能执行MiniportInitialize()的问题?
因为工作需要,我写了一个PCMCIA接口ethernet的驱动,98下用。安装后,DriverEntry()的返回结果未SUCCESS,
在网络邻居->属性中看,网络设备与协议的绑定也有了。 但设备管理器中,设备状态始终为:此设备的NDIS.vxd,NTKERN.vxd设备装载程序无法加载设备驱动程序。(code. 2.) 因为98驱动安装后要重新启动设备,我无法确定在启动过程中是否调用了MIniportInitialize(),所以我在MIniportInitialize()就调用RecordInfo() 如果MIniportInitialize()运行,RecordInfo()就会在硬盘上写一个记录文件。 但实际的结果是:记录文件中没有任何内容,也就是说,MIniportInitialize()根本就没有运行。 1)用其他方式测试表明,98中RecordInfo()时 没有问题的 2)用Waltoney提供的工具,可以检测我编译后的程序没有引入98不支持的函数入口 3)驱动程序在2k中可以使用 4)98中,我的source 文件编译指示为: C_DEFINES=$(C_DEFINES) -DNDIS30 -DNDIS_MINIPORT_DRIVER -DNDIS30_MINIPORT -D_WIN98 -DBINARY_COMPATIBLE 5)我找到98中DLink660 PCMCIA网卡的inf文件,发现其协议副版本MinorNdisVersion = 0x0a,主版本为3 我还察看了其他一些驱动的代码如Ne2000 发现也是如此,但是如果我将我的协议MinorNdisVersion = 0x0a,则注册miniport返回 status = 0xc0010005,一个我没有找到的代码说明。 综上述,有哪位好心的高人,知道问题处在哪里,请不吝赐教。鄙人将甚为感激! DriverEntry() { NDIS_HANDLE NdisWrapperHandle; NDIS_MINIPORT_CHARACTERISTICS MyDeviceChar; //init wrapper NdisMInitializeWrapper( &NdisWrapperHandle, DriverObject, RegistryPath, NULL ); //clear zero NdisZeroMemory(&MyDeviceChar, sizeof(NDIS_MINIPORT_CHARACTERISTICS)); MyDeviceChar.MajorNdisVersion = 3; MyDeviceChar.MinorNdisVersion = 0; MyDeviceChar.InitializeHandler = MiniInit; MyDeviceChar.HaltHandler = MiniHalt; MyDeviceChar.QueryInformationHandler = MiniQuery; MyDeviceChar.SetInformationHandler = MiniSet; MyDeviceChar.ResetHandler = MiniReset; MyDeviceChar.SendPacketsHandler = MiniSendPacket; MyDeviceChar.ISRHandler = MiniIsr; MyDeviceChar.HandleInterruptHandler= MiniIsrDpc; MyDeviceChar.CheckForHangHandler= MiniCheck; //register miniport Status = NdisMRegisterMiniport( NdisWrapperHandle, &MyDeviceChar, sizeof(NDIS_MINIPORT_CHARACTERISTICS) ); if(Status != NDIS_STATUS_SUCCESS) NdisTerminateWrapper(NdisWrapperHandle, NULL); return Status; } MiniInit() { .... RecordInfo(); //系统重新启动时,就会写记录文件 ...... } |
|
最新喜欢:iwub |
沙发#
发布于:2004-03-09 16:43
我碰上的问题和你一样,不知道你现在解决了没有。若解决了,告诉兄弟一生,不胜感激
|
|
|
板凳#
发布于:2004-03-21 16:06
改成ndis50_miniport_characteristics试一下。
|
|
|