Printing 使用Windows DDK开发打印机驱动程序错误

Printing 使用Windows DDK开发打印机驱动程序错误,printing,windows-7,driver,wdk,inf,Printing,Windows 7,Driver,Wdk,Inf,我是一名软件开发人员,一名打印机制造商。最近一位司机问。所以我开始挖掘教程、样本和文章 首先,我下载了Windows驱动程序工具包7600.16385.1。我安装它,用一些示例驱动程序(例如,generic/text-only)构建它。我更改了inf文件中的manufacturer部分,工作正常。但我要求做更具体的驱动程序,从任何可以打印的应用程序中获取数据并将其发送到我们的打印机 在这一点上,我做了一些额外的挖掘,安装了VisualStudio2013和Windk8.1。我尝试了v4打印机驱动

我是一名软件开发人员,一名打印机制造商。最近一位司机问。所以我开始挖掘教程、样本和文章

首先,我下载了Windows驱动程序工具包7600.16385.1。我安装它,用一些示例驱动程序(例如,generic/text-only)构建它。我更改了inf文件中的manufacturer部分,工作正常。但我要求做更具体的驱动程序,从任何可以打印的应用程序中获取数据并将其发送到我们的打印机

在这一点上,我做了一些额外的挖掘,安装了VisualStudio2013和Windk8.1。我尝试了v4打印机驱动程序示例。我设法构建了它(Inf到cat的行为很奇怪,所以我禁用了它的项目属性)。然后我尝试用新的驱动程序安装打印机。根本没有安装驱动程序软件。我通过了inf语法,发现了一些错误并解决了问题。之后,我一直得到0x00000002错误。我设法解决了这个问题,然后我得到了0x0000003错误

所以,我写了一个inf intaller c#项目,设法安装了驱动程序。驱动程序显示在打印机驱动程序部分,但我尝试安装新打印机,安装不断失败,错误为0x0000003。我做了一些关于错误的搜索,我发现它的路径没有找到错误。我检查我的inf文件,做一些语法检查。我在这方面做了一些努力,但不断得到错误0x0000003

我如何解决问题?

  • 在论坛中,人们说这是一个特权问题导致了windows凭据中的此错误。我设置了新的管理员帐户并安装了驱动程序。但当尝试设置时,打印机错误是相同的

  • 我调查windows文件夹下的windows日志:setupapi.dev.log和setupact.log。在本节中,我找到了0x0000002错误,但没有找到0x000003错误。这对我没有帮助

  • 论坛中的一些人说,可能是预装的驱动程序和打印机导致了问题。我卸载system32 DriversStore下的驱动程序和打印机。同时卸载“控制面板”下的“打印机服务和打印机”部分。结果是一样的

  • 我找到了channel9,它是微软的开发网络。我找到了一些关于开发的视频教程和幻灯片。我观看了HW-328T、HW-238T、HW-979P、HW-981P、HW-903T、HW-322T。这段视频给了我一些见解,但仅此而已

  • 所以我一直在挖掘问题,在windows下使用eventwiever工具。发现HRESULT 0x80070003错误。这是一个打印机后台打印错误日志。我重新启动后台处理程序,错误继续,我重新启动服务并重新启动计算机,错误继续

  • 我尝试我的驱动程序注册表编辑器的旧条目。结果是一样的。我设法获得了windows文件夹的管理员权限,这并没有什么区别

  • 我尝试使用带有管理员权限的命令行安装新打印机,结果是一样的

  • 在64位和32位windows上安装的大量尝试

  • 我还尝试使用GPD、PPD类型

  • 我的代码示例

  • INF文件

    [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"
    
  • 安装inf文件的My C#函数代码

    if (SetupCopyOEMInf(inf_path, "", 2, 0x0000400, null, 0, 0, null))
    
  • 提前谢谢


    注意:如果需要,我也可以发布gpd文件。

    在INF文件中似乎没有类似以下内容的复制部分:

    [Ali.GPD]
    CopyFiles=@Ali.gpd
    
    Inf文件要求知道要复制哪些文件。 这里是相关的


    希望这有帮助。

    首先,你必须考虑你的处理器架构。您的驱动程序绝对无法在x86或基于ARM的体系结构上运行,因为相关部分未包含在示例.inf文件中

    此外,您的.inf文件中没有安装节(复制文件指令),因为必须包含安装节(特别是在您打算使用基于inf的安装API时)。有关创建最小工作.inf文件的信息,请参阅

    最后,如何安装打印机驱动程序?您是否使用驱动程序包?如果是,当您提到在您的工作中绕过inf2cat过程时,您是如何签署的?(可能是因为您正在“禁用驾驶员签名强制”模式下开发!)。否则,如果没有任何.gpd或.ppt文件,您将如何安装打印机?你对你的打印机有什么期望


    通过添加一些代码片段,可能人们可以提供更多帮助。

    如果没有看到您的C代码的其余部分,我们无法提供太多帮助。例如,
    inf\u路径包含什么?考虑到您遇到的错误,该变量可能是可疑的。