| Предыдущий | Следующий |
| ERROR_SPOOL_FILE_NOT_FOUND | ERROR_SPL_NO_ADDJOB |
ERROR_SPL_NO_STARTDOC
Прямой вывод Winspool является последовательностью API с состоянием. Microsoft документирует обычный порядок: OpenPrinter, StartDocPrinter, StartPagePrinter, WritePrinter, EndPagePrinter, EndDocPrinter и ClosePrinter. EndDocPrinter явно сообщает ошибку, если StartDocPrinter не вызывалась.
Поэтому этот статус лучше всего диагностировать как дефект конечного автомата или владения дескриптором. Связность с принтером вторична: вызывающая сторона не создала контекст документа, необходимый для последующих вызовов вывода или завершения.
Проверка последовательности API
- Трассируйте дескриптор принтера вместе с успешностью StartDocPrinter и возвращённым идентификатором задания.
- Не устанавливайте локальный флаг «документ начат» до успешного завершения самой StartDocPrinter.
- Проверьте пути исключений и отмены на наличие EndDocPrinter, WritePrinter или вызова страницы после того, как более ранняя очистка уже сбросила состояние документа.
- Если несколько потоков используют один дескриптор принтера, сериализуйте жизненный цикл документа либо предоставьте каждому независимому документу собственный правильно принадлежащий ему дескриптор и состояние.
Последовательность прямого вывода данных GDI на принтер · Требования EndDocPrinter · Функции заданий диспетчера очереди печати
Нужно найти другой код? Найти другой код состояния или ошибки.
