Win APIs on windows 8

Posted on 2013-09-09
Medium Priority
Last Modified: 2013-09-10
Dear Experts,

I'm doing my migration of my own coding application (C++) from Win XP to Win 8.
I'm concerning the Win APIs compatibility.
The main question is "Will my used API work well on Win 8 as same as it used to do on Win XP".

I found that, in Win XP (C:\Windos\System32\) there's some dll like user32.dll, kernel32.dll,....
But in windows 8 (C:\Windows\System32), there're:
   +  not only user32.dll and kernel32.dll
   +  but also api-ms-win-....dll and \downlevel\api-ms-win-....dll (such as api-ms-win-core-heap-l1-1-0.dll)
So, please explain me,
   +  What's api-ms-win-....dll stand for?
   +  Does this make any trouble to compatibility of Win APIs.

Regarding your soon responses.
With best regards.
Question by:DreamSA
1 Comment
LVL 86

Accepted Solution

jkr earned 2000 total points
ID: 39476660
>>The main question is "Will my used API work well on Win 8 as same as it used to do on Win

The answer is both "Yes" and "No". As with your other Q, the API calls will behave the same, yet the result might be different regarding file system and registry virtualization and UAC as mentioned in http://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware ("Making Your Application UAC Aware" - I know I posted that in your last question as well, just to be complete).

The "api-ms-win[...].dll" things that you see are new to W8, yet nothing else but helpers - see http://msdn.microsoft.com/en-us/library/windows/desktop/Hh802935%28v=vs.85%29.aspx ("Windows API Sets"):

API Sets are strongly named API contracts that provide architectural separation between an API contract and the associated host (DLL) implementation. API Sets rely on operating system support in the library loader to effectively introduce a namespace redirection component to the library binding process. Subject to various inputs, including the API Set name and the binding (import) context, the library loader performs a runtime redirection of the reference to a target host binary that houses the appropriate implementation of the API Set.

So, these are basically helpers to nake it easier for your app to end up at the set of functions that they want, yet no change in functionality will occur, especially for binaries compiled for earlier versions.

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Detailed instructions on how to install an Access add-in in recent versions of Office and Windows (with screen shots)
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

586 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question