【问题标题】:Error in installing windows printer driver安装windows打印机驱动出错
【发布时间】:2012-07-12 19:38:14
【问题描述】:

我正在尝试安装作为 WDK(Windows 驱动程序工具包)中的示例提供的 Windows 打印机驱动程序(OEMUNI)。但我不断从添加打印机向导中收到以下错误:“未安装打印机驱动程序。操作无法完成(错误 0x00000002)”。我尝试使用管理员权限运行添加打印机向导,但仍然遇到同样的问题。

我使用的是 Windows 7,64 位版本。有人可以在这里帮助我吗?另外,错误代码:0x00000002 表示什么?

以下是我的 INF 文件:-

; OEMDLL.INF
;
; INF file for OEM DLL Customization samples
;
; Copyright 1999-2003 Microsoft Corporation


[Version]
Signature="$Windows NT$"
Provider=%MS%
LayoutFile=ntprint.inf
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}
Class=Printer
DriverVer=6/07/2001,1.0.0.1

;
; Manufacturer section.
;
; This section lists all of the manufacturers 
; that we will display in the Dialog box
;
[Manufacturer]
"Microsoft"=Microsoft, NTamd64, NTia64

;
; Model sections. 
; 
; Each section here corresponds with an entry listed in the
; [Manufacturer] section, above. The models will be displayed in the order
; that they appear in the INF file.
;

[Microsoft]
"PostScript WaterMark Sample"          = INSTALL_WATERMARK.PS
"Unidrv WaterMark Sample"              = INSTALL_WATERMARK.UNI
"OEM PostScript Customization Sample"  = INSTALL_OEMPS
"OEM Unidrv Customization Sample"      = INSTALL_OEMUNI
"OEM UI Customization Sample (PS)"     = INSTALL_OEMUI.PS
"OEM UI Customization Sample (Unidrv)" = INSTALL_OEMUI.UNI

[Microsoft.NTamd64]
"PostScript WaterMark Sample"          = INSTALL_WATERMARK.PS
"Unidrv WaterMark Sample"              = INSTALL_WATERMARK.UNI
"OEM PostScript Customization Sample"  = INSTALL_OEMPS
"OEM Unidrv Customization Sample"      = INSTALL_OEMUNI
"OEM UI Customization Sample (PS)"     = INSTALL_OEMUI.PS
"OEM UI Customization Sample (Unidrv)" = INSTALL_OEMUI.UNI

[Microsoft.NTia64]
"PostScript WaterMark Sample"          = INSTALL_WATERMARK.PS
"Unidrv WaterMark Sample"              = INSTALL_WATERMARK.UNI
"OEM PostScript Customization Sample"  = INSTALL_OEMPS
"OEM Unidrv Customization Sample"      = INSTALL_OEMUNI
"OEM UI Customization Sample (PS)"     = INSTALL_OEMUI.PS
"OEM UI Customization Sample (Unidrv)" = INSTALL_OEMUI.UNI

;
; Installer Sections
;
; These sections control file installation, and reference all files that
; need to be copied. The section name will be assumed to be the driver
; file, unless there is an explicit DriverFile section listed.
;

[INSTALL_WATERMARK.PS]
CopyFiles=@OEM.PPD
CopyFiles=@WMARKPS.INI
CopyFiles=WMARKPS
DataFile=OEM.PPD
DataSection=PSCRIPT_DATA
Include=NTPRINT.INF
Needs=PSCRIPT.OEM,PSCRIPT_DATA


[INSTALL_WATERMARK.UNI]
CopyFiles=@OEM.GPD
CopyFiles=@WMARKUNI.INI
CopyFiles=WMARKUNI
DataFile=OEM.GPD
DataSection=UNIDRV_DATA
Include=NTPRINT.INF
Needs=UNIDRV.OEM,TTFSUB.OEM,UNIDRV_DATA

[INSTALL_OEMPS]
CopyFiles=@OEM.PPD
CopyFiles=@OEMPS.INI
CopyFiles=OEMPS
DataFile=OEM.PPD
DataSection=PSCRIPT_DATA
Include=NTPRINT.INF
Needs=PSCRIPT.OEM,PSCRIPT_DATA

[INSTALL_OEMUNI]
CopyFiles=@OEM.GPD
CopyFiles=@OEMUNI.INI
CopyFiles=OEMUNI
DataFile=OEM.GPD
DataSection=UNIDRV_DATA
Include=NTPRINT.INF
Needs=UNIDRV.OEM,TTFSUB.OEM,UNIDRV_DATA

[INSTALL_OEMUI.PS]
CopyFiles=@OEM.PPD
CopyFiles=@OEMUI.INI
CopyFiles=OEMUI
DataFile=OEM.PPD
DataSection=PSCRIPT_DATA
Include=NTPRINT.INF
Needs=PSCRIPT.OEM,PSCRIPT_DATA

[INSTALL_OEMUI.UNI]
CopyFiles=@OEM.GPD
CopyFiles=@OEMUI.INI
CopyFiles=OEMUI
DataFile=OEM.GPD
DataSection=UNIDRV_DATA
Include=NTPRINT.INF
Needs=UNIDRV.OEM,TTFSUB.OEM,UNIDRV_DATA



; Copy Sections
;
; Lists of files that are actually copied. These sections are referenced
; from the installer sections, above. Only create a section if it contains
; two or more files (if we only copy a single file, identify it in the
; installer section, using the @filename notation) or if it's a color
; profile (since the DestinationDirs can only handle sections, and not
; individual files).
;

[WMARKPS]
WMARKPS.DLL
WMARKUI.DLL

[WMARKUNI]
WMARKUNI.DLL
WMARKUNIUI.DLL

[OEMPS]
OEMPS.DLL

[OEMUI]
OEMUI.DLL

[OEMUNI]
OEMUNI.DLL


;
; Data Sections
;

; These sections contain data that is shared between devices.
;



;
;  Location of source files not in Layout.inf.
;

[SourceDisksNames]
100 = %OEMSample%

[SourceDisksFiles.x86]
oemps.dll      = 100,OEMPS\x86
oemui.dll      = 100,OEMUI\x86
oemuni.dll     = 100,OEMUNI\x86
wmarkps.dll    = 100,WaterMark\x86
wmarkuni.dll   = 100,WaterMarkUni\x86
wmarkuniui.dll = 100,WaterMarkUni\x86
wmarkui.dll    = 100,WaterMark\x86

[SourceDisksFiles.amd64]
oemps.dll      = 100,OEMPS\amd64
oemui.dll      = 100,OEMUI\amd64
oemuni.dll     = 100,OEMUNI\amd64
wmarkps.dll    = 100,WaterMark\amd64
wmarkuni.dll   = 100,WaterMarkUni\amd64
wmarkuniui.dll = 100,WaterMarkUni\amd64
wmarkui.dll    = 100,WaterMark\amd64

[SourceDisksFiles.ia64]
oemps.dll      = 100,OEMPS\ia64
oemui.dll      = 100,OEMUI\ia64
oemuni.dll     = 100,OEMUNI\ia64
wmarkps.dll    = 100,WaterMark\ia64
wmarkuni.dll   = 100,WaterMarkUni\ia64
wmarkuniui.dll = 100,WaterMarkUni\ia64
wmarkui.dll    = 100,WaterMark\ia64

[SourceDisksFiles]
OEM.PPD       = 100
OEM.GPD       = 100
WMARKPS.INI   = 100
WMARKUNI.INI  = 100
OEMPS.INI     = 100
OEMUNI.INI    = 100
OEMUI.INI     = 100

;
; Call SetupSetDirectoryId with 66000 to set the target directory at runtime
; (depending on which environment drivers are getting installed)
;

[DestinationDirs]
DefaultDestDir=66000

;
; Localizable Strings
;
[Strings]
MS="Microsoft DDK Sample"
OEMSample="OEM DLL Print samples"

【问题讨论】:

  • 好吧,参考MSDN上的错误代码,你会发现ERROR_FILE_NOT_FOUND(2)。
  • 我很好奇:您是否设法在不将其安装为打印机的情况下使用该驱动程序?

标签: windows printing driver device-driver


【解决方案1】:

错误是ERROR_FILE_NOT_FOUND

  1. 您是否先构建了示例?
  2. 构建后,是否将其放入相对于.inf 文件的正确文件夹中?

【讨论】:

  • 感谢您的快速回复!是的,我确实使用相应的构建环境构建了示例。我不确定如何放入相对于 .INF 文件的正确文件夹。但我确实尝试将以下文件放在同一个文件夹中:OEMDLL.INF、OEMUNI.DLL、OEM.GPD、OEMUNI.INI。我已经在上面发布了 INF。你觉得这合适吗?还是我在这里遗漏了什么?
  • @Manas:[SourceDisksFiles.*] 部分中命名的所有文件都存在吗?
  • @0xC0000022L 可能是对的。您要么缺少 [SourceDisksFiles] 部分中列出的文件之一,要么缺少它们所依赖的文件之一。假设您没有我们不知道的依赖项,那么很可能您的安装目录布局不正确。如果您要在 x86 上进行安装,那么您需要将所有文件放在 .\OEMPS\x86、.\OEMUI\x86 等中。
  • 谢谢大家!!是的,我丢失了几个文件,这些文件在 [SourceDisksFiles.*] 部分中提到。我添加了它们,所以终于可以安装驱动了:)。
  • @CareyGregory:嗨,Carey,我可以再次为this question 寻求您的帮助吗:)
【解决方案2】:

我也遇到过这个问题。原因是:文件oem.gpd包含ttfsub.gpd,在oemdll目录下找不到。但是即使我们将 ttfsub.gpd 从 FileRepsoitory 复制到 oemdll 目录下,安装也会失败。 但是,如果您安装位图示例,您将成功。所以正确的做法是做like bitmap driver...

【讨论】:

    【解决方案3】:

    0x000002 引用了一些丢失的文件,这意味着在 inf 文件中有对该文件的引用,但它实际上并不存在于驱动程序包中。如果inf文件中提到的所有文件都存在于驱动包中,请检查驱动包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2016-10-07
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2017-09-06
      相关资源
      最近更新 更多