8 things you should know before moving to x64 version of Windows
There are many users that already have a computer with processor that supports the x64 architecture and some of them probably consider to move into the new world of 64-bit and install the x64 version of Windows.
if you're one of these users, you should read the following tips before doing any step:
- First, let's start with the good part: The x64 version of Windows have an emulation known as "WOW64" which allows you to install, run and use almost every existing 32-bit application that you currently use in your 32-bit version of Windows. I said the word 'almost' because there are some exceptions that will be explained in the next clauses.
- Device Drivers: As opposed to applications, 32-bit drivers cannot be used under x64 version of Windows. This means that must have the appropriate 64-bit driver for every hardware product that you want to use. For standard hardware products like simple mouse and keyboard, you don't have to worry, because Windows x64 already packed with the right drivers. But if you use some uncommon hardware devices, you should check if the manufacturer of these devices provide x64 drivers for these devices.
- There are some applications that load and use one or more drivers that are needed for their functionality. Just for example: Process Explorer and some other tools of SysInternals load their own driver that is used to extract information from Windows Kernel.
These kind of tools won't work under x64 system, unless the software developer provide the software with the appropriate 64-bit driver. In the case of SysInternals tools, there is no problem, because these tools are shipped with both 32-bit and x64 drivers, and the right driver is loaded according to the version of Windows.
However, there are some software developers that only provide a driver for 32-bit, and thus their software won't work under x64.
- Starting from x64 version of Windows Vista, Microsoft added a security feature that many people don't know about: Every driver that is loaded into Windows Kernel must be digitally signed. Signing a driver can only be done by a commercial entity and requires also to pay hundred of $ per year for the Commercial Software Publisher Certificate.
Microsoft added this feature in order to prevent from malware/Viruses/Trojans creators from loading and running malicious code inside the Windows kernel. Unfortunately, they also blocked many legitimate small developers from porting their driver based application into 64-bit.
One example is my own OpenedFilesView utility. This utility uses a small device driver for extracting information about the opened file handles stored in the Windows kernel. (There is no any other way to get this information)
Due to above Kernel changes in Vista x64, I cannot port this utility into Windows x64. I already had some users that moved from 32-bit to x64 system and disappointed after they found out that they would not be able to use my OpenedFilesView utility in their new x64 system.
In theory, I can open a real company with office, phone, and address, purchase a Commercial Software Publisher Certificate, do the entire process of signing my driver, and then sell the x64 version of OpenedFilesView for $10-$15. However, I don't think that the sells of this software will cover the costs of maintaining a company and Certificate payments.
- There are some applications that inject a dll file into other programs (Windows Hooks) in order to interact with their user interface or to grab some information from them. For example, My Volumouse utility change the mouse wheel behavior when the focus is on other applications, and thus it inject a special dll for every application that interact with the mouse wheel.
When you run this kind of application on x64 system, it'll probably work well with other 32-bit application, but it won't be able to interact with other x64 applications, unless the software developer added a support for x64 systems.
- Windows Registry on x64 version of Windows is a little confusing: Some of the Registry keys are common for both 32-bit and x64 applications, while some Registry keys have 2 separated instances - one for 32-bit applications and one of 64-bit applications. The separated keys for 32-bit applications are stored under HKEY_LOCAL_MACHINE\Software\Wow6432Node and HKEY_CURRENT_USER\Software\Wow6432Node.
- On x64 system, every memory address, file handle, window handle, and other kernel objects, consume 8 bytes in memory (64-bit = 8 bytes), while on 32-bit systems, only 4 bytes are used. This means doing the same work on x64 might consume much more memory than on 32-bit system, even when in many cases, the usage of 8 bytes is not really necessary.
- Many applications vendors still don't provide a separated 64-bit version of their application, and instruct their x64 users to use their 32-bit application. Even if the 32-bit application works perfectly on x64 system, it's still running on WOW64 emulation, and this means that the application might be a little slower than on a real 32-bit system.
However, if the application vendor provide a separated version for x64, running the x64 version of x64 system might give you better performances than using the 32-bit application on 32-bit system.