操作系统环境:Windows XP/2003 问题:在应用程序如何才能得到访问这块空间的用户虚拟地址? 我在驱动中分配了一块共享空间,现在已知这块空间的内核虚拟地址,物理地址。应用程序也可以得到这块空间的虚拟地址和物理地址,但是却不能直接使用内核虚拟地址进行访问,因为每个应用程序...
全文
回复(8) 2008-07-15 10:32 来自版块 - 内核编程
表情
wangbnly请教具体怎么做(2008-07-22 09:20)
ysyMmMapxxx(2008-07-18 13:09)
wangbnly我申请的这块内存是存放DMA传输过来的数据,当内存块被放满之后,通过IOCTL告诉应用程序自动去取。但是却不能用IOCTL去传输这么大一块数据,因为下一块数据马上又会来,所以最快的方式是让应用程序直接访问这块空间,实现数据零拷贝。 并且这块空间要同时让好几个应用程序访问,所以我希...(2008-07-16 10:28)
stevensn应用层访问的常规方法就是IOCTL,user mode 和kernel mode是隔离的,联通的方式就是DeviceIoControl,当然这是对于常规的WDM驱动,显示驱动可能不同。 你指的效率低,是指应用程序采用轮询的方式吧,如果采用驱动中进行事件通知的方式,效率是不会低,也...(2008-07-16 09:20)
wangbnly引用第2楼petsatan于2008-07-15 16:32发表的 : 可以通过驱动 自定义IOCTL码来实现。 我申请的是一片很大的空间用来存放数据,让上层直接访问 用IOCTL好像效率就慢了一些。 引用第3楼stevensn于2008-07-15 17:26发表的 : ...(2008-07-15 20:56)
stevensn用MDL转换不知道是否可以?(2008-07-15 17:26)
petsatan可以通过驱动 自定义IOCTL码来实现。(2008-07-15 16:32)
wangbnly第一次发言,麻烦知道的大大给个提示(2008-07-15 14:38)

返回顶部