阅读:1609回复:4
ds中如何取得pci配置空间基址?紧急!(20分)
我在ds中使用KPciConfiguration类,在构造函数中实例化。
调用KPciConfiguration::WriteBaseAddress(0,0xFFFFFFFF); 再调用KPciConfiguration::ReadBaseAddress(0); 读出的值与0xFFFC相与,可是得到的地址跟计算机管理中显示的资源不同。为什么? 另外,是不是一般pci设备驱动只对第一个配置空间基址操作即可(共6个)? |
|
最新喜欢:Ice_Bi...
|
沙发#
发布于:2002-06-10 17:12
1、我在ds中使用KPciConfiguration类,在构造函数中实例化。
调用KPciConfiguration::WriteBaseAddress(0,0xFFFFFFFF); 再调用KPciConfiguration::ReadBaseAddress(0); 读出的值与0xFFFC相与,可是得到的地址跟计算机管理中显示的资源不同。为什么? 什么资源?内存地址范围? 2、另外,是不是一般pci设备驱动只对第一个配置空间基址操作即可(共6个)? 一般是这样。看你板子的设计了。 |
|
|
板凳#
发布于:2002-06-10 17:22
卡是映射在io空间的。在2000的系统资源中可以看到有两个io范围是分配到该设备的:e400~e43f;e800~e83f。
可是我在驱动中通过读取配置空间基址寄存器 (KPciConfiguration::WriteBaseAddress(0,0xFFFFFFFF); KPciConfiguration::ReadBaseAddress(0);)然后与fffc相与, 得到的值是第0和第四个基址是ffc0; 还有第3基址得到一个内存映射地址ffffffc0. ???????? |
|
|
地板#
发布于:2002-06-11 09:57
问题解决了,谢谢
|
|
|
地下室#
发布于:2002-06-11 12:22
恭喜恭喜!
一来为你问题的解决;二来为你也小升一级。 |
|
|