Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Match USB Printer to friendly name

Match USB Printer to friendly name

Scheduled Pinned Locked Moved C / C++ / MFC
windows-adminregextutorialquestion
3 Posts 1 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    gbeez
    wrote on last edited by
    #1

    Hi! I need to implement bidirectional communication with a USB printer. Short story is: there can be more than one printer of the same model connected to the system at a time. I may have access to the serial numbers of the printers through the device ID (not even sure of this yet), but I need to match this up with the "friendly name" used in the spooler to be sure that I have the right printer. I also have a sort of virtual port number obtained from the registry, but that seems to be completely irrelevant. Does anyone have any ideas how to do this? The unmodified driver (we are an OEM) cannot tell identical printers apart from the driver level, so I don't even know if this is possible. Obviously the spooler knows the difference, but the spooler interface (WritePrinter, ReadPrinter) is not bidirectional-capable in this driver. Thanks much...

    G 1 Reply Last reply
    0
    • G gbeez

      Hi! I need to implement bidirectional communication with a USB printer. Short story is: there can be more than one printer of the same model connected to the system at a time. I may have access to the serial numbers of the printers through the device ID (not even sure of this yet), but I need to match this up with the "friendly name" used in the spooler to be sure that I have the right printer. I also have a sort of virtual port number obtained from the registry, but that seems to be completely irrelevant. Does anyone have any ideas how to do this? The unmodified driver (we are an OEM) cannot tell identical printers apart from the driver level, so I don't even know if this is possible. Obviously the spooler knows the difference, but the spooler interface (WritePrinter, ReadPrinter) is not bidirectional-capable in this driver. Thanks much...

      G Offline
      G Offline
      gbeez
      wrote on last edited by
      #2

      no reply on this one huh? Yeah, it seems to be a toughie...well just wanted to add some info I think I left out: I'm using file-based access to the port to achieve the communication. I call SetupDiGetDeviceInterfaceDetail to get the device path, and use ReadFile and WriteFile from there on. So the problem is getting some piece of information from the SetupDi functions (or maybe CM_ functions) that I can match with something that I get from the spooler functions (OpenPrinter, GetPrinter, etc.) The SetupDi functions only give me manufacturer name, model, and serial #. As I tried to say above, the options as I see them are: 1 retrieve serial # from spooler functions (I can get it from the other side) 2 match virtual USB port in spooler (ie "USB0001") to actual port (maybe "hub#:port#", but any format will do) <-seems more likely option Just wanted to make sure I was being as clear as possible. Thanks!

      G 1 Reply Last reply
      0
      • G gbeez

        no reply on this one huh? Yeah, it seems to be a toughie...well just wanted to add some info I think I left out: I'm using file-based access to the port to achieve the communication. I call SetupDiGetDeviceInterfaceDetail to get the device path, and use ReadFile and WriteFile from there on. So the problem is getting some piece of information from the SetupDi functions (or maybe CM_ functions) that I can match with something that I get from the spooler functions (OpenPrinter, GetPrinter, etc.) The SetupDi functions only give me manufacturer name, model, and serial #. As I tried to say above, the options as I see them are: 1 retrieve serial # from spooler functions (I can get it from the other side) 2 match virtual USB port in spooler (ie "USB0001") to actual port (maybe "hub#:port#", but any format will do) <-seems more likely option Just wanted to make sure I was being as clear as possible. Thanks!

        G Offline
        G Offline
        gbeez
        wrote on last edited by
        #3

        Well, I solved this. All necessary info is in this [](<a href=)very long thread[^]"] over at HP forum.

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • World
        • Users
        • Groups