Выгрузка драйвера Windows

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

Теперь я полагаю, что просто для того, чтобы сделать вопрос более прямым, вы обязательно захотите это увидеть:

VOID Unload(PDRIVER_Object DriverObject)
{
 DbgPrint("Unload\r\n");
}

и

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath)
{
 DbgPrint("Entry\r\n");
 pDriverObject->DriverUnload = Unload;
 return STATUS_SUCCESS;
}

В DbgView он печатает сообщение "Enter", но при разгрузке драйвера он не выводит "Выгрузить". На самом деле попытка остановить службу драйвера изменяет статус на NOT_STOPPABLE. Затем я должен перезапустить, если хочу другую попытку. Я работаю с Windows 7 и с такими же результатами я пытался сделать это, загрузившись с TESTSIGNING ON и без каких-либо требований. Немного странно, что нагрузка не работает, если я не создаю устройство в функции ввода. Только тогда я смогу найти свой драйвер с winobj в каталоге \Driver. Я также пробовал это на другой машине с установкой Win7, но оказалось, что локальные настройки не являются проблемой. Если вы признаете такое поведение ядра, я бы очень хотел его услышать, спасибо.

Собственно, если вы знаете о какой-либо программе, которая может загрузить .sys, а затем сможет ее выгрузить, оставьте ссылку или имя. Исходные коды не требуются, исполняемый файл должен делать.. или наоборот.. спасибо.

2 ответа

Хорошо, проблема связана с /driver: wdm, потому что я прочитал старый учебник. В наши дни это неправильно, вы можете использовать только IoCreateDevice в DriverEntry в старых драйверах, что означает, что правильный вариант - это просто/драйвер. Извините, я не понимаю поведение диспетчера ввода-вывода, но если у вас такая же проблема, просто избавитесь от этого флага wdm и он выгрузится.


Разработка драйверов - используйте Загрузчик драйверов OSR

licensed under cc by-sa 3.0 with attribution.