社区
硬件/系统
帖子详情
驱动中如何访问PCI设备的资源?
zkxz
2005-05-20 12:22:19
我要写个程序来访问一个PCI设备上的资源,这个资源类型是memory,映射到线性地址空间的一个地址(这个地址我可以取到)。我知道要要访问它需要ring0代码,也就是得写驱动,简单的驱动会写,但不知道驱动中怎么访问PCI设备的资源,好象要用HalTranslateBusAddress。请问大家具体怎么做啊?
...全文
255
8
打赏
收藏
驱动中如何访问PCI设备的资源?
我要写个程序来访问一个PCI设备上的资源,这个资源类型是memory,映射到线性地址空间的一个地址(这个地址我可以取到)。我知道要要访问它需要ring0代码,也就是得写驱动,简单的驱动会写,但不知道驱动中怎么访问PCI设备的资源,好象要用HalTranslateBusAddress。请问大家具体怎么做啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zkxz
2005-06-08
打赏
举报
回复
拖的太久了,不好意思!
给分先!
piaochen_2002
2005-05-28
打赏
举报
回复
还有其他的方法,这个比较简单!
piaochen_2002
2005-05-28
打赏
举报
回复
HalTranslateBusAddress( Isa, //总线类型PCI 为0
0,
PortAddress, //用户传来的需访问的物理地址
&MemType, //为0表示存储器,为1表示I/O口
&MappedAddress ); //被转换的物理地址
//存放设备特定状态信息的数据结构
pLocalInfo
=(PLOCAL—DEVICE—INFO)DeviceObject->
DeviceExtension;
if (MemType == 0) //意味着对存储器的操作
{
//映射为在内核中可读写的地址
pLocalInfo->PortBase
= MmMapIoSpace(MappedAddress, PortCount, FALSE);
*(PUCHAR)pIOBuffer = READ—REGISTER—UCHAR((PUCHAR)((ULONG) pLocalInfo->PortBas) );
}
else //MemType=1意味着对I/O口的操作
{
//系统所认可的I/O口地址即是映射到内核中的I/O口地址
pLocalInfo->PortBase
=(PVOID)MappedAddress.LowPart;
*(PUCHAR)pIOBuffer = READ—PORT—UCHAR
((PUCHAR)((ULONG) pLocalInfo->PortBase
+nPort));
}
zkxz
2005-05-27
打赏
举报
回复
没有人写过吗?
alphapiao
2005-05-24
打赏
举报
回复
先得到设备IO空间的基地址,
再得到设备寄存器的地址和缓冲区的地址,
地址需要转换成线性地址才可以被win32程序操作。
zkxz
2005-05-24
打赏
举报
回复
多谢alphapiao(奉旨灌水钦差) ,过程我也知道。
但就是代码具体不知该怎么写。
zkxz
2005-05-23
打赏
举报
回复
多谢楼上的兄弟帮我顶!
一起等呆高手!
xift_2008
2005-05-23
打赏
举报
回复
学习~~~
Windows
驱动
开发系列之二:WDM
设备
驱动
开发入门
我们逐步深入,在系列一的基础上慢慢推进,开始学习WDM
驱动
模型,包括重要的IRP及派遣函数,具体章节包括: 1)PNP即插即用管理 2)电源管理 3)IO端口管理 4)
PC
I配置空间管理 Windows内核开发寄语: 1、...
第21章
PC
I
设备
驱动
之
PC
I
设备
驱动
结构
21.2
PC
I
设备
驱动
结构21.2.1
PC
I
设备
驱动
的组成
PC
I 只是一种总线,具体的
PC
I
设备
可以是字符
设备
、网络
设备
、USB 主机控制器等,因此,一个通过
PC
I 总线与系统连接的
设备
的
驱动
至少包含以下两部分内容。...
Linux内核
pc
i总线
驱动
和
pc
i
设备
驱动
注册过程
此时,
设备
驱动
程序将创建
设备
对象并为其分配
资源
,并将其添加到系统
设备
层次结构
中
。2、当
PC
I总线上新
设备
被发现时,
PC
I总线
驱动
会调用
pc
i_device_probe()函数,该函数会遍历总线上所有已注册的
设备
驱动
程序并尝试...
WDF
驱动
中
访问
PC
I
设备
配置空间
Windows XP 和 Windows Server 2003 及更高版本的操作系统可以独占控制
PC
I 本地总线规范定义的配置空间标头以及功能链接列表
中
的所有功能。
驱动
程序不得尝试修改这些寄存器。 但是,
驱动
程序可以使用 IRP _ MN _ ...
linux 查看
pc
i
设备
驱动
,如何写linux
pc
i
设备
驱动
程序
0.
Pc
i
设备
驱动
程序的结构现在有两种风格的的
pc
i
驱动
程序结构:新风格的
驱动
(即让
pc
i层来做大量
设备
探测工作并且支持热插拔功能)和旧风格的
驱动
(即由
驱动
程序自己探测
设备
)。除非你有很好的理由,否则就不...
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章