There's a hundred of these and I want something well-written. I'm primarily using Nim but a C/C++ book wouldn't hurt. Ideally it would have lots of exercises.
The reason you're not getting a good answer is because the ultimate answer is to just use Microsoft's Documentation:<p><a href="https://learn.microsoft.com/en-us/windows/apps/" rel="nofollow">https://learn.microsoft.com/en-us/windows/apps/</a><p><a href="https://learn.microsoft.com/en-us/windows/apps/get-started/start-here" rel="nofollow">https://learn.microsoft.com/en-us/windows/apps/get-started/s...</a><p><a href="https://learn.microsoft.com/en-us/windows/win32/api/" rel="nofollow">https://learn.microsoft.com/en-us/windows/win32/api/</a><p>It covers near everything, is extremely exhaustive, and constantly updated. That being said, if you're more interested in <i>how</i> the Windows API is organized/works internally (why you have to give it handles/resources and what those mean, for instance), then Charles Petzold's series is generally considered the definitive resource:<p><a href="https://www.amazon.com/gp/product/B00JDMP71S/" rel="nofollow">https://www.amazon.com/gp/product/B00JDMP71S/</a>
The Windows Internals series is typically the go-to for what you're looking for. Combine with MSDN browsing to determine what you want to do and how you want to do it.
The old new thing[1]. It's a blog, but he did also publish a book[2] compilation of some choice blog posts. The book is from a few years ago, so some specifics might be outdated, but I think a real strength of the blog is how, despite being very targeted, focusing on specifics of one OS, it's also very general. I also just really like Raymond Chen's writing style.<p>1: <a href="https://devblogs.microsoft.com/oldnewthing/" rel="nofollow">https://devblogs.microsoft.com/oldnewthing/</a><p>2: <a href="https://devblogs.microsoft.com/oldnewthing/?p=28793" rel="nofollow">https://devblogs.microsoft.com/oldnewthing/?p=28793</a>
Programming Windows and Inside Windows are the books you want.<p>Programming Windows covers systems programming in C and in later editions, in C#.<p>Inside Windows goes over the Window OS architecture in-depth. There’s not much programming in the book but you will come away with a deep understanding of the OS.<p>Both books are published by Microsoft Press. You’ll of course want the latest editions but if you come across earlier editions, those are fine too.<p>I’m partial to the earlier Petzold editions of Programming Windows.<p>The technical docs at microsoft.com are also super helpful and up-to-date: <a href="https://learn.microsoft.com/en-us/docs/" rel="nofollow">https://learn.microsoft.com/en-us/docs/</a>
Off topic maybe, but would like recommendations for macOS too, especially C/C++ given that everything is Swift now while I suspect that even so major apps are not using Swift. Windows has much more available.[1], [2]<p>[1]:<a href="https://learn.microsoft.com/en-us/sysinternals/resources/windows-internals" rel="nofollow">https://learn.microsoft.com/en-us/sysinternals/resources/win...</a>
[2]: <a href="https://www.amazon.com/Windows-Kernel-Programming-Pavel-Yosifovich/dp/1977593372" rel="nofollow">https://www.amazon.com/Windows-Kernel-Programming-Pavel-Yosi...</a>
I would recommend "Programming Server-Side Applications for Windows 2000" by Jeffrey Richter and Jason D. Clark.<p>Richter also wrote "Windows via C/C++", which was previously titled "Programming Applications for Windows 2000" (4th edition) or "Advanced Windows" (3rd and earlier editions).<p>I realise these books are now very old (17 years old for "Windows via C/C++" and 25 years for "Programming Server-Side Applications") but really, the Windows API hasn't changed all that much in that time.
Besides the great learning resources at MSDN, the Windows Internals series is a requirement.<p>Then depending on which area of Windows you want to focus on, there are plenty of Microsoft Press books.
What kind of systems programming are you interested in? A sibling comment already mentioned Windows Internals, but that's really about the architecture of the Windows kernel. If you want to write applications, you probably want to read something about the Windows API?
What exactly do you consider systems programming, i.e. what would you like to achieve?<p>Windows is not open source, so unless you work for Microsoft, you won’t really be doing much “real” systems programming probably.<p>Do you want to program applications? Windows services? Device drivers?
For the people here who know windows and Linux, what are some of the major differences between the two that you like/dislike?<p>I know nothing about windows internals, but I’m curious
.NET has been the standard interface at Windows system level for many years. The ".NET languages," particularly C# will provide much less friction than .cpp (or Nim). For no other reason than the quantity and quality of tutorials and documentation written by technical experts and edited by technical editors who are getting paid to write and edit from line items in Microsoft's regular operational budgets.<p>Or to put it another way, picking languages takes exploration of Windows system programing from an X problem to an XY problem. Good luck.