终端服务器打印
重要
从 WDK for Windows 11 版本 22H2 开始,不再支持 WDF 可再发行组件共同安装程序。 若要了解如何解决此更改,请参阅 WDF 可再发行组件共同安装程序在WDK 已知问题 中不起作用一文。
Microsoft Windows 支持终端服务,这是一种允许多个用户连接到单个服务器系统的技术。 此服务器系统称为终端服务器。 有关终端服务的详细讨论,请参阅 Windows SDK 文档。
如果你正在开发适用于 Windows 的打印机微型驱动程序或驱动程序,则无需执行任何特殊操作即可支持连接到终端服务器的打印机。 但是,必须遵循 Windows 驱动程序工具包 (WDK) 中指定的所有设计、实现和安装准则。 具体而言,必须使用以下规则:
如果可能,请通过提供适用于以下 Microsoft 提供的驱动程序之一的微型驱动程序来支持打印机:
必须将打印机图形 DLL 设计为在用户模式下执行。 请参阅 选择用户模式或内核模式。
如果设备必须受自定义驱动程序支持,则驱动程序必须完全遵循 Microsoft 的 打印机驱动程序体系结构。 具体而言:
必须创建 打印机接口 DLL。
必须创建 打印机图形 DLL。 此 DLL 可以在用户模式或内核模式下执行,但首选用户模式。
如果创建内核模式代码,则必须使用 驱动程序验证程序测试代码。
必须根据安装 INF 文件提供安装过程,如 安装和配置打印机驱动程序中所述。
所有自定义驱动程序代码都必须可重入。 用户模式代码应使用 Windows SDK 文档) 中所述的关键部分对象 (。 内核模式代码应使用信号灯 (请参阅 EngCreateSemaphore 和相关函数) 。
打印机驱动程序和自定义后台处理程序组件必须只能通过专门为这些驱动程序和后台处理程序组件提供的接口来访问注册表,如 WDK 的相应部分所述。
安装注意事项
通常,只需提供一个 INF 文件,当用户调用“ 添加 打印机”向导时,Microsoft 的打印机类安装程序即可读取该文件。 有时,还需要自定义安装代码 (共同安装程序或类安装程序) 。 如果必须创建自定义安装代码,请记住以下事项:
用户或安装代码必须将终端服务器置于安装模式。 (有关详细信息,请参阅 Microsoft Windows SDK 文档。)
请勿尝试替换系统文件。 Windows 文件保护禁止系统文件替换。
尽量避免要求重启系统。 使用以下指南:
不要替换未更改的驱动程序文件。 例如,如果已安装最新版本,则不应更新由多个设备共享的文件。
如果必须替换文件,则安装代码应采取步骤卸载旧版本,然后加载新版本 (例如,停止驱动程序服务,替换文件,然后重新启动服务) 。
要求用户注销,然后重新登录,比要求重新启动系统更可取。
有关共同安装程序和类安装程序的详细信息,请参阅 编写类安装程序和共同安装程序。
在编写自定义安装代码之前,请务必阅读 Windows SDK 文档中提供的终端服务编程指南。
用户界面注意事项
用户运行的自定义安装代码可以显示用户界面。
几乎所有打印机驱动程序代码都在后台处理程序的执行上下文中运行,因此无法显示用户界面。 用户界面只能由打印机接口 DLL 显示,并且只能从以下函数中显示:
DrvDevicePropertySheets 和 DrvDocumentPropertySheets 函数,用于创建属性页。
DrvPrinterEvent 函数,它接收标识打印机事件的事件代码。 函数只能显示PRINTER_EVENT_ADD_CONNECTION和PRINTER_EVENT_DELETE_CONNECTION事件代码的用户界面。
所有其他打印机驱动程序代码在后台处理程序的上下文中执行。 在此上下文中,允许调用 MessageBox 或 MessageBoxEx ,但必须设置MB_SERVICE_NOTIFICATION。 Windows SDK 文档中介绍了这些函数。