Hi Isaac, There are a few options:
1. Use the spooler and Win32 API's directly (this may be easiest option) https://support.microsoft.com/en-us/help/138594/howto-send-raw-data-to-a-printer-by-using-the-win32-api
2. Set up a print driver as a raw driver (qz | Wiki - Setting Up A Raw Printer in Windows ) Not recommended as it's not only slow but needlessly complicated to write the code as if it's a Windows graphic when working with raw data.
3. Open a filestream to the USB HID port directly. This bypasses the Windows spooler entirely. I don't have any sample code in C++, but this article gives you an idea of what's involved. https://antiduh.com/blog/node/9 Given the interfaces, it might be easier in C++. This can be quite useful and is faster raw printing than using the spooler, but more complicated. The other major benefit of it is it gives you true 2-way communication so you can query status and set up the printer however you want. If you decide you want to go this route, I can share the VID's Zebra owns.
Thanks for the thorough explanation!
I tried the first solution as you recommended and it was successful.
We currently doesn't have any bi-directional communication requirement but if anything came up, I will look more into the third solution.
I am looking at your Solution #3. Do you have the VID and PID for a ZE500 print engine?