некоторое время назад я решил научиться писать драйверы. К сожалению, я не зашел слишком далеко, потому что для тестирования драйвера для вас очень важно иметь возможность выгружать его без необходимости перезапуска машины. Теперь я вернулся к нему, но я просто не могу пройти мимо этого самостоятельно.Выгрузка драйвера 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 печатает сообщение «Entry», но при выгрузке драйвер не распечатывает «Выгрузить». На самом деле попытка остановить работу службы драйверов имеет статус NOT_STOPPABLE. Затем я должен перезапустить, если хочу другую попытку. Я работаю с Windows 7, и с такими же результатами я попытался сделать это, загрузившись с TESTSIGNING ON и без каких-либо требований. Немного странно, что нагрузка не работает, если я не создаю устройство в функции ввода. Только тогда я смогу найти свой драйвер с winobj в каталоге \ Driver. Я также пробовал это на другой машине с установкой Win7, но оказалось, что локальные настройки не являются проблемой. Если вы признаете такое поведение ядра, я бы очень хотел его услышать, спасибо.
На самом деле, если вы знаете о какой-либо программе, которая может загрузить .sys, а затем может ее выгрузить, оставьте ссылку или имя. Исходные коды не требуются, исполняемый файл должен делать .. или наоборот .. спасибо.
Отладка в виртуальной машине с помощью [VisualDDK] (http://visualddk.sysprogs.org/)? –
Работает ли она без IDE VS? – Pyjong
@gbjbaanb: хорошо, это определенно прогресс, драйвер не остается слишком долго, но, по крайней мере, я могу видеть сообщение Unload, большое спасибо – Pyjong