| Предыдущий | Следующий |
| ERROR_INVALID_FORM_SIZE | ERROR_PRINTER_DELETED |
ERROR_ALREADY_WAITING
description[Для этого дескриптора уже выполняется ожидание изменения принтера.]Устаревший интерфейс Winspool WaitForPrinterChange ожидает набор изменений принтера с использованием дескриптора принтера. Этот статус указывает на ошибку синхронизации вокруг дескриптора: с ним уже связано другое ожидание.
Современная документация Win32 также предоставляет FindFirstPrinterChangeNotification, создающую отдельный объект уведомления об изменении, который можно передавать обычным функциям ожидания, а затем сбрасывать через FindNextPrinterChangeNotification. Такая модель делает явными время жизни подписки и объекта ожидания.
Что проверить в параллельном коде
- Найдите каждый поток, совместно использующий тот же дескриптор принтера и регистрирующий ожидание изменения.
- Не считайте дескриптор принтера Winspool безопасным для несинхронизированного параллельного использования; такие API, как AddPrinter, прямо указывают, что возвращаемые дескрипторы принтера не являются потокобезопасными.
- Сопоставляйте каждый объект уведомления об изменении с операцией закрытия и сохраняйте нижележащий дескриптор принтера действительным до завершения мониторинга уведомлений.
- Предпочитайте одну принадлежащую компоненту подписку на уведомления вместо наложения ожиданий на общий дескриптор.
WaitForPrinterChange · FindFirstPrinterChangeNotification · Примечание AddPrinter о синхронизации дескриптора
Нужно найти другой код? Найти другой код состояния или ошибки.