Comment by ovi256

6 years ago

This is strictly about the win32 GUI API.

There are other win32 APIs that are quite interesting:

* the networking API (native proactor servers, something that Linux doesn't have yet AFAIK)

* the security and process API, which I had the pleasure to explore recently, in order to contribute to an open source server that launches a single user server for a connected user, under the user's profile. The CreateProcessAsUser function and its interactions with user authorization tokens is quite something.

I've been playing around with VMS on my MicroVAX 3800 lately, and between that and getting into Windows internals I'm just super fascinated by the difference in feel, when it comes to what the system-level APIs provide, of these highly-integrated, enterprise-oriented operating systems versus the *nix family. Particularly how robust things like user identity management are.

Not saying it's better or worse, of course. Just interesting.

I'd really love to play around with something as hyper-integrated as z/OS or something. So if anyone's got an old ES/9000 or something kicking around that they wouldn't mind sending me, let me know.

Also, there aren't many books about those (compared to e.g. books about the *nix API). I only know of Hart's Windows System Programming.

  • A very well working combo is "Windows Internals" for the high-level view + MSDN docs for the details.

  • Windows via C/C++ is another one in this area. Windows Kernel Programming by Pavel Yosifovich is a recent book, but it goes much lower-level.

    Windows Internals is pretty good, but it's not a programming book per se. It's trying to document the design of the OS, help with troubleshooting when you don't have the source to the OS, and help developers understand the high-level concepts.

  • You don't need many books on it. There's Petzold.

    • Programming Windows 5th Edition by Charles Petzold, still commands a price on eBay for its Win32-centric program development strategy. IIRC 6th edition used C# .NET and 7th and 8th went all in on UWP.

      1 reply →

> native proactor servers

I/O completion ports? Those are great and I wish Linux had a similar API. Epoll doesn't fully solve the asynchronous I/O problem since files always have data available to read. The kernel should be able to do reads and writes in the background while my program does something else.