I think that you should also consider WMI and the MarkingTechnology property: https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-printer.
There is a full sample WMI program: https://learn.microsoft.com/en-us/windows/win32/wmisdk/example--getting-wmi-data-from-the-local-computer. Adjust the query to use the Win32_Printer class instead of Win32_OperatingSystem. Try extracting and displaying the Name and MarkingTechnology values.
Before trying C++, execute this statement manually in Command Prompt:
wmic printer get MarkingTechnology, Name
If it does not display the details, then probably the drivers do not supply them, and WMI is useless.