|
阅读:4688回复: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是什么? |
|