littlemm
驱动牛犊
驱动牛犊
  • 注册日期2004-04-01
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1269回复:6

关于内存地址指针由system模式传到用户模式

楼主#
更多 发布于:2004-04-13 14:38
我在做板卡驱动,板卡上有一块内存,pci卡
我在驱动层映射了其首地址,我在DeviceIoControl中做了接口
从环3传递地址偏移,就可对这块内存进行读写,目前已经验证是正确的
现在我想把这块内存的首地址指针传到环3的应用程序
但是不能对它读写
试问我应该怎样操作呢?    
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-04-13 14:42
不能对它读写??你传过去干吗??
可以把该地址放入DRX(0~3)寄存器,然后设置DR7的断点位和读写断点置位,在任何对该地址的访问都会触发,调试中断进入INT1处理例程,当然你必须HOOK 了INT1 的例程进行相应的处理.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
littlemm
驱动牛犊
驱动牛犊
  • 注册日期2004-04-01
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-13 15:12
还是不行
它是双口ram
16k大小
iriszhu
驱动牛犊
驱动牛犊
  • 注册日期2003-10-06
  • 最后登录2009-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-15 09:36
如果用DS,这个类KMemoryToProcessMap可以将物理地址映射到用户层中所认可的虚拟地址;有DDK中的ZwMapViewofSection这个函数包装而来
littlemm
驱动牛犊
驱动牛犊
  • 注册日期2004-04-01
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-16 11:00
KMemoryToProcessMap
能给个小例子吗?
iriszhu
驱动牛犊
驱动牛犊
  • 注册日期2003-10-06
  • 最后登录2009-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-16 21:46
ULONGLONG p = 0xE90100000; 址,一定是在80000000-ffffffff之间
KMemoryToProcessMap* mapRegion =
              new (NonPagedPool) KMemoryToProcessMap(
               PCIBus, // 总线类型ISA,pci之类的
               0, // 总线号
              p, //
              0x10000, // 被影射范围
             (HANDLE)-1, // 代表进程句-1代表当前进程
            FALSE, // 是否映射为内核形式
            NULL, // 地址
           ViewShare // 决定了是否子进程能够访问这个内存区
   );
if ( !mapRegion )
{
   // insufficient memory
}
if ( !NT_SUCCESS( mapRegion ->ConstructorStatus() ) )
{
   // constructor failed
}
ProcessVirtualAddress = mapRegion ->ProcessAddress();

就用它来访问
当不再需要的时候要delete mapRegion
littlemm
驱动牛犊
驱动牛犊
  • 注册日期2004-04-01
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-20 14:48
KMemoryToProcessMap应该包含在哪里啊
游客

返回顶部