drinkeryj
驱动老牛
驱动老牛
  • 注册日期2001-03-23
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1344回复:3

为什么读配置空间的时候出错

楼主#
更多 发布于:2002-01-24 09:33
并非重复发贴,而是发了的贴子在论坛中看不到。

一个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));

没登陆不让我给分,可是谁帮我解决了问题我把所有的分都给他。
以后怎么办? [img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
zhizl
驱动牛犊
驱动牛犊
  • 注册日期2001-05-18
  • 最后登录2002-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-01-24 11:28
我没遇到过这种情况。不过我想给你一点提示,希望能对你有用。
对于pci桥,windows应是透明处理的, 不需另外写什么驱动。
这点你可以在msft的网站看一篇关于windows如何处桥设备的文章。
你找一个msft站点。

关于你应确认是否该chipset是两个设备,有多种方法可以知道,
最简单是你再启动系统时按暂停键,BIOS会给你一份你的设备分配的本机设备资源列表,如是两个设备,会有功能0和功能1设备。按理不同功能设备对应不同的pci configuration space, 中断号应是一个.
两个设备你应对应访问不同的pci配置空间地址。

Maybe help u.



_____________________________ 虽然我不同意你的意见,但我坚决捍卫您发表意见的权利!!!
drinkeryj
驱动老牛
驱动老牛
  • 注册日期2001-03-23
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-01-24 15:39
确实是两个设备,我用softice的pci命令看到了两个设备,也有两个配置空间。但是用NdisReadPciSlotInformation读出来却只有一个设备的配置空间。slot参数是从0到31。
以后怎么办? [img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
drinkeryj
驱动老牛
驱动老牛
  • 注册日期2001-03-23
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-01-25 09:48
是win2k和winnt不兼容么怎么没有回答?
以后怎么办? [img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
游客

返回顶部