我是打印机制造商的软件开发人员。最近问了一个司机。所以我开始挖掘教程、示例、文章。
首先,我下载了 Windows Driver Kit 7600.16385.1。我安装它,用一些示例驱动程序构建它(例如,仅通用/文本)。我更改了 inf 文件中的制造商部分并且工作正常。但我要求做更具体的驱动程序,从任何可以打印的应用程序中获取数据并将其发送到我们的打印机。
在这一点上,我做了一些额外的挖掘,安装了 Visual Studio 2013 和 winddk 8.1。我尝试了开箱即用的 v4 打印机驱动程序示例。我设法构建了它(Inf to cat 表现得很奇怪,所以我禁用了它的项目属性)。然后我尝试安装带有新驱动程序的打印机。根本没有安装驱动软件。我通过了 inf 语法,发现了一些错误并解决了问题。之后我不断收到 0x00000002 错误。我设法解决了问题,然后出现 0x0000003 错误。
所以,我写了一个 inf intaller c# 项目,设法安装驱动程序。驱动程序出现在打印机驱动程序部分,但我尝试安装新打印机,安装不断失败,错误 0x0000003。我做了一些关于错误的搜索,我发现它是 path_not_found 错误。我检查了我的 inf 文件,进行了一些语法检查。我在那里付出了一些努力,但我不断收到错误0x0000003。
我做什么来解决问题?
在论坛中,人们说这是导致 Windows 凭据中出现此错误的特权问题。我设置了新的管理员帐户并安装了驱动程序。但是当尝试设置时,打印机错误是相同的。
我调查 windows 文件夹下的 windows 日志:setupapi.dev.log 和 setupact.log。在本节中,我发现 0x0000002 错误,但未找到 0x000003 错误。这对我没有帮助。
论坛里有人说可能是预装的驱动程序和打印机导致了问题。我卸载了 system32 driverstore 下的驱动程序和打印机。还要卸载控制面板下的打印机服务和打印机部分。结果是一样的。
我找到了channel9,它是某种微软开发网络。我找到了一些关于开发的视频教程和幻灯片。我看了 HW-328T、HW-238T、HW-979P、HW-981P、HW-903T、HW-322T。这个视频给了我一些见解,但仅此而已。
所以我一直在挖掘问题,使用windows的eventwiever工具。发现 HRESULT 0x80070003 错误。这是一个打印机后台处理程序错误日志说。我重新启动后台处理程序,错误继续,我重新启动服务并重新启动计算机,错误继续。
我尝试了我的驱动程序注册表编辑器的旧条目。结果是一样的。我设法获得了 windows 文件夹的管理员权限,但这并没有什么不同。
我尝试使用带有管理员权限的命令行安装新打印机,结果是一样的。
在 64 位和 32 位 Windows 上安装的许多尝试。
我也尝试使用 GPD、PPD 类型。
我的代码示例。
信息文件
[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 文件的 C# 函数代码
if (SetupCopyOEMInf(inf_path, "", 2, 0x0000400, null, 0, 0, null))
提前致谢。
注意:如果需要,我也可以发布 gpd 文件。