Click here to Skip to main content
15,885,366 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
HI All,

i have some doubts regarding application development.

i am writing a vc++ MFC application in VS2010 and WIN-XP. here i am using WMI, lotsof securities related APIs and assembly language also.
really i am curious to know what minimal things need to be take care to run this application in WIN98 WIN-XP, WIN2000,VISTA and WIN-XP.

is all the API working in WIN-XP will work fine in all higher versions. what if Microsoft deprecated some APIs in higher version.

and also i would like to know whether all 32 bit application will run in 64 bit or not, if not then how to manage those things.

if so how to manage all those things in a single build to work in all versions of Windows OS.

do we need to write different APIs for different versions.

i really curious to know all those things.

Lots of thanks in advance.
Posted
Updated 7-Apr-11 3:31am
v2
Comments
Sergey Alexandrovich Kryukov 7-Apr-11 13:15pm    
If you exclude Win98 from your list you will be fine. Can you do it? Using Win98 makes very little or no sense (and probably never made sense).
--SA

Your operating system support should be restricted to XP, Vista, Windows 7, Server 2003-2008. Everything older than those is irrelevant and so obsolete that they make Warren Buffet look like a spring chicken.

Further, unless you have a tangible requirement to create 64-bit software, don't bother with it. If you must support 32-bit OS's, write 32-bit software, and it will still run on 64-bit systems.
 
Share this answer
 
v2
I already commented on Win98. This is the only item which can be highly problematic. If you could exclude it from support (I highly recommend it), you would be fine.

Well, on every part of Windows API you need to look for Microsoft documentation and check up the list of compatible platforms, as simple as that. Your questions like "what if Microsoft deprecated" can be addressed to Microsoft. It already happens. Fortunately, Microsoft cannot "deprecate" what is already running on a legacy system, but you will probably need to check up the system version during run-time and select different branches of code — during run-time. I wish you could right the code which can avoid it, but you apparently cannot predict the future. Just be prepared.

There is no problem running 32-applications on any of 64-bit platforms. All such application are run on the platform of WoW64. This is a subsystem of 64-bit versions of the Windows systems used for running 32-bit applications. See http://en.wikipedia.org/wiki/WOW64[^].

However, it is not possible to mix executable modules compiled for different platforms (CPU architectures) in one process. One problem is that such application can even be compiled but will crash during run-time. You just need to be careful about it. To avoid trouble, you may need to know all your dependencies. Dependency Walker application can be of great help, see http://dependencywalker.com/[^] and http://msdn.microsoft.com/en-us/magazine/bb985842.aspx[^].

Presently, Windows supports three Intel CPU architectures: 32-bit x86 and two different 64-bit ones: x86-64 (http://en.wikipedia.org/wiki/X86-64[^]) and IA-64 (Itanium, see http://en.wikipedia.org/wiki/Itanium[^]). Itanium is the original Intel architecture, more powerful, expensive and rare, x86-64 was created later under the pressure of AMD64 and is more popular and less expensive.

The good thing is: both 64-bit architectures support perfectly identical 32-bit modes, so all your 32-bit applications will work on any of the 64-bit versions of the OS, but you cannot mix executable modules compiled to different 64-bit targets.

Finally, no combination of these three target platforms can be mixed in the same process. The only way of inter-operation between components compiled for different targets is IPC.

That's basically all you need to know on this topic. Everything else is up to your development strategy.

Good luck,
—SA
 
Share this answer
 
v6
Comments
Rick Shaub 7-Apr-11 13:49pm    
My 5. However, he needs to be careful with regards to WMI. You have to take a look at each object and property that you are using and make sure tha it's supported for whatever OS versions you want to support. Also, I believe WMI can be turned off, so that's also a consideration.
Sergey Alexandrovich Kryukov 7-Apr-11 13:52pm    
Thank you, Rick.
I understand; WMI can be a problem because it is relatively new. Nevertheless, my instructions (or rather check list) are generic and can be used.
--SA
Jayant Narayan Dash 8-Apr-11 3:17am    
Thanks to all of you for your valuable reply.
Sergey Alexandrovich Kryukov 8-Apr-11 10:45am    
You're welcome.
Are you going to formally accept my Answer?
Thank you.
--SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900