阅读:4534回复:2
XP下关于打印驱动安装(虚拟打印机)
看了前面有个关于打印驱动程序安装的例子,收益非浅。
但是碰到一个新问题: 我的驱动是DDK中的Bitmap 这个sample修改而来。(我的驱动是虚拟打印驱动) 我用WINDOWS的添加打印机向导安装,没问题,完全可以使用。 然而我用函数(AddPrinterDriverEx,AddPrinter)安装的时候其中AddPrinterDriverEx 安装碰到一个很纳闷的问题! drivers\w32x86目录下有 0,1,2,3目录 3是2000,XP下的驱动程序,但是我用AddPrinterDriverEx 安装的时候竟然安装到了0目录,函数也没提示错误! 结果就是驱动程序无法被系统认识。 而后我尝试安装Bitmap 的驱动,结果还是一样. 所以我尝试用rundll32.exe printui.dll,PrintUIEntry 和inf文件来安装。结果提示我的驱动和操作系统不兼容。bitmap也同样提示! 下面我给出我的代码和我的驱动,系统各位帮忙。 char lpBuffer[MAX_PATH]; DWORD uSize=0; DWORD lvl = 0x03; GetPrinterDriverDirectory(NULL,"Windows NT x86",1,(LPBYTE)lpBuffer,MAX_PATH,&uSize); printf("%s\n",lpBuffer); //GetCurrentDirectory((DWORD)MAX_PATH,lpBuffer); //配置文件 char lpConfigFilePath[MAX_PATH]; lstrcpy(TEXT(lpConfigFilePath),TEXT(lpBuffer)); lstrcat(TEXT(lpConfigFilePath),TEXT("\\driver\\UNIDRVUI.DLL")); printf("%s\n",lpConfigFilePath); //数据文件 char lpDataFilePath[MAX_PATH]; lstrcpy(TEXT(lpDataFilePath),TEXT(lpBuffer)); lstrcat(TEXT(lpDataFilePath),TEXT("\\driver\\WZP.GPD")); printf("%s\n",lpDataFilePath); //驱动文件 char lpDriverPath[MAX_PATH]; lstrcpy(TEXT(lpDriverPath),TEXT(lpBuffer)); lstrcat(TEXT(lpDriverPath),TEXT("\\driver\\WZP.DLL")); printf("%s\n",lpDriverPath); ZeroMemory(&di3, sizeof(DRIVER_INFO_3)); di3.cVersion = lvl; di3.pConfigFile =lpConfigFilePath; di3.pDataFile =lpDataFilePath; di3.pDependentFiles = TEXT("UNIDRVUI.DLL\0WZP.DLL\0WZP.INI\0WZP.GPD\0\0"); di3.pDriverPath = lpDriverPath; di3.pEnvironment = TEXT("Windows NT x86"); di3.pHelpFile = NULL; di3.pMonitorName = NULL; di3.pName = TEXT("WZP"); di3.pDefaultDataType = TEXT("RAW"); if(!AddPrinterDriverEx(NULL, 3, (LPBYTE)&di3,APD_COPY_ALL_FILES)) { printf("error:%d\n",GetLastError()); } else printf("add driver succeed\n"); return 0; |
|
|
沙发#
发布于:2008-10-24 09:51
恩,弄错了!
现在安装成功了 驱动文件应该是UNIDRV.DLL 我的程序好像只是一个驱动中的插件...怎么没想到! 新问题: 删除驱动的时候提示3001错误,意思是正在使用的意思,问题是我还没用啊 ! |
|
|
板凳#
发布于:2009-11-04 16:40
我用函数(AddPrinterDriverEx,AddPrinter)安装也碰到提示未知打印驱动程序的错误
请问有没有解决办法 还有你说的drivers\w32x86目录下有 0,1,2,3目录 这个是怎么回事 数字0,1,2,3是什么? |
|