阅读:1344回复:3
为什么读配置空间的时候出错
并非重复发贴,而是发了的贴子在论坛中看不到。
一个8478的pci接口网络设备,8478本身提供pci接口同时也有网络功能.以前nt下的驱动程序可以正常运行,现在想把它移植到win2k下发现很多问题. 本来是一个设备,win2k找到两个:一个是网卡,另一个是pci桥.可是只有一个驱动程序,我把它当成网卡,inf文件也是按照网卡写的,安装失败,原因是驱动程序把它当成一个拥有两个功能的设备,可是在读配置空间的时候却只能读出网卡的,按理说在读第二个功能设备的时候应该读出pci桥设备的配置空间.以下是那段代码两次取出的居然是同一配置空间的数据!!!哪位高手看看帮忙看看是怎么回事. ThisAdapter->SlotNumber.u.bits.FunctionNumber = 0; Status = NdisMPciAssignResources( ThisAdapter->MiniportAdapterHandle, ThisAdapter->SlotNumber.u.AsULONG, &ThisAdapter->AssignedResources); BufferSize=NdisReadPciSlotInformation( ThisAdapter->MiniportAdapterHandle, ThisAdapter->SlotNumber.u.AsULONG, 0, (PVOID)&(ThisAdapter->PciFunctionZero), sizeof(PCI_CONFIG_SPACE0)); ...... ThisAdapter->SlotNumber.u.bits.FunctionNumber=1; Status = NdisMPciAssignResources( ThisAdapter->MiniportAdapterHandle, ThisAdapter->SlotNumber.u.AsULONG, &ThisAdapter->SecondaryAssignedResources); BufferSize=NdisReadPciSlotInformation( ThisAdapter->MiniportAdapterHandle, ThisAdapter->SlotNumber.u.AsULONG, 0, (PVOID)&(ThisAdapter->PciFunctionOne), sizeof(PCI_CONFIG_SPACE1)); 没登陆不让我给分,可是谁帮我解决了问题我把所有的分都给他。 |
|
|
沙发#
发布于:2002-01-24 11:28
我没遇到过这种情况。不过我想给你一点提示,希望能对你有用。
对于pci桥,windows应是透明处理的, 不需另外写什么驱动。 这点你可以在msft的网站看一篇关于windows如何处桥设备的文章。 你找一个msft站点。 关于你应确认是否该chipset是两个设备,有多种方法可以知道, 最简单是你再启动系统时按暂停键,BIOS会给你一份你的设备分配的本机设备资源列表,如是两个设备,会有功能0和功能1设备。按理不同功能设备对应不同的pci configuration space, 中断号应是一个. 两个设备你应对应访问不同的pci配置空间地址。 Maybe help u. |
|
|
板凳#
发布于:2002-01-24 15:39
确实是两个设备,我用softice的pci命令看到了两个设备,也有两个配置空间。但是用NdisReadPciSlotInformation读出来却只有一个设备的配置空间。slot参数是从0到31。
|
|
|
地板#
发布于:2002-01-25 09:48
是win2k和winnt不兼容么怎么没有回答?
|
|
|