gpt4 book ai didi

printing - 如何安装 pscript/unidrv 渲染插件? DDK/WDK 打印/oemdll 样本表现奇怪

转载 作者:行者123 更新时间:2023-12-04 05:08:58 27 4
gpt4 key购买 nike

我想得到 pscript/unidrv rendering plugins 的东西,但是提供的 DDK 示例无法安装在我曾经拥有的 DDK/构建/目标系统的任何可能组合上。

报告的消息是 WinXP x64 的“指定的端口未知”和 Win7、Win8 的“未找到元素”(Win7 setupapi 日志的一部分,具有显着的 “dvi:此类设备不允许安装 NULL 驱动程序” ! "可以找到错误 here )。

到目前为止,我已经尝试:

  • 更改 .rc 文件以匹配 FILESUBTYPE ( VFT2_DRV_VERSIONED_PRINTER ) 和 FILETYPE ( VFT_DRV )
  • 使用测试证书签名,开启 Debug模式
  • 在 .inf ( "product 1" = product_target,,product_1 )
  • 中的产品名称中添加空 hw-id 后跟正常的兼容 id
  • 检查 .inf(.ini、.gpd、.dll)中引用的所有文件是否都已到位
  • 删除对任何文件的所有附加引用,不包括我想要的 oemps 目标
  • 运行 chkinf 测试并修复所有警告
  • 弄乱 UAC,文件位置,做其他印加舞蹈。


  • 还应该做什么才能将 pscript 渲染插件安装到系统中?

    它们是否打算作为普通设备安装在打印机驱动程序之外? MSDN 对此确实不清楚,但是,从 DDK 源代码中 .inf 的存在猜测,我想有一种方法可以“按原样”安装它们,但我还没有找到。

    UPD:在 WDK8 中找到这些示例的描述(“ http://code.msdn.microsoft.com/windowshardware/OEMDLL-Samples-71364d95”),其中提到了在主要文章(“自定义 Microsoft 的打印机驱动程序”)中未找到的内容 - “BITMAP、OEMPS、OEMUI、OEMUNI、OEMPREAN、CUSTHLP、SyncSet、ThemeUI、PSUIRep 和 Watermark 示例不影响打印机输出” .

    最佳答案

    您引用的有关 BITMAP、OEMPS 等的引用仅表示这些示例仅显示驱动程序插件的结构,不产生任何输出。但这并不意味着他们不能。如果您想构建驱动程序插件,我建议您从其中一个示例开始,并向其中添加代码以执行您想要的操作。

    安装打印驱动程序可能很棘手,因为添加打印机向导提供了 很差错误报告。它给你的只是一个 Win32 错误代码。例如,如果缺少任何必需的文件,它只会显示错误代码 0x2,这意味着缺少文件。但是,它不会告诉您其中文件丢失,这可能非常令人沮丧。但是请放心,可以安装这些示例。通常,您需要将 .inf 文件中列出的所有文件与 .inf 文件位于同一目录中。在大多数情况下,这将是一两个 DLL,加上一个 .ini 和一个 .gpd 或 .ppd 文件。例如,我刚刚构建并安装了通用文本驱动程序。我还找到了关于安装该驱动程序的好教程 here .

    因此,我建议您从通用文本示例开始。构建和安装它后,处理 pscript 驱动程序。不要更改他们提供的 .inf 文件,也不要摆弄 .rc 文件或证书;你不需要证书。

    使用添加打印机向导的替代方法是使用 AddPrinterDriver 直接安装驱动程序。和 AddPrinter功能。这更复杂,但我更喜欢它,因为它给了你更多的控制,你可以准确地看到发生了什么错误以及为什么。不需要 .inf 文件。以下是安装驱动程序并使用该驱动程序创建打印机的工作代码片段。为清楚起见,错误检查和文件复制已被删除....

    char driverPath[MAX_PATH];
    DWORD needed;
    GetPrinterDriverDirectory(0, 0, 1, (UCHAR *)driverPath, sizeof(driverPath), &needed);

    // **copy all necessary files to driverPath here**

    // format all file names with full paths
    char driverSrc[MAX_PATH];
    sprintf_s(driverSrc, "%s\\%s", driverPath, psDriverFile);
    char driverUISrc[MAX_PATH];
    sprintf_s(driverUISrc, "%s\\%s", driverPath, psUIFile);
    char driverPPDSrc[MAX_PATH];
    sprintf_s(driverPPDSrc, "%s\\%s", driverPath, psPPDFile);
    char helpFileSrc[MAX_PATH];
    sprintf_s(helpFileSrc, "%s\\%s", driverPath, psHelpFile);

    // initialize the DRIVER_INFO struct
    DRIVER_INFO_3 di;
    memset(&di, 0, sizeof(di));
    di.cVersion = 3;
    di.pEnvironment = "Windows x64";
    di.pDriverPath = driverPath;
    di.pName = "MyDriver";
    di.pDefaultDataType = "RAW";
    di.pDataFile = driverPPDSrc;
    di.pConfigFile = driverUISrc;
    di.pHelpFile = helpFileSrc;
    di.pDependentFiles = pszDependentFiles;

    // add the driver
    AddPrinterDriver(0, 3, (LPBYTE)&di);

    // create the printer
    PRINTER_INFO_2 pi;
    memset(&pi, 0, sizeof(pi));
    pi.pPrinterName = (LPSTR)pPrinterNames->at(i);
    pi.pDriverName = "MyDriver";
    pi.pPrintProcessor = "winprint";
    pi.Attributes = PRINTER_ATTRIBUTE_LOCAL;
    pi.pDatatype = "RAW";
    pi.pPortName = "LPT1:";
    HANDLE hPrinter = AddPrinter(0, 2, (LPBYTE)&pi);

    关于printing - 如何安装 pscript/unidrv 渲染插件? DDK/WDK 打印/oemdll 样本表现奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130332/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com