[讨论]关于VXD中的地址

原创 2000年11月27日 09:29:00

 

发信人: wwwwww (困困), 信区: Programming 
标  题: 关于VXD的问题 
发信站: BBS 水木清华站 (Mon Feb 16 02:46:39 1998) 
 
VXD相对于所有的应用程序都是全局的, 
也就是说应用程序可以直接存取VXD中的 
全局变量。这是经过证实的。 
现在的疑问是: 
  1。所有的VXD都在同一线性地址空间里吗? 
     这个线性地址空间的长度最多是多少呢? 
     如果是4GB,那别的应用程序又怎么能看得见这些VXD呢? 
     如果看不见那是不可能实现前面所说的数据共享的。 
  2。VXD也有数据段,代码段吧?因为在写VXD时就有这些概念, 
     这样可以利于维护代码段的只读特性。想问的是:这些数据段, 
     和代码段也是在同一线性地址空间里了? 
      
                
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.8.130] 
发信人: Cohen (Tommy), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Mon Feb 16 15:19:08 1998) 
 
【 在 wwwwww (困困) 的大作中提到: 】 
 VXD相对于所有的应用程序都是全局的, 
 也就是说应用程序可以直接存取VXD中的 
 全局变量。这是经过证实的。 
 现在的疑问是: 
   1。所有的VXD都在同一线性地址空间里吗?nbsp;
                    ^^^^^^^^^^^^^^^^^^^^ 好象是这样的,从微软提供的资料看 
                                         VXD占用了2G以上的系统空间,而应用程序 
                                         空间在2G以下  ?nbsp;
      这个线性地址空间的长度最多是多少呢? 
      如果是4GB,那别的应用程序又怎么能看得见这些VXD呢? 
      如果看不见那是不可能实现前面所说的数据共享的。 
   2。VXD也有数据段,代码段吧?因为在写VXD时就有这些概念, 
      这样可以利于维护代码段的只读特性。想问的是:这些数据段, 
      和代码段也是在同一线性地址空间里了? 
 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.74.242] 
发信人: suxm (笨笨), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Mon Feb 16 16:40:32 1998) 
 
【 在 wwwwww (困困) 的大作中提到: 】 
 VXD相对于所有的应用程序都是全局的, 
 也就是说应用程序可以直接存取VXD中的 
 全局变量。这是经过证实的。 
                ~~~~~~~~ 
               的确是这样的 
 
 现在的疑问是: 
   1。所有的VXD都在同一线性地址空间里吗? 
                   ~~~~~~~~~~~~~~~~~  
                           是  
 
      这个线性地址空间的长度最多是多少呢? 
                         ~~~~~~~~~~~~~ 
                          2GB 
 
      如果是4GB,那别的应用程序又怎么能看得见这些VXD呢? 
      如果看不见那是不可能实现前面所说的数据共享的。 
 
   每一个应用程序的前2GB空间都有一份系统VXD的拷贝。 
   这些拷贝映射为同一内存RAM地址。 
   这样说来应用程序只能占用2GB-----4GB之间的地址空间了。 
 
 
   2。VXD也有数据段,代码段吧?因为在写VXD时就有这些概念, 
            ~~~~~~~~~~~~~~~~ 
            cs=ds=ss,在flat mode下请忘记段的概念,虽然CPU 
            仍在防护情况下使用着段 
 
      这样可以利于维护代码段的只读特性。想问的是:这些数据段, 
      和代码段也是在同一线性地址空间里了? 
                   ~~~~~~~~~~~~~~~~~ 
                  因为CS=DS=SS所以定在同一地址空间里 
-- 
___________________ 
吃睡吃睡吃睡吃睡吃睡 
___________________ 
 
※ 修改:·suxm 於 Feb 16 18:46:06 修改本文·[FROM:   166.111.8.153] 
※ 修改:·suxm 於 Feb 16 18:52:16 修改本文·[FROM:   166.111.8.153] 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.146.241] 
发信人: wwwwww (困困), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Mon Feb 16 18:58:51 1998) 
 
多谢大侠指点。 
小弟还有一事不明: 
如果32位应用程序与VXD在同一4GB的空间内, 
那应用程序自然可以利用指针直接存取VXD中的全局变量。 
不明白的是:那VXD可以利用指针直接存取应用程序中的 
全局变量吗?如果可以的话,那岂不乱套了?-----如果 
同时运行两份应用程序的拷贝,那VXD存取的是哪个应用程序 
中的全局变量呢? 
 
 
【 在 suxm (笨笨) 的大作中提到: 】 
                 ~~~~~~~~ 
                的确是这样的 
                    ~~~~~~~~~~~~~~~~~  
                            是  
                          ~~~~~~~~~~~~~ 
                           2GB 
    每一个应用程序的前2GB空间都有一份系统VXD的拷贝。 
    这些拷贝映射为同一内存RAM地址。 
    这样说来应用程序只能占用2GB-----4GB之间的地址空间了。 
             ~~~~~~~~~~~~~~~~ 
      
 
             cs=ds=ss,在flat mode下请忘记段的概念,虽然CPU 
             仍在防护情况下使用着段 
                    ~~~~~~~~~~~~~~~~~ 
                   因为CS=DS=SS所以定在同一地址空间里 
 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.8.153] 
发信人: wwj (红尘一笑), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Tue Feb 17 08:49:02 1998) 
 
【 在 wwwwww (困困) 的大作中提到: 】 
 
   Win95的Win32部分并不是以段管理为主的,它所有的虚地址及其保护特性 
基本上都是用页管理来完成. 
 
 如果32位应用程序与VXD在同一4GB的空间内, 
 那应用程序自然可以利用指针直接存取VXD中的全局变量。 
 
VXD所在的虚地址在每个VM中都是一样的.但从操作系统的角度说,这片区域应 
该不让应用程序可以读写到.Win95设计上出于效率和某些方面的考虑,这些区 
域可以从应用程序级读到,甚至某些地方还可以被应用程序写. 
 
 不明白的是:那VXD可以利用指针直接存取应用程序中的 
 全局变量吗?如果可以的话,那岂不乱套了?-----如果 
 同时运行两份应用程序的拷贝,那VXD存取的是哪个应用程序 
 中的全局变量呢? 
 
从VXD的角度看来,低2G的空间是应用程序相关的.也就是说,当CPU运行 
到VXD的某段代码时,VXD所看到的低2G的空间是这个VM印象,并不能指定是哪 
个应用的;究竟是哪个应用,VXD应该进行ProcessID的判断.在原则上,操作系统 
是能读写应用的数据的. 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.8.123] 
发信人: holly (holly), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Tue Feb 17 11:20:06 1998) 
 
【 在 wwj (红尘一笑) 的大作中提到: 】 
    Win95的Win32部分并不是以段管理为主的,它所有的虚地址及其保护特性 
 基本上都是用页管理来完成. 
 VXD所在的虚地址在每个VM中都是一样的.但从操作系统的角度说,这片区域应 
 该不让应用程序可以读写到.Win95设计上出于效率和某些方面的考虑,这些区 
 域可以从应用程序级读到,甚至某些地方还可以被应用程序写. 
 
... No. Vxd Running on ring 0 and Apps running on Ring 3 
 
 
 从VXD的角度看来,低2G的空间是应用程序相关的.也就是说,当CPU运行 
 到VXD的某段代码时,VXD所看到的低2G的空间是这个VM印象,并不能指定是哪 
 个应用的;究竟是哪个应用,VXD应该进行ProcessID的判断.在原则上,操作系统 
 是能读写应用的数据的. 
 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.120.26.243] 
发信人: suxm (笨笨), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Tue Feb 17 12:50:38 1998) 
 
 
Memory allocated in a VxD is globally,and can be shared with  
applications.Memory that an application allocates may be in a 
process specific region of the memory map.In this case,the VxD 
cannot access that memory unless the current memory context is  
that of the process.  
 
 
 
【 在 wwwwww (困困) 的大作中提到: 】 
 多谢大侠指点。 
 小弟还有一事不明: 
 如果32位应用程序与VXD在同一4GB的空间内, 
 那应用程序自然可以利用指针直接存取VXD中的全局变量。 
 不明白的是:那VXD可以利用指针直接存取应用程序中的 
 全局变量吗?如果可以的话,那岂不乱套了?-----如果 
 同时运行两份应用程序的拷贝,那VXD存取的是哪个应用程序 
 中的全局变量呢? 
 
 
-- 
___________________ 
吃睡吃睡吃睡吃睡吃睡 
___________________ 
 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.8.142] 
发信人: suxm (笨笨), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Tue Feb 17 12:51:55 1998) 
 
No.Can. 
See the examples of the win95 ddk. 
 
 
 
【 在 holly (holly) 的大作中提到: 】 
 ... No. Vxd Running on ring 0 and Apps running on Ring 3 
 
 
-- 
___________________ 
吃睡吃睡吃睡吃睡吃睡 
___________________ 
 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.8.142] 
发信人: Dreammy (这个杀手不太冷), 信区: Programming 
标  题: Re: 关于VXD的问题 
发信站: BBS 水木清华站 (Tue Feb 24 09:01:42 1998) 
 
【 在 wwwwww (困困) 的大作中提到: 】 
 多谢大侠指点。 
 小弟还有一事不明: 
 如果32位应用程序与VXD在同一4GB的空间内, 
 那应用程序自然可以利用指针直接存取VXD中的全局变量。 
 不明白的是:那VXD可以利用指针直接存取应用程序中的 
 全局变量吗?如果可以的话,那岂不乱套了?-----如果 
 同时运行两份应用程序的拷贝,那VXD存取的是哪个应用程序 
 中的全局变量呢? 
实际上,在95和31中这个问题都可以提的,是个概念问题 
 
在95中之所以叫做FLAT无非是因为所有WIN32应用的代码段 
都是一样的,而在31下大家是同一个4GB的线性地址,所以 
从这个角度讲,是一样的 
    在31中,全局页表和局部页表是相同的,那么RING0所 
在内存区域是采用设置叶面属性的方法解决的 
    在95中 
全局页表和局部页表是不同的,@而且各WIN32应用的 
局部页表也不同 ,所以对不同进程,线性地址与物理 
地址映射不同 , 大家在不同的线性空间里。 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.6.26] 

[讨论]关于VXD中的地址

2000年11月27日 09:29:00 发信人: wwwwww (困困), 信区: Programming 标 题: 关于VXD的问题 发信站: BBS 水木清华站 (Mon Feb 1...
  • softart
  • softart
  • 2007年10月27日 07:31
  • 135

VxD

VxD 程序设计入门We 我们在上一节学会了如何编写一个什么事也不做的VxD程序。在这一节里,我们要给它增加处理控制消息的功能。 VxD的初始化和结束VxD程序分为两种:静态的和动态的。每种的加载方法...
  • jiangtao
  • jiangtao
  • 2000年09月05日 14:49
  • 2759

虚拟设备驱动程序结构(Vxd教程3)

虚拟设备驱动程序结构 由 Ryo 翻译,发表于 http://asm.yeah.net,英文版本来自 [Iczelions Win32 Assembly Homepage] 现在大家对vmm和vx...
  • jiangtao
  • jiangtao
  • 2000年09月05日 13:39
  • 2641

Iczelion 的 Win32Asm VxD 汇编教程 (六)

DeviceIoControl接口在这一节中我们将要关于学习动态VXD,特别是如何创建,加载和使用。点击这里下载例子VxD接口VxD总共提供了4种接口。l         VxD services  ...
  • kingzeus
  • kingzeus
  • 2002年02月14日 10:44
  • 505

Iczelion 的 Win32Asm VxD 汇编教程 (五)

VxD例程:消息框在上一节教程里,我们讲了编写一个VxD程序的方法。现在我们要学以致用。在这一节里,我们要编写一个静态VxD,这个静态VxD在一个虚拟机创建或销毁时就会弹出一个消息框。 在这里下载例子...
  • kingzeus
  • kingzeus
  • 2002年02月14日 10:44
  • 678

Java输入输出流总结

题目:把字符串"1,+,2,+,3,+,4,+,5,-,6,-,7,+,8,-,9"写入D盘,并且计算字符串的值,在控制台打印。 import java.io.File; import java.io...
  • tonehao1990
  • tonehao1990
  • 2015年06月08日 22:09
  • 654

乔布斯:关于Flash的几点看法

当初这篇轰动一时的文章,据说是乔大爷去世前亲自写的(好吧,Java虽然同样被拒,但还没这种待遇) -------------------------------------------------...
  • arvin0
  • arvin0
  • 2016年03月14日 16:10
  • 762

推荐几个值得关注的微信公众号

微信公众平台推出有一段时间了,然而相信和我一样没有怎么搞懂微信公众号到底是个什么东西的大有人在,不止是我们,许多拥有微信公众号甚至被官方认证了的都还没有搞懂怎么很好的使用它。于是,我收集了一些目前个人...
  • macwhirr123
  • macwhirr123
  • 2014年04月22日 12:18
  • 3508

下面关于ICMP协议的描述中,正确的是()----腾讯2016研发工程师笔试题

下面关于ICMP协议的描述中,正确的是() 正确答案: C   你的答案: A (错误) ICMP协议根据MAC地址查找对应的IP地址 ICMP协议把公网的IP地址转换为私网的IP地址 ...
  • chengonghao
  • chengonghao
  • 2016年07月09日 21:20
  • 1862

VxD技术

Windows9x平台反病毒产品大多属静态反病毒软件,指导思想是"以杀为主",这一方式的缺点是病毒在被清除之前可能早已造成了严重危害一个好的反病毒软件应...
  • fisher_jiang
  • fisher_jiang
  • 2006年05月02日 20:29
  • 1098
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[讨论]关于VXD中的地址
举报原因:
原因补充:

(最多只允许输入30个字)