找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4426|回复: 2

求助,关于"地下加载驱动"中使用AddPrintfDriver加载驱动

[复制链接]

4

主题

145

回帖

0

精华

金牌会员

积分
1189
发表于 2016-5-2 21:34:07 | 显示全部楼层 |阅读模式
我自己实现了下
函数返回成功了,但驱动没有加载起来,还需要干什么吗?
我下了一个HP的驱动
  1. //#define DRIVERPATH "C:\\Windows\\System32\\spool\\drivers\\W32X86\\NullFilter.sys"
  2. //#define DATAFILEPATH "C:\\Windows\\System32\\spool\\drivers\\W32X86\\hpi01111.gpd"
  3. //#define CONFIGFILEPATH "C:\\Windows\\System32\\spool\\drivers\\W32X86\\hpiPIboe.dll"
  4. //#define HELPPATH "C:\\Windows\\System32\\spool\\drivers\\W32X86\\UNIDRV.DLL"
  5. //#define INFPATH "C:\\Windows\\System32\\spool\\drivers\\W32X86\\hpi1boeh.inf"
复制代码

  1. void LoadTest()
  2. {
  3.         DRIVER_INFO_3A DInfo;

  4.         char lpDriverPath[MAX_PATH];
  5.         char lpBuffer[MAX_PATH];
  6.         DWORD uSize=0;


  7.         int returnval = GetPrinterDriverDirectory(NULL,NULL,1,(LPBYTE)lpBuffer,MAX_PATH,&uSize);
  8.         printf("%S\n",lpBuffer);

  9.         /*strcpy_s(lpDriverPath,lpBuffer);
  10.         strcat_s(lpDriverPath,"\\NullFilter.sys");
  11.         printf("%s\n",lpDriverPath);

  12.         char lpDataFilePath[MAX_PATH];
  13.         strcpy_s(lpDataFilePath,lpBuffer);
  14.         strcat_s(lpDataFilePath,"\\hpi01111.gpd");
  15.         printf("%s\n",lpDataFilePath);

  16.         char lpConfigFilePath[MAX_PATH];
  17.         strcpy_s(lpConfigFilePath,lpBuffer);
  18.         strcat_s(lpConfigFilePath,"\\hpiPIboe.dll");
  19.         printf("%s\n",lpConfigFilePath);

  20.         char lpHelpFilePath[MAX_PATH];
  21.         strcpy_s(lpHelpFilePath,lpBuffer);
  22.         strcat_s(lpHelpFilePath,"\\UNIDRV.DLL");
  23.         printf("%s\n",lpHelpFilePath);*/

  24.         ZeroMemory(&DInfo, sizeof(DRIVER_INFO_3A));

  25.         DInfo.cVersion=0x03;
  26.         DInfo.pName = "HP Designjet T7100 Mono HPGL2";
  27.         DInfo.pEnvironment = NULL;
  28.         DInfo.pDriverPath = DRIVERPATH;
  29.         DInfo.pDataFile = DATAFILEPATH;
  30.         DInfo.pConfigFile = CONFIGFILEPATH;
  31.         DInfo.pHelpFile = HELPPATH;
  32.         DInfo.pMonitorName = NULL;
  33.         DInfo.pDependentFiles = NULL;
  34.         DInfo.pDefaultDataType = "RAW";


  35.         int returnvalue = AddPrinterDriver(NULL,3,(LPBYTE)&DInfo);
  36.         if(InstallPrinterDriverFromPackageA(NULL,INFPATH,"NullFilter.sys",NULL,IPDFP_COPY_ALL_FILES) == S_OK)
  37.         {
  38.                 printf("ok!\n");
  39.         }
  40.         //printf("error code : 0x%x\n",GetLastError());
  41.         if(returnval == 0)
  42.         {
  43.                 printf("faild!----code:0x%x\n",GetLastError());
  44.         }else
  45.         {
  46.                 printf("success!\n");
  47.         }

  48. }
复制代码

4

主题

145

回帖

0

精华

金牌会员

积分
1189
 楼主| 发表于 2016-5-2 21:36:12 | 显示全部楼层
忽略
  1. InstallPrinterDriverFromPackageA
复制代码

后面写上去的

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2016-5-4 17:57:08 | 显示全部楼层
哈哈,这个我也只是看到过思路,自己没实践过。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表