Skip to main content
Post Made Community Wiki by 0xC0000022L
Source Link
0xC0000022L
  • 10.9k
  • 9
  • 41
  • 79

Well, your question is a bit broad as it stands, but let's take it one by one. Typically (but not always) drivers for printers these days are user mode drivers (UMDF), which means you're looking for a DLL. If that were not the case you'd be looking for a .sys file of some kind.

Microsoft has come up with a number of "simplified" driver models over the years. Some of those run in user mode, some in kernel mode. Provided this is a modern device and the vendor has updated everything, they'll be using the user mode driver.

In order to get you started you need to first figure out the driver responsible for your printer. Assuming you are indeed dealing with a USB printer, you should see it with USBDeView which also helps you identify the driver name. Alternatively try the more generic DevManView.

Failing all that you can look at the printer properties and use the Sharing tab, provided you're on a recent version of Windows. There you can see the type of your installed driver, at least. Example for one of my printers:

Additional Drivers dialog

Equipped with that information we can then look into the folder C:\Windows\System32\spool\drivers (%SystemRoot%\System32\spool\drivers) and find the actual driver (also check the prtprocs subfolder instead of drivers).

Furthermore you could peek into HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers using the Registry Editor built into Windows in order to find details about your driver. Specifically within the subkey corresponding to the printer in question you should find a value named Print Processor (type string) which contains the name of the print processor. In my case that's ssa7mPC and this in turn can be tracked down to the DLL C:\Windows\System32\spool\prtprocs\x64\ssa7mpc.dll.

From that point on it's not at all clear from your question what you want to achieve. I.e. do you want to intercept something or do you want to reverse engineer the wire protocol or do you only care about being able to talk to the printer and so on ... (so until you clarify, I cannot provide more details either).

Since you also give no information about the printer model, it's hard to provide any meaningful detail beyond what I just gave.