如何确定打印机是否支持双向通信

时间:2014-03-31 11:31:09

标签: windows visual-c++ printing com driver

我使用Print Spooler API来自动执行某些打印机管理任务;目前我正在处理需要双向通信的某些功能,这不是问题(发送BIDI请求和读取输出数据按预期工作)但在尝试执行请求之前,我想确保通过设备支持BIDI通信(以避免任何COM异常)。

关于Print Spooler Components的文档解释说,应用程序和驱动程序都必须实现bidirectional communication interfaces;当然我为我的应用程序做了这个(否则没有请求可以发送),但驱动程序通常由第三方提供。此外,打印提供程序DLL必须实现SendRecvBidiData函数...

由于Enable bidirectional communication选项适用于任何打印机(通过打印机属性对话框),我认为必须能够轻松地从系统中查询此信息(如果不支持该功能,则禁用该复选框) , 例如)。

我已经检查了各种DRIVER_INFO_XPRINTER_INFO_X结构,但它们都没有包含BIDI标志,或者是......我还认为这些信息可能是从驱动程序本身推断出来的

有没有办法确定驱动程序是否实现了所需的接口,或者是否允许推断驱动程序是否支持双向通信的任何其他解决方案?

1 个答案:

答案 0 :(得分:0)

检查PRINTER_INFO_2上的属性成员,有一个未记录的条目:

PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800