谈谈Windows Wow64】的更多相关文章

欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/4977488.html 本文是<深入理解Windows操作系统 (第六版) >关于64位Windows操心系统有关Wow64部分的读书笔记,因为之前很少有接触到关于Wow64的部分,记录一下. Wow64是允许在64位Windows上执行32位x86应用程序的软件.它的实现方式是一组用户模式dll,外加一些来自内核的支持,此内核支持是为了创建32位版本的数据结构,例如进程环境块(PEB)和线…
谈谈windows线程栈. 当系统创建线程时会为线程预订一块地址空间区域,注意仅仅是预订.默认情况下预定的这块区域的大小是1MB,虽然预订这么多,但是系统并不会给全部区域调拨物理存储器.默认情况下,仅仅为两个页面挑拨.x86系统下每个页面是4KB.其他页面会在访问的时候由系统调拨.这仅仅是在创建线程时,程序员指定CreateThread的第二个参数StackSize为0时才会发挥作用.如果程序员传入的是非零值,那么调拨的物理存储器的数量就是这个非零值. 这两个默认的页面是从哪里来的呢?原来是在链…
windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功能.所谓的指定窗体并不局限于当前进程的窗体,也能够是其它进程的窗体.当监视的某一消息到达指定的窗体时,在指定的窗体处理消息之前,钩子函数将截获此消息,钩子函数既能够加工处理该消息,也能够不作不论什么处理继续传递该消息.使用钩子是实现dll注入的方法之中的一个.其它经常使用的方法有:注冊表注入,远程线…
WOW64(Windows-On-Windows 64bit)是X64 Windows操作系统的一个子系统,为32位应用程序提供运行环境.类似的还有WOW32子系统,负责在32位Windows系统上运行16位应用程序. WoW64存在的原因还要从CPU的发展上开始说,X86指令集是一个指令集架构家族,最初在Intel 8086处理器中引入,开始它主要用于16位系统.从Intel 386处理器发布开始升级为32位,并且32位指令集一直保持了很久.了解32位系统的都知道32位CPU将内存空间限制到了…
    我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义.       Windows除了使用返回值标识函数执行情况,外还引入了错误代码机制.返回值指出函数已发生一个错误.要查看具体是什么错误,就应该使用错误代码.如当我们调用函数打开一个文件,如果打开失败,可能出现多种原因.一是:文件不存在,另一种是该文件被其他程序互斥使用.在这两种情况下都导致文件打开失败,返回值仅仅标识打…
我们所说的“新选择”包括操作系统升级——告别Windows Server 2003或2008,选择用什么样的姿势进行升级呢? 新年伊始,正是企业对自身IT基础设施进行评估的最佳时期.在多项评估项目里面,服务器操作系统迁移是必不可少的一项. 自2003年Windows Server 2003版本发布以来,IT行业发生了两个巨大的转变.一是从物理服务器迁移到虚拟服务器,且到目前,虚拟化已经发展成熟,是未来就绪企业的必备部署:第二大变化是向云迁移,而且该趋势已经无法阻挡,重要的是,越来越多的企业意识到…
Windows线程池 上一篇博文我们介绍了IO完成端口.得知IO完成端口可以非常智能的分派线程.但是IO完成端口仅对等待它的线程进行分派,创建和销毁线程的工作仍然需要我们自己来做. 我们自己也可以创建线程,但是涉及到线程的编码操作比较复杂,容易出现差错.为了简化程序员的工作,Windows提供了一个线程池机制来简化线程的创建.销毁以及日常管理.这个新线程池可能不适用于所有的情况,但大多数情况下它都能够满足我们的需要. 这个线程池能够帮助我们做一下事情: 一:以异步的方式调用一个函数. 二:每隔一…
Windows内存体系结构 理解Windows内存体系结构是每一个励志成为优秀的Windows程序员所必须的. 进程虚拟地址空间 每个进程都有自己的虚拟地址空间.对于32位操作系统来说,它的地址空间是4GB.这是因为32位指针可以表示从0x00000000到0xFFFFFFFF之间的任一值.对于64位的操作系统来说有0--2的64次方之间的任一值. 由于每个就进程都有自己的地址空间,因此每个进程都只能访问属于自己的地址空间而不能访问其他进程的空间.这保护了进程,也是之所以我们说进程是资源分配和保…
错误处理 我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Windows除了使用返回值标识函数执行情况,外还引入了错误代码机制.返回值指出函数已发生一个错误.要查看具体是什么错误,就应该使用错误代码.如当我们调用函数打开一个文件,如果打开失败,可能出现多种原因.一是:文件不存在,另一种是该文件被其他程序互斥使用.在这两种情况下都导致文件打开失败,返回值仅仅标识打开失败,但…
本来在mac里一个项目里新建了一个I/O的文件夹. 当时就直接被系统自动改成了I:O.   本来也没多在意,感觉也不是什么大事. 这是push到GitHub上的样子. 当时没多想,感觉没什么问题,就是奇怪问什么文件夹被改名.   然后刚才把这个仓库克隆到windows下, git status 查看一下状态,发现delete了18个文件. git diff 出来了一大堆被删掉的文件,也没细看. 想着push上去对比一下,然后push完懵逼了,想reset竟然报错   后来想着自己新建个带:的文件…