阅读:3539回复:10
请教各位高手,如何编写虚拟打印驱动的Vista版本INF文件
大家好!
小弟做驱动开发不久,我有一个虚拟打印的驱动,在XP下是可以正确运行的。 我按照微软提供的INF文件样例修改过以后,发现在VISTA下安装过程中会提示0x00000002错误,请教大家,这个问题该怎样解决呢?? 非常希望能够得到大家的解答,非常感谢! PS: 驱动代码应该是没有问题的,在XP下工作正常。DLL文件在WDK6000下重新编译过。 文件情况如下: UI.DLL UNI.DLL vprinter.gpd vprinter.ini inf文件样例: [Version] Signature="$Windows NT$" Provider=%Macrosoft% LayoutFile=ntprint.inf ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318} Class=Printer DriverVer=09/09/2005,1.0.0.2 [Manufacturer] "Microsoft"=Microsoft, NTx86 [Microsoft] "UniDrv PT/PC Plugin Provider" = PTPCPLPR [Microsoft.NTx86] "UniDrv PT/PC Plugin Provider" = PTPCPLPR [PTPCPLPR] CopyFiles=@vprinter.gpd CopyFiles=@vprinter.ini CopyFiles=@UI.dll CopyFiles=@UNI.dll DataFile=vprinter.gpd DataSection=UNIDRV_DATA Include=NTPRINT.INF Needs=UNIDRV.OEM,UNIDRV_DATA,TTFSUB.OEM [SourceDisksNames] 100 = %OEMIntentSample% [SourceDisksFiles.X86] UI.dll = 100,x86 UNI.dll = 100,x86 [SourceDisksFiles] vprinter.gpd = 100 vprinter.ini = 100 [DestinationDirs] DefaultDestDir=66000 [Strings] Macrosoft="Macrosoft<webmaster@coders.com.cn>" OEMIntentSample="UniDrv PT/PC Plugin Provider" |
|
沙发#
发布于:2008-09-22 13:05
问题出在:
[SourceDisksFiles.X86] UI.dll = 100,x86 UNI.dll = 100,x86 Vista下要设置成x386,这样是automatic |
|
板凳#
发布于:2008-09-22 17:23
非常感谢achellies 解答。
我重新修改了INF文件,好像之前的问题解决了,可是遇到了新的问题。 在安装过程最后阶段,在出现打印机图标后,突然提示0x000003eb错误,安装过程退出。 查看windows错误码表后,发现是“0x000003EB 无法完成这项功能”。 还盼achellies兄能够再给解答一下,这是哪里的问题。 非常感谢! PS:我把两个DLL文件名称修改了一下。 [Version] Signature="$Windows NT$" Provider=%AUTHOR% LayoutFile=ntprint.inf ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318} Class=Printer DriverVer=10/02/2007 [Manufacturer] "Grandstream"=Grandstream [Grandstream] "virtual printer"=VPRINTERDRV [VPRINTERDRV] CopyFiles=@vprinter.gpd CopyFiles=@vprinter.ini CopyFiles=@UNIDRV.DLL CopyFiles=@UNIRES.DLL DataFile=vprinter.gpd DataSection=UNIDRV_DATA Include=NTPRINT.INF Needs=UNIDRV.OEM,UNIDRV_DATA,TTFSUB.OEM [SourceDisksNames] 100 = %OEMIntentSample% [SourceDisksFiles] vprinter.gpd = 100 vprinter.ini = 100 UNIRES.DLL = 100 UNIDRV.DLL = 100 [DestinationDirs] DefaultDestDir=66000 [Strings] AUTHOR="grandstream<webmaster@coders.com.cn>" OEMIntentSample="UniDrv PT/PC Plugin Provider" |
|
地板#
发布于:2008-09-23 10:43
修改后的inf怎么没有copy插件部分呢?
可以做个程序执行安装过程的。。。 |
|
地下室#
发布于:2008-09-23 14:23
copy 插件部分??
请问achellies 兄是不是这部分? [Microsoft] "UniDrv PT/PC Plugin Provider" = PTPCPLPR [Microsoft.NTx86] "UniDrv PT/PC Plugin Provider" = PTPCPLPR 我已经修改为: [Manufacturer] "Grandstream"=Grandstream [Grandstream] "virtual printer"=VPRINTERDRV [VPRINTERDRV] CopyFiles=@vprinter.gpd CopyFiles=@vprinter.ini CopyFiles=@UNIDRV.DLL CopyFiles=@UNIRES.DLL DataFile=vprinter.gpd DataSection=UNIDRV_DATA Include=NTPRINT.INF Needs=UNIDRV.OEM,UNIDRV_DATA,TTFSUB.OEM 请问还有什么插件需要复制吗?我一共就4个文件啊:vprinter.gpd、vprinter.ini、UNIDRV.DLL、UNIRES.DLL 我对驱动开发了解不深,硬着头皮做的。 还盼achellies兄能给解答一下,非常感谢! |
|
5楼#
发布于:2008-09-23 16:49
之前的UI.dll和UNI.dll这两个文件删掉了?
|
|
6楼#
发布于:2008-09-24 09:12
改名字,改成UNIDRV.DLL 和UNIRES.DLL了
|
|
7楼#
发布于:2008-09-24 12:43
呵呵,难怪出问题呢,UNIDRV.DLL 和UNIRES.DLL这两个文件是系统文件,你所做的驱动是定制插件的方法开发的,必须用这两个文件的,所以才会出问题了。。。。
|
|
8楼#
发布于:2008-09-25 16:12
我把文件名称改回来,终于可以安装了,非常感谢achellies的帮助,非常感谢!
但是新的问题出现了,VISTA是不是不支持修改注册表啊,我的虚拟打印驱动是要写一些注册表信息的,可是看装上以后,发现注册表里没有我添加的注册表信息???? |
|
9楼#
发布于:2008-09-26 08:08
不可能的,你调试一下看看,可以修改注册表的呀,用GetPrinterData & SetPrinterData 这两个API
|
|
10楼#
发布于:2008-09-26 17:41
搞好了,非常感谢achellies 的关注,呵呵
不是驱动的问题,是VISTA系统使用UAC(用户帐户控制)模式,取消这个模式就可以了。 不过还是有点小问题,我的虚拟打印以3部分构成:打印驱动、打印服务、打印监控。 打印服务发送udp消息到打印监控程序,显示其打印状态 可是安装打印服务后,VISTA系统提示“vprinterSrv 服务标记为交互服务。但是系统配置成不允许交互服务。这项服务可能无法正常操作。” 现在不能健康打印状态了,不知道该在哪里设置?? |
|