Question

I have Windows 2003 server, with executable built on VC6. I would be needing to check the compatibility of the executable on Windows 2008 server (both servers 32 bit). I know that I need to check for ABI compatibility for these two versions.

How do I confirm that there is ABI compatibility for any two versions of a OS? Or does Windows release the ABI compatibility as part of product document?

Is there any other set of consideration to be taken care apart from ABI compatibility?

Was it helpful?

Solution

Windows maintains binary ABI compatibility between different versions. This means that programs do not need to be re-compiled for different versions.

However, this is not enough to guarantee that a program will run correctly on a version that you have not yet tested. Some examples of possible problems:

  • You use a deprecated API that has been removed in a later version.
  • You use an API that exists only on a later version of the OS and so your program fails to run on an older version.
  • The OS changes functionality that breaks your app. The classic example of this was UAC in Vista. The ABI did not change, but some pre-UAC apps failed to run correctly under UAC.

The bottom line is that you do need to understand the theory behind binary compatibility. But that does not absolve you of the need to test. Make sure that you've tested your program on all supported systems. Or at least as many as you can reasonably manage to find.

OTHER TIPS

See detailed analysis of changes in the Windows API on this page. The reports are generated with the help of the abi-compliance-checker tool.

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top