Каков допустимый диапазон для идентификаторов заданий на печать в Windows?

1188
Andy

Я пытался найти это некоторое время, но не могу найти документацию MS, в которой подробно указаны максимальные и минимальные допустимые идентификаторы заданий на печать для окон.

Кто-нибудь знает документацию где-нибудь, которая может предоставить эту информацию?

Причина, по которой я спрашиваю, заключается в том, что мне нужно знать, является ли 0 действительным идентификатором задания на печать. Я предполагаю, что нет, но мне не на чем основывать это!

3
Ты программируешь? Если это так, добавьте что-то в очередь, а затем получите идентификатор Dave 11 лет назад 0
Ну, причина, по которой я спрашиваю, в том, что у меня возникла ситуация, когда я получаю неожиданное событие в своем драйвере принтера, давая мне идентификатор задания 0. Затем я получаю истинный идентификатор задания в следующем событии. Поэтому мне просто интересно, могу ли я полагаться на 0, являющийся недопустимым идентификатором задания, и выбрасывать событие на основании задания ((ID == 0) => недопустимое событие). Я думаю, что мне нужно больше уверенности, чем делать предположения о нескольких действительных идентификаторах, возвращенных из нескольких отпечатков. :) Andy 11 лет назад 0
Нет, на это нельзя полагаться - удостоверение личности не имеет никакого отношения к государству. Это может помочь: http://support.microsoft.com/kb/202480 ~ (Это способ определения состояния принтера и состояния задания печати из Visual Basic) Dave 11 лет назад 0
Но как вы можете получить статус задания на печать, которого не существует? ;) Полагаю, я мог бы попытаться получить задание на печать, и если его не существует, я знаю, что это неверный идентификатор задания. Я думаю, мне просто интересно, есть ли документация, которая может означать, что я могу полагаться на идентификатор задания 0, указывающий на недопустимое событие. Andy 11 лет назад 0
Но идентификатор работы 0 не означает, что он не существует - это означает, что он живой и счастливый (или несчастный)! Dave 11 лет назад 0
Я думаю, что нашел что-то вроде этого: http://msdn.microsoft.com/en-us/library/windows/desktop/dd374577(v=vs.85).aspx. В поле «Идентификатор задания» указано, что 0 означает задание на печать, которому еще не присвоен идентификатор. Таким образом, он существует, но ему не был присвоен идентификатор (идентификатор от 1 или более). Andy 11 лет назад 0
Я думаю, что это будет специфичным для каждого типа принтера. Таким образом, идентификатор 0 означает, что очередь пуста (или что никакие работы не были назначены). Я сомневаюсь, что вы можете выбросить событие, поскольку оно выглядит как действительное состояние. Dave 11 лет назад 0
Ну, это похоже на действительный идентификатор (хотя вы не можете получить структуру JOB_INFO_ * из него), но выбрасывание события также допустимо. Как разработчик драйверов, мне не нужно обрабатывать какие-либо из этих событий вообще, поэтому не обрабатывать это конкретное событие не является плохой вещью. Провалить мероприятие (как я делал) было бы плохо! :) Andy 11 лет назад 0
Конечно! Звучит неплохо! :) Andy 11 лет назад 0

2 ответа на вопрос

0
Ansgar Wiechers

According to the documentation for the Win32_PrintJob class, the JobId property is a uint32, so its value may range from 0 to 4,294,967,295 (232-1). Additional restrictions may apply, though.

Это представительный диапазон, не все из которых являются действительными. Как говорится в комментарии, вы можете получить jobID = 0 для недействительной работы. MSalters 11 лет назад 0
0
Dave

Ответил в комментариях ОП

Он (см. Источник ниже) говорит под идентификатором задания, что 0 обозначает задание на печать, которому еще не был присвоен идентификатор. Таким образом, он существует, но ему не был присвоен идентификатор (идентификатор от 1 или более).

Источник