前段时间我决定学习如何编写驱动程序。不幸的是,我没有做太多的工作,因为测试驱动程序时,无需重新启动机器就可以卸载驱动程序,这点很重要。现在我回到了它,但我无法自己过去。卸载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它打印“注册”的消息,但在卸载时它不会打印“卸载”的驱动程序。实际上试图停止驱动程序服务将其状态更改为NOT_STOPPABLE。 然后我必须重新启动,如果我想再试一次。 我与Windows 7一起工作,并获得相同的结果我尝试使用TESTSIGNING ON启动并且不需要签名。有点奇怪的是,除非我在入口函数中创建设备,否则加载不起作用。只有这样我才能在\ Driver目录下找到我的winobj驱动程序。我也在Win7安装的另一台机器上尝试过它,但事实证明本地设置不是问题。如果你认识到这种内核行为,我真的很想听到它,谢谢。
其实如果知道一些可以加载.sys然后能够卸载它的程序,可以放一个链接或名称。源代码不需要,可执行文件应该..或反之亦然..谢谢。
使用[VisualDDK](http://visualddk.sysprogs.org/)在虚拟机中调试? –
没有VS的IDE工作吗? – Pyjong
@gbjbaanb:好的,那肯定是有进展的,司机不会停留太久,但至少我可以看到卸载消息,非常感谢 – Pyjong