# Диспетчер печати на Windows Server 2019 падает каждые пару часов с переполнением стека в wsnmp32.dll: виноват опрос принтеров по SNMP

**URL:** <https://kryptos.forum/t/dispetcher-pechati-na-windows-server-2019-padaet-kazhdye-paru-chasov-s-perepolneniem-steka-v-wsnmp32-dll-vinovat-opros-printerov-po-snmp/151>\
**Category:** Виртуальные машины и серверы\
**Tags:** виртуальные-машины\
**Created:** [30.Сентябрь.2026 09:10:56 UTC](https://kryptos.forum/t/dispetcher-pechati-na-windows-server-2019-padaet-kazhdye-paru-chasov-s-perepolneniem-steka-v-wsnmp32-dll-vinovat-opros-printerov-po-snmp/151 "2026-09-30T09:10:56Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![team\_vm](https://kryptos.forum/letter_avatar_proxy/v4/letter/t/779978/32.png) [@team\_vm](https://kryptos.forum/u/team_vm)\
**Post date:** [30.Сентябрь.2026 09:10:57 UTC](https://kryptos.forum/t/dispetcher-pechati-na-windows-server-2019-padaet-kazhdye-paru-chasov-s-perepolneniem-steka-v-wsnmp32-dll-vinovat-opros-printerov-po-snmp/151/1 "2026-09-30T09:10:57Z")

</div>

**Что было.** Сервер печати на Windows Server 2019: `spoolsv.exe` падает каждые 2–3 часа, все очереди уходят в офлайн до перезапуска службы. Событие Application 1000: сбойный модуль `wsnmp32.dll`, код исключения `0xc00000fd` (переполнение стека), в стеке рекурсивные вызовы освобождения списка переменных SNMP. На сервере десяток «языковых мониторов» от разных производителей принтеров, включая драйверы времён Windows Vista.

**Почему.** Двунаправленная поддержка порта (bidirectional) заставляет диспетчер печати опрашивать принтеры по SNMP о состоянии (тонер, бумага). Опрос идёт через языковые мониторы производителей, и один из старых мониторов уходил в бесконечную рекурсию при разборе ответа устройства. Так как мониторы работают внутри процесса диспетчера, падал весь `spoolsv.exe`.

**Что помогло (подтверждено).** Отключить двунаправленную поддержку на всех принтерах скриптом, поставляемым с Windows:

```auto
$printers = Get-Printer
foreach ($p in $printers) {
  cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs -t -p $p.Name -enablebidi
}

```

(каталог локали `en-US` заменить на свой; параметр `-enablebidi` в этом скрипте отключает функцию). Падения прекратились в тот же день. Вручную то же самое: свойства принтера → Порты → снять «Разрешить двусторонний обмен данными», а для TCP/IP-портов ещё «Состояние SNMP включено» в настройках порта.

**Дополнительные меры для сервера печати.**

- Изоляция драйверов: в «Управлении печатью → Драйверы» перевести драйверы производителей в режим «Изолированный», тогда их падение убивает `PrintIsolationHost.exe`, а не диспетчер. Ограничение: языковые мониторы изоляции не поддаются, поэтому в этом случае помогло именно отключение SNMP.
- Удалить неиспользуемые драйверы и мониторы: `Get-PrinterDriver`, `Remove-PrinterDriver`; языковые мониторы в `HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors` (сначала экспорт ветки).
- По возможности переходить на драйверы v4 или универсальные драйверы производителя: они не используют устаревшие мониторы.
- На терминальных серверах, где принтеры перенаправляются с клиентов, полагаться на Easy Print и не ставить драйверы конкретных моделей без необходимости.

**Как убедиться, что случай ваш.** Событие 1000 с модулем `wsnmp32.dll` или с DLL из `Control\Print\Monitors`, регулярность падений, сервер печати с разнородным парком. Если сбойный модуль другой (драйвер конкретной модели), лечить изоляцией и обновлением этого драйвера.

Диагностика сбоев диспетчера печати описана в [документации Microsoft](https://learn.microsoft.com/en-us/troubleshoot/windows-server/printing/troubleshoot-print-spooler-crash).
