使用INF文件安装后未列出V4打印机驱动程序

时间:2017-04-11 13:45:59

标签: c++ visual-studio printing driver wdk

我关注了this Microsoft tutorial,用于开发V4 printer driver

Here是完整的解决方案。

为了安装,我只需右键单击INF文件并单击安装。

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

但驱动程序未在“打印管理”下列出。

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

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

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

1 个答案:

答案 0 :(得分:0)

经过大量挖掘后,我找到了解决方案。我正在分享这一点,以便面临类似问题的人可以节省很多精力。

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

  1. 将驱动程序文件上传/复制到驱动程序存储区(位于此处:%windir%\System32\DriverStore\FileRepository\
  2. 当插入相应的设备时,现在是实际安装的时间。相应的设备表示您在INF文件中指定的设备/型号。
  3. 这是传统的道路。

    因此,当您尝试使用INF文件进行安装时,驱动程序文件将上载到驱动程序存储区的文件存储库中。我想如果在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函数将打印机驱动程序文件上传到驱动程序存储区。