我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

« 1 2» Pages: ( 1/2 total )
本页主题: 有人做过驱动吗?win32下怎么样把核心内存映射到用户模式?? 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

coolboy





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 252
威望: 0
浮云: 1107
在线等级:
注册时间: 2005-10-02
最后登陆: 2016-04-25

5come5帮你背单词 [ inhibit /in'hibit/ vt. 抑制,约束,禁止,阻止 ]


有人做过驱动吗?win32下怎么样把核心内存映射到用户模式??

如题,核心地址空间分配的内存,想和用户态的进程共享。
顶端 Posted: 2007-06-11 11:24 | [楼 主]
solo独奏



性别: 帅哥 状态: 该用户目前不在线
头衔: 冰是睡着的水
等级: 荣誉会员
家族: YD一族
发贴: 6989
威望: 3
浮云: 379
在线等级:
注册时间: 2006-12-01
最后登陆: 2008-06-26

5come5帮你背单词 [ snap /snæp/ v. 突然折断,拍快照,猛咬,厉声说;vt. 抢夺;n. 抢夺,片段 ]


这个可有点技术含量...我认识的一个准研究生在做这个,头都弄大了他说.
顶端 Posted: 2007-06-11 20:55 | [1 楼]
kingbird



性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 382
威望: 0
浮云: 1130
在线等级:
注册时间: 2004-05-04
最后登陆: 2007-08-19

5come5帮你背单词 [ purple /'pə:pl/ a. 紫色的 ]


你说的是驱动共享内存与应用层的通信吧
很麻烦的,稍不注意就容易造成蓝屏的
主要是过程还是在应用层上的程序利用你所要调用的对象设备的名称创建句柄
再利用createiocontrol()实现内存的共享。
顶端 Posted: 2007-06-11 23:59 | [2 楼]
kaby





性别: 帅哥 状态: 该用户目前不在线
头衔: 又好又强大
等级: 荣誉会员
家族: 八宝推倒委员会
发贴: 3360
威望: 0
浮云: 584
在线等级:
注册时间: 2003-09-24
最后登陆: 2015-03-28

5come5帮你背单词 [ shear /iə/ vt. 剪,剪断,夺取;n. (pl.)大剪刀 ]


1.印象中有现成函数,网上肯定有大把的源代码自己google,还有DDK。
2.记忆中应该用起来应该比较**:当时目的是内核区与用户区大规模的数据交换,经分析得出用SOCKET是而不是映射内存会比较靠谱。
全不记得了,以上[屏蔽]仅供参考。
顶端 Posted: 2007-06-12 00:07 | [3 楼]
coolboy





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 252
威望: 0
浮云: 1107
在线等级:
注册时间: 2005-10-02
最后登陆: 2016-04-25

5come5帮你背单词 [ rumble /'rΛmbl/ v. (雷、炮等)隆隆响,(车辆)辘辘行驶,低沉地说;n. 隆隆声,辘辘声,吵嚷 ]


Quote:
引用第2楼kingbird于2007-06-11 23:59发表的:
你说的是驱动共享内存与应用层的通信吧
很麻烦的,稍不注意就容易造成蓝屏的
主要是过程还是在应用层上的程序利用你所要调用的对象设备的名称创建句柄
再利用createiocontrol()实现内存的共享。

感谢回复,我现在的问题是,驱动没办法用标准的IOCTL同应用层通信,无法创建符号链接,无法用IRP(显示驱动,有点特殊,非WDM),而且数据量比较大,考虑到效率问题,我打算在内核分配内存,然后映射到用户地址空间,这样也省去了memcpy的过程。
顶端 Posted: 2007-06-12 10:20 | [4 楼]
coolboy





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 252
威望: 0
浮云: 1107
在线等级:
注册时间: 2005-10-02
最后登陆: 2016-04-25

5come5帮你背单词 [ rather /'ra:ðə/ ad. 有些,相当,宁可,宁愿,更确切地,相反地,反而 ]


Quote:
引用第3楼kaby于2007-06-12 00:07发表的:
1.印象中有现成函数,网上肯定有大把的源代码自己google,还有DDK。
2.记忆中应该用起来应该比较**:当时目的是内核区与用户区大规模的数据交换,经分析得出用SOCKET是而不是映射内存会比较靠谱。
全不记得了,以上[屏蔽]仅供参考。

晕,核心态能用SCOKET吗?好像不能吧。。。
顶端 Posted: 2007-06-12 10:23 | [5 楼]
路过此地



性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
发贴: 1788
威望: 0
浮云: 0
在线等级:
注册时间: 2007-03-21
最后登陆: 2014-11-08

5come5帮你背单词 [ statute /'stætju:t/ n. 法令,法规 ]


同问
顶端 Posted: 2007-06-12 10:28 | [6 楼]
btkakashi



性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
家族: 尤文蒂尼
发贴: 1924
威望: 0
浮云: 1110
在线等级:
注册时间: 2007-05-12
最后登陆: 2008-06-30

5come5帮你背单词 [ senate /senit/ n. 参议院,上议院 ]


晕,看都看不懂,都是达人啊
顶端 Posted: 2007-06-12 10:30 | [7 楼]
disneycheng



性别: 帅哥 状态: 该用户目前不在线
头衔: Piano Prince
等级: 荣誉会员
发贴: 1971
威望: 1
浮云: 413
在线等级:
注册时间: 2005-12-16
最后登陆: 2008-06-29

5come5帮你背单词 [ approve /ə'pru:v/ vt. 批准,认可;vi. 赞成,满意 ]


考虑attach然后物理内存。嘿嘿。方法是有的呵呵。。。
顶端 Posted: 2007-06-13 23:17 | [8 楼]
coolboy





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 252
威望: 0
浮云: 1107
在线等级:
注册时间: 2005-10-02
最后登陆: 2016-04-25

5come5帮你背单词 [ persecute /'pə:sikju:t/ vt. 迫害,不断麻烦,困扰 ]


问题已解决,贴点代码,希望对后来人有帮助。
   pKernelAddress = ExAllocatePoolWithTag(PagedPool, psm->length, _MemTag);
   if (pKernelAddress == NULL)
   {
       ........
       return    ERROR;
   }

   pMdl = IoAllocateMdl(pKernelAddress, length, FALSE, FALSE, NULL);
   if (pMdl == NULL)
   {
                            ........
       ExFreePool(psm->pKernelAddress);
       return    ERROR;
   }

   try
   {
       MmProbeAndLockPages(pMdl,KernelMode ,IoReadAccess);
   }
   except (EXCEPTION_EXECUTE_HANDLER)
   {
       ........
       IoFreeMdl(psm);
       ExFreePool(pKernelAddress);
       return    ERROR;
   }
   

   try
   {
       pUserAddress = MmMapLockedPagesSpecifyCache(pMdl, UserMode, MmNonCached, NULL, FALSE, NormalPagePriority);

   }
   except (EXCEPTION_EXECUTE_HANDLER)
   {
                            ........
       MmUnmapLockedPages(pKernelAddress,pMdl);
       IoFreeMdl(pMdl);
       ExFreePool(pKernelAddress);
       return ERROR;
   }

我用的仅仅是分页池内存,非分页池映射方法不大一样,懒得研究了,头都大了。
顶端 Posted: 2007-06-14 00:33 | [9 楼]
洋洋洒洒



性别: 帅哥 状态: 该用户目前不在线
头衔: 她的我
等级: 荣誉会员
发贴: 6290
威望: 2
浮云: 496
在线等级:
注册时间: 2006-11-25
最后登陆: 2010-09-14

5come5帮你背单词 [ taut /to:t/ a. 拉紧的,绷紧的,紧张的 ]


Quote:
引用第4楼coolboy于2007-06-12 10:20发表的:

感谢回复,我现在的问题是,驱动没办法用标准的IOCTL同应用层通信,无法创建符号链接,无法用IRP(显示驱动,有点特殊,非WDM),而且数据量比较大,考虑到效率问题,我打算在内核分配内存,然后映射到用户地址空间,这样也省去了memcpy的过程。



完全看不懂啊~~
感觉问问题的LZ不是计算机的吧
惭愧惭愧~~连这个问题说的什么都看不懂
顶端 Posted: 2007-06-14 00:36 | [10 楼]
coolboy





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 252
威望: 0
浮云: 1107
在线等级:
注册时间: 2005-10-02
最后登陆: 2016-04-25

5come5帮你背单词 [ lift /lift/ v. 提升,抬起,举起,(尤指云、雾)消散;n. 举起,升起,搭便车,电梯 ]


Quote:
引用第8楼disneycheng于2007-06-13 23:17发表的:
考虑attach然后物理内存。嘿嘿。方法是有的呵呵。。。

怎样attach?说出来大家学习学习啊。
顶端 Posted: 2007-06-14 00:42 | [11 楼]
aaronnicholas



灌水天才奖
性别: 帅哥 状态: 该用户目前不在线
头衔: Mr.ひとり
等级: 荣誉会员
家族: 水族馆
发贴: 64143
威望: 5
浮云: 495
在线等级:
注册时间: 2004-09-09
最后登陆: 2016-02-14

5come5帮你背单词 [ hostage /'hostid3ə/ n. 人质 ]


Quote:
引用第11楼coolboy于2007-06-14 00:42发表的:

怎样attach?说出来大家学习学习啊。


attach应该是指KeAttachProcess
也可以直接设置对应页面PTE中的用户访问位
顶端 Posted: 2007-06-20 18:00 | [12 楼]
aaronnicholas



灌水天才奖
性别: 帅哥 状态: 该用户目前不在线
头衔: Mr.ひとり
等级: 荣誉会员
家族: 水族馆
发贴: 64143
威望: 5
浮云: 495
在线等级:
注册时间: 2004-09-09
最后登陆: 2016-02-14

5come5帮你背单词 [ fertilization // n. 肥沃化,受孕(作用、现象) ]


内核态和用户态的内存共享,最科学的方法是section map
顶端 Posted: 2007-06-20 18:02 | [13 楼]
stam0



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
发贴: 2704
威望: 0
浮云: 1440
在线等级:
注册时间: 2005-11-22
最后登陆: 2012-12-29

5come5帮你背单词 [ kingdom /'kiŋdəm/ n. 王国,领域,界 ]


Quote:
引用第5楼coolboy于2007-06-12 10:23发表的:

晕,核心态能用SCOKET吗?好像不能吧。。。

不能。。
顶端 Posted: 2007-06-21 11:09 | [14 楼]
« 1 2» Pages: ( 1/2 total )
我来我网·5come5 Forum » 程序员之家

Total 0.011100(s) query 5, Time now is:11-23 15:45, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号