Is the win32 api still being developed and is it worth learning it today? Can you do everything you can with .net framework that you can with the native api?
-
Only use the WinAPI when there is not a managed (.Net) way to do what you need. – Federico Berasategui Aug 12 '13 at 18:24
-
http://en.wikipedia.org/wiki/Windows_API – qwr Aug 12 '13 at 18:27
-
Removed unrelated "sorry for offtopic" text from post... it is probably not ok on SO, but have good answers so not voting to close. – Alexei Levenkov Aug 12 '13 at 18:34
-
@AlexeiLevenkov Ok no problem. I was unsure whether to post. Like you say though, some good answers. – c_programmer_jim Aug 12 '13 at 18:37
-
6It is rather the opposite, it is .NET that is terminally obsolete :) For a very good reason, if you build and test your program on Windows 8 then you still have a very good guarantee that it runs on XP as well. Innovation happens in the winapi. – Hans Passant Aug 12 '13 at 18:41
-
5Most of this question is not opinion-based. It shouldn't be closed. – Alon Gubkin Aug 19 '13 at 02:23
-
I agree. "Is the win32 api still being developed" is a clear, factual (if grammatically questionable) question with a factual answer. – Michael Edenfield Aug 19 '13 at 02:43
-
It's factual, but the question will lose value over time. If this question had been asked in 2008, the answers would still be the same and still correct, but would googlers be satisfied by such old answers to a question like this? – Blorgbeard Aug 19 '13 at 04:48
-
Also, see related questions http://stackoverflow.com/questions/576034/is-learning-the-win32-api-worthwhile?rq=1 http://stackoverflow.com/questions/5507/does-it-still-make-sense-to-learn-low-level-winapi-programming http://stackoverflow.com/questions/506396/how-relevant-is-win32-programming-to-modern-professionals – Blorgbeard Aug 19 '13 at 04:50
4 Answers
The Windows API is still being developed. For example, see Windows 8.1 New APIs and features for developers and Windows 8 and 8.1 API Index. Obsolete? Not likely. There will always be a need for people who understand how Windows works at a lower level. Somebody has to write device drivers and low-level system utilities.
Knowledge is rarely useless. Learning how the Windows API works is absolutely necessary if you're writing low-level utilities, and very handy even when writing native applications in C++ or Delphi. Less so when you're writing .NET applications, but much of the .NET runtime libraries depends heavily on the Windows API. So understanding how it works "under the hood" is quite useful.
In addition, there are things that the .NET libraries don't expose. For example, a C# program I was working on needed access to a Waitable Timer that another developer was using in a C++ application. The .NET libraries don't provide a wrapper to that particular kernel object so I had to write my own, which involved delving into the Windows API.
In most .NET development, you probably don't have to understand anything about the Windows API. But it sure doesn't hurt. I know that my understanding of why some parts of .NET work the way they do is enhanced by my understanding of Windows API programming. In addition, having struggled with Windows API development, I'm much more able to appreciate the huge productivity gains that .NET gives me.

- 131,090
- 20
- 188
- 351
-
Your first link seems to be about Windows Store App development, i.e. WinRT - the proclaimed Windows API successor. This is not the Windows API. What am I missing? – IInspectable Aug 12 '13 at 18:38
-
-
3That one makes a lot more sense, thanks for the update. On a related note, you didn't mention WinRT in your answer. With WinRT [being based on the Win32 API](http://en.wikipedia.org/wiki/Windows_Runtime#Technology) you could probably replace every occurrence of .NET with WinRT and come to the same valid conclusion. – IInspectable Aug 12 '13 at 19:21
-
is it still practical and necessary? because you answered in 2013 – BattleTested_закалённый в бою Oct 24 '18 at 08:30
-
1@MohammadrezaPanahi Yes, it's still practical and necessary. The fundamentals have not changed in the last five years. – Jim Mischel Oct 24 '18 at 12:23
Another answer to this question is from the perspective of professional software management. Specifically, the cost to Microsoft of obsoleting the Win32 api is too great. That is, if they were to NOT support it in Windows 9, for example, then every customer who is currently running a program that requires the API would re-evaluate their need to use any Microsoft products.
Some customers, i.e. more than a few, would say that Microsoft products are too expensive and would take the opportunity to either 1) remain on Windows 8 and prior until the end of time and NEVER buy another product from Microsoft; or 2) convert their business systems to using a *nix or an Apple system.
Note, the above is NOT speculation on my part. This very thing happened to IBM in the 1960's when they forced their customer base to migrate to the 360 series of hardware. At the time the 360's were completely unlike the previous IBM mainframes and customers had to significantly re-work their existing software in order to run on the new machines. Many IBM customers choose to go with Sperry-Rand and other hardware vendors where the cost of a new machine and a conversion was less than the cost of an IBM 360 and a conversion.
IBM almost went out of business because of a businesses right to freedom of choice! They (IBM) learned a lesson. To this day it is still possible to run programs written in the 1960's on a present day IBM mainframe.

- 3,777
- 1
- 15
- 21
The WIN API is still being developed.
Depending what you're planning to do, maybe is useful, or maybe not..
And yes, there are some things that can't be done with .Net, in that case you use PInvoke. But INMH you don't need to know the WINAPI for that, just know where to search when needed..

- 13,594
- 8
- 47
- 75