wangbnly
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2008-08-03
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1704回复:8

应用程序如何访问内核申请的一块静态内存

楼主#
更多 发布于:2008-07-15 10:32
操作系统环境:Windows XP/2003
问题:在应用程序如何才能得到访问这块空间的用户虚拟地址?

我在驱动中分配了一块共享空间,现在已知这块空间的内核虚拟地址,物理地址。应用程序也可以得到这块空间的虚拟地址和物理地址,但是却不能直接使用内核虚拟地址进行访问,因为每个应用程序有它自己独立的空间,所以需要将这块空间映射到用户的虚拟地址上,向老牛们请教应该如何做?
补充说明:我的驱动程序可以提供需要的Support.
wangbnly
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2008-08-03
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-15 14:38
第一次发言,麻烦知道的大大给个提示
petsatan
驱动牛犊
驱动牛犊
  • 注册日期2007-09-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望133点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-15 16:32
可以通过驱动 自定义IOCTL码来实现。
stevensn
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2010-12-11
  • 粉丝1
  • 关注0
  • 积分30分
  • 威望58点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-07-15 17:26
用MDL转换不知道是否可以?
日出松山坳,晨钟惊飞鸟
wangbnly
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2008-08-03
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-07-15 20:56
引用第2楼petsatan于2008-07-15 16:32发表的  :
可以通过驱动 自定义IOCTL码来实现。

我申请的是一片很大的空间用来存放数据,让上层直接访问
用IOCTL好像效率就慢了一些。

引用第3楼stevensn于2008-07-15 17:26发表的  :
用MDL转换不知道是否可以?

我在驱动做了MDL,请教应用层应该怎么访问?
stevensn
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2010-12-11
  • 粉丝1
  • 关注0
  • 积分30分
  • 威望58点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-07-16 09:20
应用层访问的常规方法就是IOCTL,user mode 和kernel mode是隔离的,联通的方式就是DeviceIoControl,当然这是对于常规的WDM驱动,显示驱动可能不同。 你指的效率低,是指应用程序采用轮询的方式吧,如果采用驱动中进行事件通知的方式,效率是不会低,也就是说驱动中收到数据后,触发一个同步事件,释放正在等待的应用程序来处理。
日出松山坳,晨钟惊飞鸟
wangbnly
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2008-08-03
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-07-16 10:28
我申请的这块内存是存放DMA传输过来的数据,当内存块被放满之后,通过IOCTL告诉应用程序自动去取。但是却不能用IOCTL去传输这么大一块数据,因为下一块数据马上又会来,所以最快的方式是让应用程序直接访问这块空间,实现数据零拷贝。
并且这块空间要同时让好几个应用程序访问,所以我希望在应用程序上做映射得到这块空间的虚拟地址,就是不知道应该怎么做。
ysy
ysy
驱动中牛
驱动中牛
  • 注册日期2002-02-18
  • 最后登录2008-08-25
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望29点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-07-18 13:09
MmMapxxx
wangbnly
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2008-08-03
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-07-22 09:20
请教具体怎么做
游客

返回顶部