编写win64驱动wdf环境下如何访问PCI的配置空间

编写win64驱动wdf环境下如何访问PCI的配置空间,第1张

给出一个解决方法

把PCI_COMMON_CONFIG的第一个成员:(wdm.h的32015行)

PCI_COMMON_HEADER DUMMYSTRUCTNAME

修改为

PCI_COMMON_HEADER  PCIHeader//

////////////////////////////////////////////////////////////////////////////////////

DisplayCfgSpace(3, 0, 0) // 3,0,0 需要看下设备管理器的器纤漏件属性观察得到 第一个是总线迹核号,第二个是设备号码,第三个是功能号,可以在 evtPreparaHardware这个函数的末尾调用获取配置空间的信息~

///////////////////////////////////////////////////////////////////////////////////

测试实现代码:

#define PCI_CONFIG_ADDRESS (PULONG)(0xCF8)

#define PCI_CONFIG_DATA (PULONG)(0xCFC)

#define KdrPrint DbgPrint

void DisplayCfgSpace(int bus, int dev, int fn){

unsigned long dwAddr, dwData

PCI_COMMON_CONFIG PciConfig

PCI_SLOT_NUMBER SlotNumber

// PCI_CAPABILITIES_HEADER CapabilityHeader

// UCHAR CapabilityOffset

SlotNumber.u.AsULONG = 0

SlotNumber.u.bits.DeviceNumber = dev// 设置设备号

SlotNumber.u.bits.FunctionNumber = fn// 设置姿竖掘功能号

dwAddr = 0x80000000 |( bus <<16 ) | ( SlotNumber.u.AsULONG <<8 )

// 得到配置空间

for (int i = 0i <0x100i += 4){/* 256 字节的 PCI 配置空间 */

#if 0

SetPortVal ( PCI_CONFIG_ADDRESS, dwAddr | i, 4 )

GetPortVal ( PCI_CONFIG_DATA , &dwData , 4 )

#endif

WRITE_PORT_ULONG(PCI_CONFIG_ADDRESS, dwAddr | i)

dwData = READ_PORT_ULONG(PCI_CONFIG_DATA)

memcpy (((PUCHAR )&PciConfig) + i,&dwData,4)

}

if (PciConfig.PCIHeader.VendorID == 0xFFFF){

KdrPrint("Read cfg space err!\n")

return// 无效设备

}

else

{

KdrPrint("bus: %d dev : %d fn : %d \n",bus, dev, fn)

KdrPrint("%x %x \n", PciConfig.PCIHeader.VendorID, PciConfig.PCIHeader.DeviceID)

}

}

///////////////////////////////////////////////////////////////////////////////////

嗨空简!

请您尝试更换一个USB接口或重新安装电脑系统试试。

更详细如亏键的描述问题有助于网友理解你遇到的麻烦,帮助你更准确的解决问题。谢谢你支渣巧持小米手机!

WDF01000.SYS是系统文卜档件,跟驱动有关系

楼主去重新安装Win7,如果还坦弊旦一直有这让扰个问题,或者安装不了,再看下面的原因的解决方法:

原因:

WIN7跟部分AHCI 也就是NCQ技术不兼容 网上已经有很多案例

解决方法:

进BIOS关闭 AHCI 改为IDE模式 再安装Win7一切正常了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8242357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存