Назад | Перейти на главную страницу

Приостановка службы NOT_PAUSABLE, приостановка не приостанавливаемой службы из командной строки или кода

Я пытаюсь приостановить драйвер Windows, для которого установлен атрибут NOT_PAUSABLE. когда я отправляю

sc query ServiceName

вывод следующий:

TYPE               : 110  WIN32_OWN_PROCESS (interactive)
STATE              : 4  RUNNING
                        (NOT_STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE    : 0  (0x0)
SERVICE_EXIT_CODE  : 0  (0x0)
CHECKPOINT         : 0x0
WAIT_HINT          : 0x0

Конечно, когда я пытаюсь использовать SC, чтобы приостановить работу драйвера / службы, я получаю сообщение об ошибке.

Есть ли способ приостановить (или заставить его приостановить) этот драйвер? из командной строки? или по коду (C или C ++)

Спасибо!

Приостановка службы Windows не похожа на приостановку виртуальной машины, при которой выполнение кода приостанавливается в определенный момент времени. Событие Pause в службе Windows технически не отличается от события Start или Stop. Все это просто события, передаваемые диспетчером управления сервисом сервису. Эти события должны быть закодированы писателем службы. Если служба не поддерживает событие Pause, вы ничего не можете сделать, чтобы заставить его.

Даже если вам удастся обмануть диспетчер управления службами, чтобы отправить в службу событие паузы, в лучшем случае служба просто проигнорирует сообщение. В худшем случае код не знает, что делать с событием, и каким-то впечатляющим образом пугается (скорее всего, происходит сбой).