我使用Print Spooler API
来自动执行某些打印机管理任务;目前我正在处理需要双向通信的某些功能,这不是问题(发送BIDI请求和读取输出数据按预期工作)但在尝试执行请求之前,我想确保通过设备支持BIDI通信(以避免任何COM异常)。
关于Print Spooler Components
的文档解释说,应用程序和驱动程序都必须实现bidirectional communication interfaces
;当然我为我的应用程序做了这个(否则没有请求可以发送),但驱动程序通常由第三方提供。此外,打印提供程序DLL必须实现SendRecvBidiData
函数...
由于Enable bidirectional communication
选项适用于任何打印机(通过打印机属性对话框),我认为必须能够轻松地从系统中查询此信息(如果不支持该功能,则禁用该复选框) , 例如)。
我已经检查了各种DRIVER_INFO_X
和PRINTER_INFO_X
结构,但它们都没有包含BIDI标志,或者是......我还认为这些信息可能是从驱动程序本身推断出来的
有没有办法确定驱动程序是否实现了所需的接口,或者是否允许推断驱动程序是否支持双向通信的任何其他解决方案?
答案 0 :(得分:0)
检查PRINTER_INFO_2上的属性成员,有一个未记录的条目:
PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800