Licensed Memory in 32-Bit Windows Vista
成功安装并激活 Windows VISTA sp1 的方法步骤

成功安装并激活 Windows VISTA sp1 的方法步骤 (通过微软正版验证)2008年04月02日星期三 08:07Windows VISTA sp1英文正式版已经发布,中文正式版sp1发布时间(预计4月18日)也已在即。
鉴于不少网友已经安装了sp1 RTM中文版(面临安装sp1正式版问题),同时兼顾到尚未安装Windows VISTA 的网友的需要,因而一并将成功安装并激活Windows VISTA sp1的方法步骤提供如下——第一步:下载Windows VISTA原版ISO光盘镜像;推荐:参见《Windows XP / 2003 / Vista 原版光盘镜像(下载)及其主要特征》《绝对正宗:Windows Vista 32位和64位简体中文正式版(MSDN)下载》第二步:采取硬盘或者光盘安装方式安装Windows VISTA;1。
预留空间要求:15GB2。
磁盘文件格式:NTFS3。
硬件基本要求:内存至少512MB(能够安装,但是运行不会流畅),推荐1GB及其以上。
参见《安装运行VISTA的有力助手:Windows Vista 升级顾问(下载)》4。
硬盘安装方式:参见《成功实践——硬盘安装Windows Vista方法步骤》。
注:必须在目前运行的低版本Microsoft Windows基础上。
5。
光盘安装方式:参见《电脑视频教程(下载)之一:Windows VISTA 安装教程》。
——注:安装时不必输入密钥。
第三步,安装驱动程序后,进行破解激活,通过微软正版验证;破解工具选择:参见《土人土办法——世界破解Windows VISTA工具前三名(附:下载)》破解效果检验方法——1。
点击“我的电脑/属性”,有“激活”字样和“正版图标”。
2。
用“运行”命令进行检验。
参见《如何检验Vista激活状态——Vista 授权管理工具(slmgr.vbs)完整用法》3。
到微软网站进行正版验证。
参见《微软三个不同等级的八个“正版验证”地址——您的验证结果如何?》第四步,开启自动更新。
电脑代码一览表

代码一览表1 0×00000001 不正确的函数。
2 0×00000002 系统找不到指定的档案。
3 0×00000003 系统找不到指定的路径。
4 0×00000004 系统无法开启档案。
5 0×00000005 拒绝存取。
6 0×00000006 无效的代码。
7 0×00000007 储存体控制区块已毁。
8 0×00000008 储存体空间不足,无法处理这个指令。
9 0×00000009 储存体控制区块地址无效。
,10 0×0000000A 环境不正确。
11 0×0000000B 尝试加载一个格式错误的程序。
12 0×0000000C 存取码错误。
13 0×0000000D 资料错误。
14 0×0000000E 储存体空间不够,无法完成这项作业。
15 0×0000000F 系统找不到指定的磁盘驱动器。
16 0×00000010 无法移除目录。
17 0×00000011 系统无法将档案移到其它的磁盘驱动器。
18 0×00000012 没有任何档案。
19 0×00000013 储存媒体为写保护状态。
》20 0×00000014 系统找不到指定的装置。
21 0×00000015 装置尚未就绪。
22 0×00000016 装置无法识别指令。
23 0×00000017 资料错误(cyclic redundancy check)24 0×00000018 程序发出一个长度错误的指令。
25 0×00000019 磁盘驱动器在磁盘找不到持定的扇区或磁道。
26 0×0000001A 指定的磁盘或磁盘无法存取。
27 0×0000001B 磁盘驱动器找不到要求的扇区。
Vista免激活的简单方法

Vista免激活的简单方法
Vista免激活的简单方法
D版Vista的一般激活方法是用序列号安装,然后用软件破解激活,破解一般是模拟品牌机的方式,虽然有效,但却令系统在启动时出现一堆的鸡肠文;而这里所讲的是不用软件就可以免激活的方法。
如下:
安装前,将计算机系统时间调至2099年,已安装系统的计算机可以在系统中修改时间,新装的计算机可以在BIOS中设置时间,然后进行安装,安装过程中输入产品密钥那步,不要输入密钥直接到下一步,安装完成首次进入系统后,在系统内将计算机时间更改为2088年,之后再次重启计算机,重启进入系统后,将系统时间调整为正确的时间(即安装时的时间)。
经过以上的几个步骤,Windows Vista 的激活机制因此而彻底瘫痪!虽然Vista 仍是30天试用版,但永远不会提示您激活,至于在线更新嘛,应该不行!
俺按上面的方法装个Vista中文旗舰版,然后改计算机时间在30天试用期之后,系统居然无任何提示,可见上面的方法是有点效果的;如果您想用Vista而且不需要升级,不妨就用此方法试试。
Powered by 无名小鬼 。
vista激活方法

当Vista试用“到期”时,会弹出一个“windowsのライセンス認証”窗口,选择“制限された機能でコンピュータにアクセス”(制限的机能)后会自动弹出IE窗口,通过IE地址栏进入C:\WINDOWS\system32 (64位系统的话就进C:\WINDOWS\SysWOW64),右键单击cmd.exe,选择用管理员账户进入“运行”,
出现如下界面,输入指令“slmgr.vbs -rearm”。
等待一会儿,会有一个提示重启的对话框出现,
(指令“slmgr.vbs -rearm”,意思是重置计算机的授权状态。
其实可以在Vista试用“到期”之前输入该指令,同样右键单击cmd.exe,选择用管理员账户进入“运行”,输入该指令。
)
按下ok后,关闭所有的窗口,会自动回到登陆画面,重启,用户将再获得15天试用期限。
重启后,在运行中输入指令“slmgr.vbs -dlv”。
等待一会儿,显示激活时间是15天有效期,用户将再获得15天试用期限。
备注:该办法不知道可以用几次,能否无限制的获得15天试用期限,还得以后尝试后才能得出结论。
〈完〉。
金蝶软件在Vista操作系统上安装问题

金蝶软件在Vista操作系统上安装问题在Windows Vista操作系统上安装金蝶KIS产品,出现了一些问题,现在把经过写出来,希望大家交流下。
一.KIS商贸版在Vista的安装;KIS商贸版服务起是XP的,客户端有台笔记本电脑装的是Vista,装完后,打开软件,没弹出登陆界面,却出现一个错误提示:"登陆时出现问题,请重新输入!",后来在登陆提示另外一个错误:运行时错误'5',无效的过程调用或参数。
以为是安装或Vista的组件服务没启动,修正完了以后一样提示。
后来才发现是Vista的用户帐号控制(UAC)起用的缘故,把此选项取消,一切都正常了。
--方法见下面!二.KIS迷你版/标准版在Vista的安装;KIS迷你版/标准版装在Vista系统上,无法建立帐套,同样提示错误,点科目初始余额录入,根本无法使用。
后发现同样是启用了Vist的UAC的缘故;取消方法如下。
方法一:1.点选开始-> 执行 -> 输入 msconfig [Enter]2.请点选 [工具] "停用 UAC" [确定],修改完成后需要重新开机即会生效. 方法二:1.点选开始->设定->控制台2.点选 [使用者帐户]3.点选 [开启或关闭使用者帐户控制]4.取消使用[使用者帐户控制(UAC)来协助保护您的电脑你]前面的打勾,并按[确定]即可!5.要立即生效就要重新开机若重新开机之后,系统开机后可能会提示列出现警告讯息,如果不想看到这样的讯息,可以选择左下角的[Windows 资讯安全中] 变更资讯安全中心警示的方式,把它改成 [不要通知我,且不要显示图示]即可.当然金蝶KIS软件在Vista操作系统中的错误提示还有:"Automation错误""未预期错误;退出"解决办法也是同上面一样,取消Vista的UAC控制即可。
力创测试软件在win7或Vista下的问题解决

产品测试软件在Vista或Win7下安装及应用问题解决方法一、在安装过程中如果遇到了控件不能注册等问题时采用下面的解决办法:
报错举例:
当在Windows Vista 或Windows 7下用regsvr32 注册模块时提示,模块"MSWINSCK.ocx"已加载,但对DllRegisterServer的调用失败,错误代码为ox8002801c
解决方法:
1.在Windows Vista 下打开控制面版-用户帐号-打开或关闭“用户帐户控制”,把“使用用户帐户控制(UAC)帮助保护你的计算机”前的对勾去掉,如下图所示:
2.在Windows 7下打开控制面版-用户帐号-更改用户帐户控制设置(专业版本的win7的目录为:控制面板—>系统和安全—>更改用户账户控制设置),将始终通知下面的小方块托动到最下面,如下图所示:
二、如果vb软件能够正常安装,但是安装后出现报错:比如某某控件没有注册或不可用等报错信息的简单解决办法
正常安装后的测试软件会在桌面建立一个桌面快捷方式,在快捷方式点击鼠标右键,在出现的菜单中选择“用管理员身份运行”,测试软件就不会再报错,并且选择一次后以后直接点击快捷方式就行了不用再每次都右键选择管理员身
份运行了。
破解内存限制32位VistaWin 7 4GB以上内存补丁,最高支持128GB

破解内存限制32位VistaWin 7 4GB 以上内存补丁,最高支持128GB第一步:! {: |6 b- l2 E打开ReadyFor4GB.exe,点击"检查"和"应用"第二歩:第二歩: 右键文件夹里面的AddBootMenu.cmd文件,以管理员身份运行第三歩"3、根据提示,输入"Y"这样我们在启动菜单里面添加了一个启动项:* I/ \* S0 f' p$ b Windows 7 x86 [ 128GB with ntkr128g.exe ]在开机的时候选择Windows 7 x86 [ 128GB with ntkr128g.exe ]即可进入系统, b. ^5 {- o) K8 @第四步:现在我们启动项有两个,开机的时候可以选择,如果看着麻烦则可以通过其他软件来修改,以魔方3为例。
打开优化设置大师,选择系统设置→多系统设置 T U" o& @1 X# ^3 P9 G重启完毕后的,,,:, U/注意:: N5 x( f4 z" `! R3 Y部分旧式驱动程序不支持超过4GB内存寻址,从而导致不能正常工作,甚至蓝屏死机。
2 d- w; Z5 t% j( U" W) T: w请设置系统错误报告生成内存转存文件*.dmp,分析dmp,找出是哪个驱动程序有问题,更新之,或禁用之。
+ G1 ~/ f6 L: X' w; P" ]$ j" z部分主板的附加功能也会不支持4GB而造成蓝屏。
. a$ F; ?$ \- Q o" C! k* @蓝屏与Windows、以及补丁没有直接关系。
Windows Vista/7 自身完全支持超过4GB大内存。
6 u% T, {* C( A, v; E7 G% X同样的硬件在2003或2008上也会出现同样问题。
VISTA常见问题

实际要求和产品功能会因系统配置的不同而有所不同。
Windows Vista家庭高级版
推荐系统要求
? 1 GHz 32 位 (x86) 或 64 位 (x64) 处理器
? 1 GB 系统内存
? 具有至少 15 GB 可用空间的 40 GB 硬盘
快速命令: compmgmt.msc(运行里面输入即可)
7.Vista的开始菜单里面怎么没有运行run命令了?
回答:
1、按下“Win+R”组合键,即可快速打开运行对话框;
2、在开始菜单或任
务栏的空白处,右键,点击“属性”,点击上方的“开始菜单”,在点击“自定义”,在列表框最后一项中勾选“运行命令”复选框,确认后退出即可。这样,在开始菜单的底部右边就显示新增加的“运行”命令。
页面文件 512 TB 16 TB
页面缓冲池 128 GB 470 MB
非页面缓冲池 128 GB 256 MB
系统缓存 1 TB 1 GB
注:以上的表格表示操作系统的最大支持数据
12.如何实现自动登陆vista?
回答:开始→运行→输入“rundll32 netplwiz.dll,UsersRunDll”命令打开帐户窗口,先选中要自动登陆的账户,去选“要使用本机,用户必须输入用户名密码”复选框,输入该帐户的 密码即可(前提是要关闭UAC)。
Vista优化大师(最新版下载)里面也可以设置的哦~
13.为什么我的vista里面盘符会错乱?该怎么解决?
回答:需要先在磁盘管理中手动制定盘符,然后再重新升级安装一次系统。具体步骤如下:
1、进入“控制面板→管理工具→计算机管理→磁盘管理”,然后将错乱的盘符一个个设为你想要的样子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Licensed Memory in 32-Bit Windows VistaThough machines with 4GB are not yet the typical purchase for home or business use, they are readily available from major manufacturers and it won’t be long before they are the typical purchase. But there are problems. You don’t have to stand for long in a computer shop to hear a sales assistant talk of 4GB as some sort of limit for 32-bit operating systems, and it won’t be long before this sales patter develops into outright promotion of 64-bit Windows as the only way to get past this limit. Some sense of this can be seen already in manufacturers’ advertising materials, as in the following fine print from Dell:The total amount of available memory will be less than 4GB. The amount less depends on the actual system configuration. To fully utilise 4GB or more of memory requires a 64-bit enabled processor and 64-bit operating system, available on selected systems only.Let me stress now that I do not complain about Dell’s statement. Its first two sentences are correct for all 32-bit editions of Windows Vista exactly as configured by Microsoft and installed by Dell. In the last sentence, I might quibble that the talk of a 64-bit processor is superfluous since the machine on offer does have such a processor, but otherwise the sentence is correct because of the word fully. Yet although Dell’s statement is true, it is not the whole truth: there is something that Microsoft does not tell you, and perhaps does not tell Dell.That 32-bit editions of Windows starting with Windows Vista are limited to 4GB is not because of any technical constraint on 32-bit operating systems. The 32-bit editions of Windows Vista and Windows 7 all contain code for using physical memory above 4GB. Microsoft just doesn’t license you to use that code.Well, to say it that way is perhaps to put words in Microsoft’s mouth, if you interpret me as saying why Microsoft has done it. Please be sure to understand that I am just telling you what Microsoft has done and how Microsoft has done it. I can’t know why Microsoft has done it, though I will later ask why Microsoft hasn’t explained it clearly. I say the restriction to 4GB is a licensing issue because that’s how Microsoft’s programmers evidently have thought of it. The 4GB limit is retrieved from the registry by calling a function named ZwQueryLicenseValue, which is itself called from an internal procedure which Microsoft’s published symbol files name as MxMemoryLicense. If you remove this check for the licensed memory limit then a restriction to 4GB is demonstrably not enforced by other means. Inasmuch as the software models the thoughts of those who write it, licensing is plainly the one and only mechanism of the restriction. Yet I must admit that I have not found where Microsoft says directly that 32-bit Windows Vista is limited to 4GB only by licensing. The supposed License Agreement doesn’t even mention the word memory. What, really, is going on?DemonstrationPut aside for now the fine print of what it means to “fully utilise” and ask what’s even possible. Especially if you’re one of the many who believe that 32-bit operating systems can’t by definition use more than 4GB of RAM, what do you expect to see for the System Properties in the original 32-bit Windows Vista on a machine with8GB of RAM? Click on the snapshot if you want it full-size and hi-fi:No, this image is not a mock-up, though the red rectangle is my addition to highlight that this 32-bit operating system which ordinarily finds only 3069MB of RAM on this machine seems happy to have 8189MB. Windows will use all this memory, too, not that I have any ordinary need for it to do so. The next picture is as much a record of my unimaginativeness as of 32-bit Windows Vista actually using (very nearly) all the installed 8GB. An entirely ordinary test program writes 1GB of data from a single memory block to a file and reads the file back into that same memory block. That takes a while, even on a fast machine. By the time that eight instances are running concurrently, all the physical memory is in use:Of course, there are contrivances and caveats. To get these pictures without contrivance, you would need a license upgrade from Microsoft, which Microsoft shows no sign of offering. The license data that would have to be upgraded is protected in various ways from being tampered with, and I certainly do not mean for anyone to try changing it, even for testing. Instead, to simulate having new license data from Microsoft, I have modified the kernel just enough so that it ignores the two license values that set memory limits, and I have started Windows in T est Mode so that it tolerates a kernel that no longer has Microsoft’s digital signature. Neither of these steps is meant for general use. I am not solving for you the problem of how to have 32-bit Windows Vista use all your 4GB or more of physical memory without Microsoft’s already in the product that Microsoft sells you. There is no need to bring in any code from a different edition of Windows or to make 32-bit Windows Vista believe it ispermits you to use. No code needs to be changed even by one byte, but to prove this point I have to patch the code because Microsoft protects the data. If you want that this should work for you without contrivance, then pester Microsoft for an upgrade of the license data or at least for credible, detailed reasoning of its policy for licensing your use of your computer’s memory in 32-bit Windows Vista.As for caveats, you should know that although I study software, I do not have the testing resources of a software or hardware manufacturer. I don’t know of anything that misbehaves now that Windows finds all this memory that it ordinarily overlooks. Indeed, since Microsoft is apparently happy to license the use of physical memory above 4GB on 32-bit Windows Vista SP1 and Windows 7 when rebadged as Windows Server 2008, I would be astonished if there is any misbehaviour in Windows itself. But I can’t swear that everything works correctly in every detail and I can’t answer for behaviour that is not in the Windows code. With one exception, my test installation is just the original 32-bit Windows Vista Ultimate from MSDN discs, with all Windows features installed, but with no real-world additions of applications or drivers that aren’t distributed with Windows or of devices that didn’t come with the machine. Applications ought not matter, as argued below, but drivers may. This is where my one exception comes from: some of my tests failed until I updated the display driver (from NVIDIA). That’s as good a reminder as any that when I say 32-bit Windows Vista has working code for using memory above 4GB, I talk of what Microsoft has written for Windows, not of what you add to your Windows installation from who knows where.Still, even with contrivances and caveats, how can it be that I—or you after following my directions if you want to test what I say—can get anywhere near to producing such pictures? After all, for the page The system memory that is reported in the System Information dialog box in Windows Vista is less than you expect if 4GB of RAM is installed, Microsoft states plainly that “for Windows Vista to use all 4GB of memory … an x64 (64-bit) version of Windows Vista must be used.” The pictures above show just as plainly that this statement by Microsoft cannot be entirely truthful. Even if you’re perfectly happy to upgrade to 64-bit Windows Vista—and for all you’re to know from reading this article, I’m among you on that point—I ask that you focus on whether Microsoft is open and truthful, and on whether the rest of the industry has been suitably vigilant and responsible. Even if you don’t care about that for this issue, you may for another. The more that technology companies get away withhalf-truths and the exploitation of ignorance even on one issue, the more they can drift into it as their standard practice.What is the truth, then? When someone says some such thing as that 32-bit Windows Vista is technically, physically, logically, architecturally, fundamentally or otherwise incapable of using all your 4GB or more of RAM, what can they mean?There is already on the Internet and elsewhere an awful lot of rubbish to read about this question. Hardly any of it would be worth citing even if I didn’t want to spare the authors the embarrassment. A surprising number of people who claim some sort of attention as expert commentators would have you believe that using more than 4GB of memory is mathematically impossible for any 32-bit operating system because 2 to the power of 32 is 4G and a 32-bit register can’t form an address above 4GB. If nothing else, these experts don’t know enough history: 2 to the 16 is only 64K and yet the wealth of Microsoft is founded on a 16-bit operating system that from its very first version was designed to use 640KB of RAM plus other memory in a physical address space of 1MB. Some remember this history and add seemingly plausible qualifications that exceeding 4GB is possible only at the price of nasty hacks that require everyone—well, all programmers—to jump through hoops. Fortunately, Intel’s processors are a lot more advanced than the 8086 from all those years ago. Though 4GB is an obvious mathematical limit on the memory that any single 32-bit program can use without special coding, it was passed long ago as a limit for the system and multiple programs in total.Physical Address ExtensionOld hands may already have groaned at the preceding heading. The means for a 32-bit operating system to use physical addresses above 4GB was built into Intel’s32-bit processors well over a decade ago1 and has been supported by Microsoft since Windows 2000. If you haven’t heard of it, or haven’t thought that it applies to Windows Vista, then one reason may be that Microsoft has mostly advertised it only as a feature of the server editions such as Windows 2000 Server and Windows Server 2003, and only then for the more expensive levels with names like Enterprise and Datacenter. However, even Windows 2000 Professional can be configured, without contrivance, to access memory above 4GB by using Physical Address Extension (PAE). This is old technology. It’s also widely and deeply misunderstood technology, arguably more than any other in the history of personal computing.The essence of PAE is that the 32-bit registers used by 32-bit instructions in a 32-bit operating system do not in practice address physical memory. This is because of very old technology called paging. From at least as long ago as Windows 3.0 Enhanced Mode established Windows as the operating system to replace DOS, no software running on any real-world operating system gets to address memory directly except very early during system initialisation. The 32-bit register with which a program or driver or the operating system itself addresses memory holds what is called a linear address.2 The processor translates linear addresses to physical addresses by looking through page tables, which are configured by the operating system. The layout of linear address space need have nothing to do with the layout ofphysical address space. This is how a DLL, for instance, can be loaded at an address not far below 2GB even on a machine that has only a few megabytes of RAM. Pages are typically small, just 4KB each. Two neighbouring pages in linear address space can come from opposite ends of physical memory. It’s all up to the operating system’s memory manager and almost all of us, both users and programmers, take this paging mechanism completely for granted.For the 80386 in 1985, each page table entry (PTE) was 32 bits and allowed only for translating a 32-bit linear address to a 32-bit physical address. However, there is nothing fundamental to that. What’s fundamental is only that every linear address must either map to a physical address or be not-present. There is no reason at all that the linear and physical address spaces must be the same size. With a suitably different translation algorithm, the physical address space can be as big as Intel wants to allow. This theoretical point, which I expect was appreciated at Intel from the outset, got its real-world implementation in the P6 family of processors, beginning with the Pentium Pro in 1995. Since then, with only very few exceptions, Intel’s processors that are suitable for running 32-bit Windows all have enough address lines for accessing 64GB of memory and all support a translation algorithm for using all that memory in 32-bit code. PAE is this alternative translation algorithm.The practical outcome for 32-bit operating systems in general is that although any one instruction can form addresses for only 4GB of linear address space, those 4GB can be drawn together page by page from all over any size of physical address space as and when the need arises. For Windows in particular, the design is that the linear address space changes for each process. In 32-bit Windows, a process’s user-mode code is allowed between 2GB and 3GB of linear address space (depending on the increaseuserva boot option), and the remainder of the 4GB is reserved for use by kernel-mode code. Both 32-bit and 64-bit Windows can use all of physical memory, including above 4GB, but each 32-bit Windows application has at most 3GB of linear address space through which to access physical memory.The difference between that and the “fully utiltise” in Dell’s fine print seems very fine to me, especially while I don’t have any real-world applications that need (or even use) as much as half a GB for each running instance. Until software that uses memory by the gigabyte becomes common for ordinary use outside of specialised contexts, this difference from full utility does not of itself justify a rush to 64-bit Windows—and certainly not of disturbing a working, trusted installation of 32-bit Windows. If you have a 32-bit Windows program that wants more than its 2GB or 3GB, then upgrading to a 64-bit version of that program to run on 64-bit Windows is your only path ahead. If you’re buying a new computer and new applications, then getting 64-bit Windows and 64-bit applications is obviously the way of the future. Meanwhile, if your concern is only that the system and all your 32-bit applications may together use all your 4GB or more, then keeping your 32-bit operating system would at least be an option for you if Microsoft would provide you with license data to let you use the PAE support that Microsoft has already coded into the product.PAE Is An Ugly Hack?Some commentators seem to have trouble grasping the naturalness of a physical address space that is larger than the linear address space. Perhaps they have been distracted by paging’s historical role as technology for dealing with a shortage of physical memory. Perhaps they have in mind the history of MS-DOS, which was kept alive for many years with ever more ways that programmers might write new code to access ever more memory than the basic 640KB.PAE is nothing like that. It is no more a concern to any software than is paging. After all, it is nothing but a variant algorithm for paging. Just as hardly any software is concerned that linear addresses are translated to physical addresses, even less software is affected by how linear addresses are translated to physical addresses. Application-level code and even most system-level code is entirely unconcerned and unaffected. Except for the operating system’s memory manager and for the relatively few drivers that work with physical memory addresses, most notably for Direct Memory Access (DMA), no 32-bit software needs any recoding to benefit from a more-than-32-bit physical address space.Even kernel-mode drivers don’t need to know anything specific to PAE, much less be written specially to support it. All that’s required is a general awareness that physical memory addresses may be wider than 32 bits and that accommodation of this comes naturally from following the documentation. Far from being an ugly hack, PAE requires pretty much nothing of anyone. Indeed, to write a driver that misbehaves only when memory is present above 4GB, you actually have to work at it, either by programming artificially or by convincing yourself that you don’t need to do all that the documentation spells out.When working with physical memory addresses, device drivers need to do 64-bit arithmetic. This should be natural since Microsoft’s development kit for device driver programming has recommended it for well over a decade, including to define a 64-bit PHYSICAL_ADDRESS type that is used by all functions that receive or return physical memory addresses. Moreover, this type is a structure. The programmer who wanted, for who knows what reason, to cast a physical address to a pointer could not easily do it in a way that is valid for 64-bit Windows but is invalid for 32-bit Windows when there’s memory above 4GB. With only a few highly contrived exceptions, any errors with a 32-bit driver’s handling of 64-bit physical addresses, e.g., to discard the high 32 bits, would be as much in error if left unfixed in the same device’s64-bit driver for 64-bit Windows. Whatever such errors may have existed years ago, the natural expectation must be that they are rapidly getting fixed in the latest versions as ever more drivers get revised for 64-bit Windows.For the particular matter of working with DMA, device drivers need to conform to the long-documented functional requirements for setting up and managing their DMA transfers. In particular, they need to be aware that the DMA functions may succeed only partially, and need to be called again to complete the request. The most significant, but not the only, reason for partial success is that the necessary double buffers could not all be set up. Double buffering is a technology for when a device cannot handle the full range of possible physical memory addresses. For instance, an old type of device (such as a floppy disk drive controller) may be limited to 24-bit physical addresses. T o get data from the controller to physical memory above 16MB, the driver must use the DMA functions properly, so that the controller actually reads to a double buffer below 16MB and the DMA functions then copy the data to where it was wanted. A less old type of device (such as an IDE controller) may be limited to 32-bit physical addresses and will need double buffering in any operation that reads or writes to memory above 4GB. Of course, most devices can handle32-bit physical addresses and increasingly many can handle 64-bit addresses. Either way, their drivers are supposed to use the DMA functionality as if double buffering may turn out to be needed. Some drivers for 32-bit Windows assume that all physical addresses fit 32 bits and that their 32-bit device therefore needs no double buffering. They then take shortcuts with their use of the DMA functions. If these drivers are not fixed, then using physical memory above 4GB will expose the liberty that they have taken with the documented coding model. Note that if the device can handle 32-bit physical memory addresses but not 64-bit, then double-buffering would be required on 64-bit Windows too, and the driver’s faulty assumptions would be just as faulty for 64-bit Windows.None of this is to say that drivers do not exist whose faults are exposed when PAE enables use of memory above 4GB, or even that they never existed in any significant number, but it is to say that the main types of fault must be confronted in the development of a 64-bit driver for the same device, so that retention of these faults in the contemporaneous 32-bit driver is highly implausible and even reckless. If you are worried that 32-bit Windows Vista with PAE may be unsafe because of faulty 32-bit drivers (or inadequate hardware, for that matter), then you would do well to wonder how 64-bit Windows can be any less unsafe on the same machine.PAE and PerformanceSome commentators say that PAE comes at some hideous cost to performance. Compared with the original algorithm that maps 32-bit linear addresses to 32-bit physical addresses, PAE is slower. It has one extra level to its page tables. Each PTE is twice as big. The operating system therefore has more work to do when preparing and maintaining the page tables, and since the Translation Lookaside Buffer (TLB) has only half the capacity, memory references are more likely to miss the TLB and require additional bus cycles. The reduction in performance is surely measurable. If you have no need to access memory above 4GB and are concerned enough, then you would not enable PAE. Note however that Microsoft does not regard this performance cost as worth troubling over (as will be clear shortly, under the heading Data Execution Prevention).For this comparison, not only are the PTEs the same size but the algorithms are very similar. T o the processor, it’s PAE that is slightly simpler and plausibly quicker, butthe memory manager in a 64-bit operating system can benefit from using 64-bit registers when working with the PTEs. These are very fine trade-offs relative to the enormous overheads that embellish some of the wilder misunderstandings of PAE on the Internet.For a rough-and-ready assessment of these trade-offs, consider Microsoft’s own performance measurement, as given by the Windows Experience Index. Surely this is meant to have some objectivity, even if comparison of ratings for 32-bit and 64-bit Windows may not be strictly fair. On this article’s test machine, the “Memory (RAM)”component of the Windows Experience Index is consistently 5.0 in 64-bit Windows Vista and is just as consistently 5.1 in 32-bit Windows Vista, whether PAE is enabled or not.Choosing PAEWhether the memory manager in the Windows kernel uses PAE is configurable through the pae boot option. Indeed, 32-bit Windows Vista is supplied with two kernels:an ordinary kernel which uses 32-bit PTEs without PAE, and has no code for working with physical addresses above 4GB;a PAE kernel which uses 64-bit PTEs with PAE, and does have code for working with physical addresses above 4GB.The two kernels are respectively NTOSKRNL.EXE and NTKRNLPA.EXE, both in the Windows System directory. The loader (WINLOAD.EXE) knows how to set up the linear address space for mapping to physical addresses with or without PAE, but each kernel is specialised to one algorithm for the mapping. The pae option tells the loader which kernel to load.Data Execution PreventionIf you have a modern machine of the sort that manufacturers are fitting with 4GB of RAM, then you very likely are running the PAE kernel already. This is not so that you can use physical memory above 4GB, else this article would not exist. It is instead to give you what Microsoft calls Data Execution Prevention (DEP). This protects you from programs that try to execute data, whether in error or from (suspected) malice. The connection with PAE is that DEP depends on the NX bit that AMD has defined (and Intel adopted) in 64-bit PTEs, such that DEP can only be enabled if PAE is also enabled. Because Microsoft wants you to benefit from DEP, the typical practice of Windows Vista is to select the PAE kernel if you haven’t specified that you want it and even if you have specified that you don’t want it. If your machine supports DEP, then a necessary condition for disabling PAE is that you also disable DEP by setting nx to AlwaysOff as well as setting pae to ForceDisable.Physical Memory MapThat you have 4GB of RAM does not mean that all physical memory addresses from zero to 4GB actually do reach any RAM. In practice, much of that range of physical address space, most likely at the top, is given over to such things as the system BIOS and devices. You can get some sense of this by starting the Device Manager, opening the View menu and asking to see “Resources by type” or “Resources by connection” and then expanding Memory. What this gives you, however, is at best only an indication. It tells you that some addresses are used for devices. It doesn’t tell you which addresses actually do have RAM (or ROM, for that matter).The memory map that matters most for the question of what physical memory the kernel can use is the map that the loader discovers from the firmware. For machines whose firmware is a PC-compatible BIOS, the means of discovery is int 15h function E820h.3 Unfortunately, the loader does not save this map exactly as learnt from the BIOS, which complicates your inspecting this memory map for yourself. However, Windows Vista introduces some undocumented functions with which a kernel-mode driver can get the map fresh from the BIOS. Such a driver for viewing the firmware memory map is presented separately, along with a small console application that reports the results. You will need administrative privilege to load the driver.Of particular interest once you have the firmware’’s test machine has its 8GB of RAM in four ranges spread through 9GB of address space:Address Size Remarks00000000`0000000000000000`0009FC00640KB of base RAM, less 1KB as an Extended BIOS Data Area00000000`0010000000000000`BFD0AC00not quite 3GB at 1MB00000001`0000000000000001`000000004GB at 4GB00000002`0000000000000000`400000001GB at 8GBThe first 3GB of physical address space has RAM in two ranges because some is lost at the top of the first 1MB (for reasons of compatibility that go all the way back to the original IBM PC) and some more is lost at the end of the 3GB. The next 1GB is so much given over to device memory that instead of wasting RAM at 3GB, hardware remaps the RAM from there to the end of all other RAM, where it shows as the last of the ranges. The total amount of addressable RAM in the first 4GB is 3,143,338KB, i.e., 3069MB and 682KB. On this machine, with its present configuration of hardware, if the kernel is limited to the first 4GB as its physical address space, then 3069MB (and the spare change) is all the RAM that the kernel can possibly use. Get the kernel to recognise physical addresses above 4GB, and it picks up the other 5GB, for a total of 8189MB as shown in the picture.If the 4th gigabyte were left at 3GB, Windows would have access only to as much of it as does not get overridden. In practice, RAM might show through in various gaps, so that the amount of RAM accessible below 4GB would be more than 3GB but nowhere near 4GB. If you have exactly 4GB of RAM installed, then getting the kernel to use physical addresses above 4GB will be no benefit to you unless some of your 4GB of RAM is remapped above the 4GB address. Whether this remapping is done at present on your particular machine can be checked by using the separately supplied driver. If it is not done, then whether it can be arranged is an issue of hardware configuration. Check your BIOS Setup, read your chipset manual, or consult your computer’s manufacturer.Of course, for a machine that has exactly 4GB of RAM and has 32-bit Windows Vista pre-installed, you would expect that the manufacturer, having been told by Microsoft that Windows will not see any RAM above 4GB, might not have configured any of the 4GB to be remapped out of sight and into uselessness. You should not be surprised to find that remapping is disabled. Worse, unless the manufacturer anticipates installing other Windows versions on the machine, there is no incentive even to provide for remapping above 4GB as something that you can configure if you want. Indeed, it may even be that your chipset can’t handle physical memory addresses that are wider than 32 bits. If so, then memory above 4GB isn’report that any such memory is present). If your chipset does not support remapping, then RAM that is overridden for device memory below 4GB will never be seen as usable RAM by 32-bit Windows even with PAE enabled and is just as much lost to you if you install 64-bit Windows.。