【发布时间】:2014-05-10 17:24:37
【问题描述】:
我正在使用Print Spooler API 来自动化一些打印机管理任务;目前我正在处理需要双向通信的某些功能,这不是问题(发送 BIDI 请求和读取输出数据按预期工作)但在尝试执行请求之前,我想确保 BIDI 通信由 acual 设备支持(以避免任何 COM 异常)。
关于Print Spooler Components 的文档解释说,应用程序和驱动程序都必须实现bidirectional communication interfaces;当然,我是为我的应用程序这样做的(否则无法发送任何请求),但驱动程序通常由第三方提供。此外,打印提供程序 DLL 必须实现 SendRecvBidiData 函数...
由于Enable bidirectional communication 选项可用于任何打印机(通过打印机属性对话框),我认为必须可以轻松地从系统查询此信息(如果不支持该功能,则禁用该复选框,因为实例)。
我已经检查了各种 DRIVER_INFO_X 和 PRINTER_INFO_X 结构,但它们都没有包含 BIDI 标志之类的......我还认为这些信息可能是从驱动程序本身推断出来的。
有没有办法确定驱动程序是否实现了所需的接口,或者任何其他允许推断驱动程序是否支持双向通信的解决方案?
【问题讨论】:
-
win32_printer WMI 类中有一个
enableBIDI属性... -
我想避免使用
WMI。我更喜欢 Windows API 函数。
标签: windows visual-c++ printing com driver