Что означает код ошибки Windows 1904 (ERROR_ALREADY_WAITING)?

 
Предыдущий Следующий
ERROR_INVALID_FORM_SIZE ERROR_PRINTER_DELETED

ERROR_ALREADY_WAITING

description[Для этого дескриптора уже выполняется ожидание изменения принтера.]

Устаревший интерфейс Winspool WaitForPrinterChange ожидает набор изменений принтера с использованием дескриптора принтера. Этот статус указывает на ошибку синхронизации вокруг дескриптора: с ним уже связано другое ожидание.

Современная документация Win32 также предоставляет FindFirstPrinterChangeNotification, создающую отдельный объект уведомления об изменении, который можно передавать обычным функциям ожидания, а затем сбрасывать через FindNextPrinterChangeNotification. Такая модель делает явными время жизни подписки и объекта ожидания.

Что проверить в параллельном коде

  • Найдите каждый поток, совместно использующий тот же дескриптор принтера и регистрирующий ожидание изменения.
  • Не считайте дескриптор принтера Winspool безопасным для несинхронизированного параллельного использования; такие API, как AddPrinter, прямо указывают, что возвращаемые дескрипторы принтера не являются потокобезопасными.
  • Сопоставляйте каждый объект уведомления об изменении с операцией закрытия и сохраняйте нижележащий дескриптор принтера действительным до завершения мониторинга уведомлений.
  • Предпочитайте одну принадлежащую компоненту подписку на уведомления вместо наложения ожиданий на общий дескриптор.

WaitForPrinterChange · FindFirstPrinterChangeNotification · Примечание AddPrinter о синхронизации дескриптора


Нужно найти другой код? Найти другой код состояния или ошибки.