jimichen
驱动牛犊
驱动牛犊
  • 注册日期2003-02-21
  • 最后登录2003-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1370回复:5

sys与exe文件之间如何内存共享?

楼主#
更多 发布于:2003-02-26 21:23
sys与exe文件之间如何共享内存?
谁能说一说思路,最好能给出实例代码?
edgesoul
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2007-09-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-27 19:54
Here is an example that creates a mapping of address 0xF8000000 for 0x10000 bytes(from DS online help):

ULONGLONG p = 0xF8000000;
KMemoryToProcessMap* DeviceRegion =
     new (NonPagedPool) KMemoryToProcessMap(
     PCIBus, // bus type
     0, // bus number, may vary
     p, // peripheral memory address
     0x10000, // number of bytes
     (HANDLE)-1, // current process
     FALSE, // don\'t do kernel mapping
     NULL, // any address
     ViewShare // view inherit by child process
   );

edgesoul
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2007-09-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-27 19:51
可以利用DriverWorks中的KMemorytoProcessMap(大概是这个名)类,将一段内存映射到某一进程的虚拟地址中。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-27 17:45
方法1使用以下函数
IoAllocateMdl分配空间
然后
VirtualAddress = (PVOID) (((ULONG) MmMapLockedPages(Mdl, Mode)) +  MmGetMdlByteOffset(Mdl));
得到虚拟地址
然后在通过DeviceIoControl来将虚拟地址传给ring3

方法2,需要使用native函数

1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
jimichen
驱动牛犊
驱动牛犊
  • 注册日期2003-02-21
  • 最后登录2003-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-27 17:17
能否给一段示例代码
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-27 17:01
使用方法很多
1、在驱动分配物理内存(可分页或不分页),然后通过映射物理地址空间到用户的虚拟地址空间。
2、使用Section对象等
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
游客

返回顶部