Ensuring a Program Written for 32-bit Windows is Compatible with 64-bit Windows Ensuring a Program Written for 32-bit Windows is Compatible with 64-bit Windows windows windows

Ensuring a Program Written for 32-bit Windows is Compatible with 64-bit Windows


There is a lot of misinformation on this thread.

When a 32-bit application is run on 64-bit windows:

  • Most of the compatibility problems come when the application tries to install a kernel-mode driver. A 32-bit driver can't be installed on the 64-bit OS. This is amost certainly the problem with a firewall. It's trying to hook into the TCP/IP driver stack.
  • THERE IS NO EMULATOR! The 32-bit object code is executed by the cpu completely natively at full speed.
  • There is no support for old 16-bit code. This broke a lot of installers.
  • Accessing the right folders is generally not a problem. When a 32-bit program opens a file in, say %windir%\system32\, the OS automagically redirects it to %windir%\syswow64. The same for certain parts of the registry. There are a few potential gotchas here, but they're generally along the lines of assuming that various WINAPI Get...Directory() functions return the same strings that they did in Windows 95.
  • Whether it was compiled 10 years ago or just yesterday, then C/C++ pointers are still 32-bits (4 bytes) and all of the code that just assumed that -- including SendMessage()! -- still works. The 8-byte pointer issue doesn't come into the picture until you start converting to 64-bit compilers.


The best explanation I've found is offered here which basically says 32-bit programs are run on an layer of emulation which doesn't allow the system access you'd get from native programs run in a 64-bit environment:

http://blogs.msdn.com/oldnewthing/archive/2008/12/22/9244582.aspx

I would assume this means that problems with programs like GTA4 come from the layer of emulation not producing the expected results found on a 32-bit native system. This is why you keep seeing Microsoft release compatibility updates all the time.

Here's what the MSDN has to say about the matter:

http://msdn.microsoft.com/en-us/library/bb427430(VS.85).aspx


Drivers are a different story that programs:http://support.microsoft.com/kb/896456

Zone Alarm uses a special 32-bit driver created by Check Point to do the monitoring. This is probably what's creating the issue with that application. As for Grand Theft Auto 4? I have no idea.