norsd
驱动牛犊
驱动牛犊
  • 注册日期2003-03-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1977回复:11

物理内存写入......疑惑...求教

楼主#
更多 发布于:2003-08-17 23:22
关于驱动程序ring0的环境中
物理内存的写入对象:

\\Device\\PhysicalMemory

关于这个对象,我总是不太会用。于是参考网上一些大大写的资料。

让我知晓了:

1.打开对象,
   大致的对象应该是:

        RtlInitUnicodeString (&PhysicalMemoryUnicodeString,L\"\\\\Device\\\\PhysicalMemory\");

  InitializeObjectAttributes (&ObjectAttributes,
                              &PhysicalMemoryUnicodeString,
                              OBJ_CASE_INSENSITIVE,
                              (HANDLE) NULL,
                              (PSECURITY_DESCRIPTOR) NULL);

  *pPhysicalMemoryHandle = NULL;

  ntStatus = ZwOpenSection (pPhysicalMemoryHandle,
                            SECTION_ALL_ACCESS,
                            &ObjectAttributes);

打开对象后,我接着该怎么干哪?请问?

最新喜欢:

juventusjuvent...
norsd
驱动牛犊
驱动牛犊
  • 注册日期2003-03-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-21 21:30
汗,难道 ZwMapViewOfSection 会调用ObFrerenceObjectByHandle?
ppl
ppl
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2006-05-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-20 12:03
请问,为什么在运行ZwMapViewOfSection 之前,一定要运行ObReferenceObjectByHandle?

我上网看到,有的人就没有运行 ObReferenceObjectByHandle>...


如下:

http://www.20cn.net/ns/wz/otherwz/data/20020813022536.htm


http://www.pediy.com/bbshtml/BBS5/pediy50415.htm
谢谢!

 


ObReferenceObjectByHandle简单的说,就是告诉操作系统你想要
使用这个对象,因此他的引用计数加1,如果你不使用了。
就要减一,当一个对象引用计数减少到0的时候,这个对象就
被操作系统free.

  如果你要使用一个对象,就要对其计数加一。
  问题是,有的函数会帮你加一,你就不需要在加了。





lifeng
驱动牛犊
驱动牛犊
  • 注册日期2001-05-01
  • 最后登录2010-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-19 08:31
不需要得使用ObReferenceObjectByHandle,查看ZwMapViewOfSection的原型
NTSTATUS   ZwMapViewOfSection(
    IN HANDLE  SectionHandle,
    IN HANDLE  ProcessHandle,
    IN OUT PVOID  *BaseAddress,
    IN ULONG  ZeroBits,
    IN ULONG  CommitSize,
    IN OUT PLARGE_INTEGER  SectionOffset  OPTIONAL,
    IN OUT PSIZE_T  ViewSize,
    IN SECTION_INHERIT  InheritDisposition,
    IN ULONG  AllocationType,
    IN ULONG  Protect
    );
可知它要的是SectionHandle,而不是Section object pointer,所以并不需调用ObReferenceObjectByHandle


norsd
驱动牛犊
驱动牛犊
  • 注册日期2003-03-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-18 19:18
请问,为什么在运行ZwMapViewOfSection 之前,一定要运行ObReferenceObjectByHandle?

我上网看到,有的人就没有运行 ObReferenceObjectByHandle>...


如下:

http://www.20cn.net/ns/wz/otherwz/data/20020813022536.htm


http://www.pediy.com/bbshtml/BBS5/pediy50415.htm
谢谢!

AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-18 16:53
简单的讲就是通过一个对象句柄得到相应的 POBJECT_HANDLE_INFORMATION指针和对象指针,当然如果不能在给定权限下访问就返回失败
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
norsd
驱动牛犊
驱动牛犊
  • 注册日期2003-03-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-18 14:25
楼上大大,虽然上面的英文我每个字都懂,可是连成一句话,我就看不懂了,555555,能否解释一下?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-18 14:16
ObReferenceObjectByHandle provides access validation on the object handle, and, if access can be granted, returns the corresponding pointer to the object\'s body.
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
norsd
驱动牛犊
驱动牛犊
  • 注册日期2003-03-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-18 12:24
ObReferenceObjectByHandle
ZwMapViewOfSection



请问ObReferenceObjiectByHandle 起什么作用?

我看到过别人用,代码如下:
ntStatus = ObReferenceObjectByHandle (*pPhysicalMemoryHandle,
                                          SECTION_ALL_ACCESS,
                                          (POBJECT_TYPE) NULL,
                                          KernelMode,
                                          &PhysicalMemorySection,
                                          (POBJECT_HANDLE_INFORMATION) NULL);

这个函数对pPhysicalMemoryHandle 进行生麽样的操作,请问?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2003-08-18 10:18
ObReferenceObjectByHandle
ZwMapViewOfSection
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-08-18 09:04
晕..........


在ring 0里还用ring 3的方法?????
norsd
驱动牛犊
驱动牛犊
  • 注册日期2003-03-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-08-17 23:30
对了,我可不可以接着,在  驱动程序中用

MapViewOfFile()这个函数来读些物理内存?

代码如下:
pMapPhysicalMemory=MapViewOfFile(pPhysicalMemoryHandle,FILE_MAP_READ,   0,PhysAddress,dwSize);


如果可以,请问应该include \"xxxxxxx.h\"  
哪一个h文件?
游客

返回顶部