Я опрашиваю очередь принтера при любых изменениях, таких как JOB_CHANGE, и, если я вижу, что какое-то задание исчезло, я сообщаю серверу, что задание было распечатано или удалено, в соответствии с последним состоянием задания.
Проблема заключается в том, что принтер Kyocera M3550 возвращается как последний статус JOB_STATUS_PAUSED, но не JOB_STATUS_DELETED или JOB_STATUS_PRINTED.
Вот уставы, которые я получаю в порядке возрастания:
Что это значит? Я не могу передать JOB_STATUS_PASUED как мой последний статус, потому что, возможно, кто-то преднамеренно это сделал.
Возможно, принтер Kyocera имеет собственный процессор печати, который переводит задания печати в состояние паузы перед их удалением. В этом случае вы все равно можете обнаружить удаление по факту исчезновения задания. Очевидно, вам придется вести список текущих заданий на печать, чтобы таким образом обнаруживать удаления.
Когда задание на печать появляется впервые, вы должны вызвать GetJob
функция с Level
параметр установлен в 2 и передать JOB_INFO_2 структура для заполнения. Структура JOB_INFO_2 предоставит всю информацию о доступном задании на печать.
Других решений пока нет …