yjjie
驱动牛犊
驱动牛犊
  • 注册日期2008-06-12
  • 最后登录2008-11-08
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4534回复:2

XP下关于打印驱动安装(虚拟打印机)

楼主#
更多 发布于:2008-10-24 09:15
看了前面有个关于打印驱动程序安装的例子,收益非浅。

但是碰到一个新问题:
我的驱动是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;

附件名称/大小 下载次数 最后更新
Driver.rar (35KB)  123 2008-10-24 09:15
人生程序
yjjie
驱动牛犊
驱动牛犊
  • 注册日期2008-06-12
  • 最后登录2008-11-08
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-10-24 09:51
恩,弄错了!
现在安装成功了
驱动文件应该是UNIDRV.DLL
我的程序好像只是一个驱动中的插件...怎么没想到!

新问题:
删除驱动的时候提示3001错误,意思是正在使用的意思,问题是我还没用啊 !
人生程序
icboy591
驱动牛犊
驱动牛犊
  • 注册日期2009-05-26
  • 最后登录2010-04-13
  • 粉丝16
  • 关注1
  • 积分64分
  • 威望611点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-11-04 16:40
我用函数(AddPrinterDriverEx,AddPrinter)安装也碰到提示未知打印驱动程序的错误
请问有没有解决办法
还有你说的drivers\w32x86目录下有 0,1,2,3目录
这个是怎么回事
数字0,1,2,3是什么?
游客

返回顶部