Question about working as a Windows API programming professional

  • SpinRite v6.1 Release #3
    Guest:
    The 3rd release of SpinRite v6.1 is published and may be obtained by all SpinRite v6.0 owners at the SpinRite v6.1 Pre-Release page. (SpinRite will shortly be officially updated to v6.1 so this page will be renamed.) The primary new feature, and the reason for this release, was the discovery of memory problems in some systems that were affecting SpinRite's operation. So SpinRite now incorporates a built-in test of the system's memory. For the full story, please see this page in the "Pre-Release Announcements & Feedback" forum.
    /Steve.
  • Be sure to checkout “Tips & Tricks”
    Dear Guest Visitor → Once you register and log-in please checkout the “Tips & Tricks” page for some very handy tips!

    /Steve.
  • BootAble – FreeDOS boot testing freeware

    To obtain direct, low-level access to a system's mass storage drives, SpinRite runs under a GRC-customized version of FreeDOS which has been modified to add compatibility with all file systems. In order to run SpinRite it must first be possible to boot FreeDOS.

    GRC's “BootAble” freeware allows anyone to easily create BIOS-bootable media in order to workout and confirm the details of getting a machine to boot FreeDOS through a BIOS. Once the means of doing that has been determined, the media created by SpinRite can be booted and run in the same way.

    The participants here, who have taken the time to share their knowledge and experience, their successes and some frustrations with booting their computers into FreeDOS, have created a valuable knowledgebase which will benefit everyone who follows.

    You may click on the image to the right to obtain your own copy of BootAble. Then use the knowledge and experience documented here to boot your computer(s) into FreeDOS. And please do not hesitate to ask questions – nowhere else can better answers be found.

    (You may permanently close this reminder with the 'X' in the upper right.)

coffeeprogrammer

Well-known member
Jul 19, 2021
155
15
So I have a question for all you win32 developers. I’ve wanted to learn windows internals for quite some time. I listened to SN on and off since it started. I actually think it was Steve that got me more interested. I’ve been reading Windows 10 System Programming and yesterday I started Windows Via C/C++ and I think I making some progress. I’ve debugged a few of the sample programs with Windows 10 System Programming and I think it is some of the GUI stuff that I am not understanding like CAppModule, the documentation for ALT and WTL is not that good. I did determine that CAppModule is extending CComModule my looking in atlapp.h on GitHub. But without documentation that seems the only way to figure things out. I actually kinda of like some of this Windows Programming. The Professional programming I done is mostly restful services. And I have to say, it is not hard finding work in the Java/C# areas. I guess my question is how hard is it to find work if your wanting to work with the windows api? I does not seem nearly as easy as say Java, if I goto in indeed.com and type in Java and filter my remote, I find way more than Win32 or Windows API and filter by remote. I did however notice lots of pros on upwork.com seem to show Windows API development as a skill. I am not yet really to add these skills to my resume, but I am also holding back and not spending that much time on it because I am afraid it might be hard to find remote work. I don’t want to move and live in a small town in Maine.



Thanks.
 
I did however notice lots of pros seem to show Windows API development as a skill. I am not yet ready to add these skills to my resume, but I am also holding back and not spending that much time on it because I am afraid it might be hard to find remote work.
I don't know how much of a future there is in Windows API programming (especially with the advent of .NET MAUI). However, I suggest reading the latest Charles Petzold books on the subject.
 
I don't know how much of a future there is in Windows API programming (especially with the advent of .NET MAUI). However, I suggest reading the latest Charles Petzold books on the subject.

Ya, I have that book and I study its code, but that book is more just for the GUI. It also does not consider any of the libraries that can be used; specifically active template library and windows template library. Much of the code in the Yosifovich books that is not in the console uses what I am understanding is a mix of ATL and WTL for the GUI parts. For example his Chapter 7 sample of MD5 Calculator clearly has these kind of MAPS of events that in that would be in the switch statement of windows produce of the Petzold style of WIN32 C programming. Based on what my debugger did when I debugged this is it is some kind of macro that the debugger understand I think. It just stepped though the MAP code in a loop waiting for something to happen. So the programmer does not have to do as much work as writing a big windows procedure. In fact most all of the Yosifovich’s header include these maps. I think I *kinda* understanding them, as I witnessed the behavior in the debugger but I like documentation. There is also CappModule which relates back to CcomModule. Also I don’t know much about that, not in Petzold and there is CmainFrame, and a CmessageLoop, which I guess hold the message loop. I see the message loop object is being added to the CappModule module, but basically put simply, I’ve only read the code for these OO GUI and their way of doing things. Petzold’s book does these things at a lower level. Petzold’s book also does not describe handles that are held in the kernel and their flags. Handles to kernel objects like FileMaps, Processes, Thread and probably other things like semaphores and mutuxes. Those are all Kernel Objects. Yosifovich has a book on the Windows kernel, but I have not opened it, I wanted to feel solid on the System programming first. Any way my question was not specially how to learn more. It is will it be worth it? What do the job prospects look like? There are some that I find, but it much easier (it seems) to find Java or C# type jobs.
 
I think the only people who have to deal with the raw C API would be those who are maintaining some cross-platform library (QT, wxWidgets, etc.), or the project is low level to begin with (like Steve's stuff, hardware drivers)