2014-03-31 68 views
2

我使用Print Spooler API自動執行某些打印機管理任務;目前我對某些功能的工作,需要雙向通信,這是沒有問題的(發送BIDI請求和讀取輸出數據按預期工作),但試圖做一個請求之前,我想,以確保雙向通信由acual設備支持(以避免任何COM異常)。如何確定打印機是否支持雙向通信,或不

的文檔約Print Spooler Components解釋說,這兩個應用程序和驅動程序必須實現bidirectional communication interfaces;當然我爲我的應用程序做了這些(否則沒有請求可以發送),但驅動程序通常由第三方提供。此外,印刷供應商DLL必須實現SendRecvBidiData功能...

由於Enable bidirectional communication選項可用於任何打印機(通過打印機屬性對話框),我認爲它必須能夠方便地查詢從系統信息(萬一的功能不受支持,例如複選框被禁用)。

我已經檢查了各種DRIVER_INFO_XPRINTER_INFO_X結構,但它們都沒有包含BIDI標誌,或者這樣的...我也有這樣的想法,即可以從驅動程序本身推斷出這些信息。

有沒有一種方法,以確定驅動程序實現所需的接口,或任何其他解決方案,允許推斷駕駛員是否支持雙向通信,還是沒有?

+1

存在win32_printer WMI類'enableBIDI' proptery ... –

+0

我想避免WMI'的使用' 。我更喜歡Windows API函數。 – Matze

回答

0

檢查PRINTER_INFO_2的屬性成員,有一個未公開的條目:

PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800

+0

可能適用於某些情況下......我可能意味着雙向通信的驅動程序支持,如果設置了標誌,但如果不是呢? – Matze

相關問題