如何在Windows中创建虚拟打印机?

20

我想为Windows创建一个虚拟打印机驱动程序。应该从哪里开始? WDK中有一些打印驱动程序示例,但它们不适合入门。对于新手来说,MSDN似乎也没有太大的帮助。

现在有很多虚拟打印机用于Windows(大多数生成PDF),我想知道如何做到这一点。

如果有详细的文档链接,将不胜感激。

谢谢。


2
如果您说出了示例驱动程序未解决的问题,您可能会得到更多帮助。 - John Saunders
1
如果你想要开发“真实”的驱动程序,它们是一个很好的起点,但如果你只需要“虚拟”的、非硬件驱动程序,它们就不那么有用了。尽管如此,“位图示例”是最有帮助的。 - Terminus
6个回答

14

当我(大约12年前)这样做时,我从后置驱动程序示例开始,替换了所有后置特定的内容(在我的情况下,将其写入位图而不是生成后置命令)。

我还编写了一个自定义打印监视器(驱动程序将数据写入到汇聚器,然后再由监视器写入),我的监视器将数据写入文件而不是并口等设备。

然而,打印机驱动程序的架构和/或示例驱动程序集可能已经发生改变。


仅限用户空间在Vista之后才可用--我需要支持Windows 2000。 - Terminus

3

您可以查看微软的“minidriver”开发(Microsoft MDT),具体取决于您的需求。如果您需要处理的端口(即:您将从现有打印机驱动程序中获取数据并想要处理)您可以查看RedMon的源代码。它不支持Vista/Win7,但可能会指引您正确的方向。


1
是的,'虚拟'(非硬件)部分是监视器而不是驱动程序。驱动程序控制输出的格式(而不是输出的位置/目标)。 - ChrisW

3

1
嗯,我已经有那本书了。问题不在于开发驱动程序,而在于找到与我想要开发的虚拟打印机驱动程序相关的具体信息。 - Terminus
第四个链接现在不幸已经失效了。那是什么? - Mooing Duck

2

不幸的是(大部分?)都是用Visual Basic编写的。如果有一个用C/C++编写的就好了... :-)。 - Terminus
那可能不是打印机驱动程序;我所能看到的,它的目录像是"Version 0.9.8\Printer\Adobe\WinXP2k3-x86\English"都是空的,除了一个自述文件。也许这个VB只是GhostScript的某种前端界面,可以单独获取。 - ChrisW
“Version 0.9.8\Printer\Adobe\WinXP2k3-x86\English\readme.txt” 的内容是 “psui.dll”,“pscript5.dll” 和 “pscript.hlp”;这些文件名让我想到这些驱动程序文件也是从后置脚本示例驱动程序创建的。 - ChrisW
最好链接到源而不是资助它的公司,这样会更有帮助。 - Mooing Duck

2

已经有人提到了PDFCreator。这里是一个更具体的链接,他们的代码正在创建打印机、端口和监视器。尽管它是用VB编写的,但作为一个更习惯于C++的人,我也能够理解它。 modPrinter.bas 执行了实际的工作。从大约第28行开始,modMain.bas 调用 modPrinter.bas。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接