Printer Driver Development Using Windows DDK error

1

I'm a software developer a printer manufacturer. Recently asked a driver. So i start digging for tutorials, samples, articles.

First thing i do, i downloaded the Windows Driver Kit 7600.16385.1. I install it, build it with some sample drivers (For example, generic/text only). I changed the manufacturer section in the inf file and worked fine. But i asked to do more specific driver, getting data from any application that can print and send it to our printer.

At this point i do some extra digging, installing Visual Studio 2013 and winddk 8.1. I try the v4 printer driver sample out of the box. I managed to build it (Inf to cat acting strange, so i disabled it project properities). Then i try the installing a printer with new driver. Driver software wasn't installed at all. I get through inf syntax, found some erros and fix it the problem. After then I keep getting 0x00000002 error. I managed to solve problem, then i getting 0x0000003 error.

So, i write down a inf intaller c# project, managed to install driver. Driver was showing up in printer drivers section, but i try the install a new printer, installation keep getting failed with error 0x0000003. I do some search about error, i found it's path_not_found error. I check my inf file, doing some syntax checking. I put some effort there, but i keep getting error 0x0000003.

What i do for solving the problem?

  1. In forums, people say it's a priviledge problem causing this error in windows credentials. I setup new admin account and install the driver. But when try the setup a printer error is same.

  2. I investigate windows logs under windows folder: setupapi.dev.log and setupact.log. In this section i find 0x0000002 errors, but not found 0x000003 errors. This is not helpful for me.

  3. Some people in the forums says may be pre installed drivers and printer causing problems. I uninstall the drivers and printers under system32 driverstore. Also uninstall the printer sevices and printers section under control panel. Result is same.

  4. I found channel9, it's microsoft development network some sort of. I found some video tutorials and slides about development. I watched HW-328T, HW-238T, HW-979P, HW-981P, HW-903T, HW-322T. This videos gave me some insight, but nothing more.

  5. So i keep digging problem, using eventwiever tool by windows. Found HRESULT 0x80070003 error. It's a printer spooler error log says. I restart the spooler, error continued, i restart service and restart the computer, error continues.

  6. I try the old entries of my driver Registry Editor. Result is same. I managed to get admin privilidges of windows folder, it didn't make difference.

  7. I try the install new printer using command line with admin privlidges, result is same.

  8. Numerous attemps for installing on 64 bit and 32 bit windows.

  9. Also i try using GPD, PPD types.

My Code Samples.

  1. INF File

    [Version]
    Signature="$Windows NT$"
    Class=Printer
    ClassGuid={4D36E979-E325-11CE-BFC1-08002BE10318}
    Provider=%ManufacturerName%
    CatalogFile=Ali.cat
    ClassVer=4.0
    DriverVer=08/01/2012,1.0.0.0
    
    [DestinationDirs]
    DefaultDestDir = 66000
    
    
    
    [Manufacturer]
    %ManufacturerName%=Ali,NTia64,NTamd64
    
    [Ali]
    "Ali V1" = Ali.GPD
    
    [Ali.NTia64]
    "Ali V1" = Ali.GPD
    
    [Ali.NTamd64]
    "Ali V1" = Ali.GPD
    
    [SourceDisksNames.amd64]
    1= %DiskName%,,,
    
    [SourceDisksFiles.amd64]
    Ali.gpd = 1
    
    [SourceDisksNames.ia64]
    1= %DiskName%,,,
    
    [SourceDisksFiles.ia64]
    Ali.gpd = 1
    
    [Strings]
    ManufacturerName="Ali"
    DiskName="Ali Installation Disk"
    
  2. My C# Function Code for installing inf files

    if (SetupCopyOEMInf(inf_path, "", 2, 0x0000400, null, 0, 0, null))
    

Thanks in advance.

Note: if needed, i can post gpd file also.

printing
windows-7
driver
wdk
inf
asked on Stack Overflow Mar 13, 2015 by Mistrafantastic • edited Mar 13, 2015 by Mistrafantastic

2 Answers

1

It would appear that you do not have a copy section in the INF file that should look something like:

[Ali.GPD]
CopyFiles=@Ali.gpd

The Inf file requires this to know what files to copy. Here is the relevant MSDN doc on this topic.

Hope this helps.

answered on Stack Overflow May 8, 2015 by peter01242 • edited Aug 7, 2018 by Nick Westgate
0

First of all, you have to consider your processor architecture. Absolutely your driver will not work on on x86 or ARM based architecture since related sections did not included in your sample .inf file.

Additionally there is no Install section (Copy File directive) in your .inf file while as it is mandatory to include (specially if you intended to use INF based setup APIs). For creating a minimum working .inf file see here.

Finally, how do you install the printer driver? Do you using a Driver Package? if yes, how you sign it while you mentioned that the inf2cat process bypassed in your work? (may by you are developing in "Disabled Driver Signature Enforcement" mode!). otherwise, without any .gpd or .ppt file how you are going to install a printer? What do you expect from your printer?

By adding some code snippet, may be people could help more.

answered on Stack Overflow Dec 11, 2018 by amirfg

User contributions licensed under CC BY-SA 3.0