2013年1月22日

Windows分段分页机制杂谈

摘要: Windows系统下的分段机制和分页机制一直以来困惑着我,我结合以前的博文加上最近看的一篇文章做一个小总结,以后如果有新的想法也会更新。首先来了解下系统CPU的地址线 、数据线和工作模式:CPU型号地址线数据线工作模式80862016实模式802862416实模式、保护模式803863232实模式、保护模式、虚拟8086模式80486以及pentium3232实模式、保护模式、虚拟8086模式实模式、虚拟8086模式和保护模式的286兼容模式一般采用16位寻址方式,保护模式中32位模式则是采用32位寻址方式。要了解Windows的分段和分页机制,必不可少的会接触到三个重要名词:逻辑地址(虚拟地 阅读全文

posted @ 2013-01-22 19:41 一直很安静— 阅读(3158) 评论(0) 推荐(0) 编辑

2013年1月12日

Ring0层与Ring3层的通信问题

摘要: 最近在学习驱动编程,因为大部分程序在Ring0层获得信息后,都要传递到Ring3层,将从内核获得的信息交由用户层处理。所以了解Ring3层与Ring0层的通信就显得至关重要了。下面简单介绍Ring3层与Ring0层的通信。首先要了解IRP,开发一个驱动可能要处理各种各样的IRP。应用层为了和驱动通信,首先必须打开设备,然后发送或者接受消息,最后关系这个请求。这个过程涉及到了三个IRP,第一是打开请求;第二是接受或者发送消息;第三个是关闭请求。这三个IRP请求对应的功能号分别为:打开请求的主功能号是IRP_MJ_CREATE,关闭请求的主功能号是IRP_MJ_CLOSE,处理设备控制信息是IRP 阅读全文

posted @ 2013-01-12 15:31 一直很安静— 阅读(1272) 评论(0) 推荐(1) 编辑

2013年1月8日

判断Windows系统的版本的各种方法

摘要: 首先是谢平老师的这篇文章,关于获得windows系统版本的方法,其中包含了Ring 3层和Ring 0层的方法,还有不常用的查看注册表值的方法。当我们的应用程序或者驱动程序需要根据操作系统的版本来选择执行不同的代码的时候,我们应该知道这部分的内容。这篇文章花费了我好一段时间,在附件里有三份代码分别代表了三种不同的方法。这些内容都是前人的成果,鄙人纯属老生常谈。废话少说,我们进入主题。用户模式下的方法:方法1:利用Win32 API可以很容易的确定所安装的操作系统的版本。我们可以使用GetVersionEx函数,在MSDN中可以很容易的找到关于它的详细解释,什么那位同学看不懂E文,那我只好解释一 阅读全文

posted @ 2013-01-08 11:38 一直很安静— 阅读(4477) 评论(0) 推荐(0) 编辑

2012年12月26日

有关UNICODE和ANSI的杂谈

摘要: 大家都知道自从VC6.0变成了VS2010后,时常会出现有关于字符串的错误,那是因为VC6.0中默认的是多字节字符集,而VS2010中默认的是UNICODE字符集。我们可以通过修改工程属性来设置字符集,如下图所示:虽然可以通过修改字符集为多字节字符集解决一部分问题,但是有关Unicode和ANSI字符集的问题始终萦绕心头,今日通过百度等工具来详细透彻的了解。首先谈谈什么是UnicodeUnicode是为整合全世界的所有语言文字而诞生的。任何文字在Unicode中都对应一个值, 这个值称为代码点(code point)。 而文字和代码点之间的对应关系就是UCS-2(Universal Chara 阅读全文

posted @ 2012-12-26 17:03 一直很安静— 阅读(268) 评论(0) 推荐(0) 编辑

导航