2017-04-11 725 views
0

我跟着this Microsoft tutorial开发V4 printer driver使用INF文件安装后没有列出V4打印机驱动程序

Here是完整的工作解决方案。

而对于安装我只需右键单击INF文件并单击安装。

我得到以下确认: enter image description here

但司机并没有在打印管理列表。

可能是什么问题?我是以错误的方式进行安装还是存在代码问题?

我尝试将日志记录添加到驱动程序源代码中的所有函数。似乎没有人写。所以驱动程序没有安装它自己。

仅供参考:我已将PC用于测试签名模式,并且驱动程序签名强制也被禁用。

回答

0

经过大量的挖掘,我找到了解决方案。我分享这个,以便面对类似问题的人可以节省很多努力。

第一件事。在设备驱动程序安装中,有两件事正在发生。

  1. 驱动程序文件被上传/复制到驱动程序存储区(这是在这里:%windir%\System32\DriverStore\FileRepository\
  2. 当相应的设备插入,现在是当实际安装发生相应的设备意味着设备。 /模型,你在INF文件中指定。

这是传统的路径。

因此,当您尝试使用INF文件来安装,驱动程序文件被上传到驱动程序存储区的文件存储库。我THI如果在INF安装过程中插入了任何受支持的模型,则驱动程序将完全安装(尚未对其进行测试)。

安装。 现在我的要求要求驱动程序先安装并列出。为此,您可以使用函数InstallPrinterDriverFromPackage function明确安装它。这里是一个使用它的例子:

HRESULT Install(LPCTSTR pszInfPath) 
{ 
    HRESULT ret = InstallPrinterDriverFromPackage(
     NULL, 
     pszInfPath, //path of the INF file in the Driver Store 
     L"MyV4PrintDriver", //the name of the driver as in the INF file 
     //L"Windows NT x86", 32 bit environment 
     L"Windows x64", 
     0); 

    if (ret != S_OK) 
    { 
     _com_error err(ret); 
     LPCTSTR errMsg = err.ErrorMessage(); 
     wcout << errMsg << endl; 
    } 
    return ret; 
} 

更多。您可以使用UploadPrinterDriverPackage函数将打印机驱动程序文件上传到驱动程序存储区。