Запуск службы драйвера KMDF после остановки приводит к загадочной ошибке - PullRequest
0 голосов
/ 05 июля 2018

Я написал очень простой драйвер KMDF, установил его и запустил с net start KmdfStart. Затем я остановил его с net stop KmdfStart. Пока нет проблем.

Однако, когда я снова запускаю его, используя net start KmdfStart, я получаю System error 2 has occurred. The system cannot find the file specified. Помогает только перезагрузка компьютера. Проблема возникает каждый раз, когда я запускаю и останавливаю, а затем пытаюсь запустить. Ошибка сразу отображается в консоли.

Запись реестра HKLM\SYSTEM\CurrentControlSet\Services\KmdfStart имеет значение ImagePath, которое установлено на System32\drivers\KmdfStart.sys, и этот файл определенно существует.

Как net start может завершиться с ошибкой, если файл явно существует?

1 Ответ

0 голосов
/ 05 июля 2018

Забыв о необходимости очистки перед выгрузкой драйвера устройства, как правило, является причиной сообщения об ошибке в этих обстоятельствах. Я только дважды видел это сообщение об ошибке: при попытке загрузить драйвер устройства по сети (например, Shared Folder); или из-за того, что вы забыли очистить драйвер устройства перед первой разгрузкой, что создает проблему во второй раз.

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

Если вы делаете что-то вроде создания устройства (IoCreateDevice / Secure) и символической ссылки, обязательно очистите его в процедуре выгрузки для драйвера. В этом примере отказ от очистки вызовет проблему, поскольку вы пытаетесь создать символьную ссылку на устройство с именем, которое уже существует, но больше не используется, и у вас не может быть создана символьная ссылка на устройство. с тем же именем, что и другое, в противном случае конфликт возникает при попытке создания.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...