最近,我一直在研究 Windows 7 中的驱动程序。到目前为止,我已经构建了一个可以与用户模式应用程序通信的驱动程序。 但是,我一直在启动和停止驱动程序时遇到问题。 首先,我安装驱动程序并启动它,它工作得很好。我停止它,它也停止得很好。但是,当我再次启动它时,它出错并显示错误 2 代码“找不到指定的文件”。
为了解决这个问题,我必须卸载驱动程序,然后重新启动。重新启动后,我可以再次安装它,并运行一次,然后整个过程重新开始。
所以我的问题是如何解决这个问题?我真的很讨厌每次重建和测试驱动程序时都必须重新启动,所以我想知道我在构建和部署过程中是否做错了什么。
我在构建过程中使用标准 DDK 命令行构建,并使用名为 OSR Driver Loader 的应用程序来加载驱动程序。不过,我也可以使用 SC 命令行来安装它。
最佳答案
我解决了。我需要删除我正在创建的符号链接(symbolic link),并删除设备实例。
这是我放入 OnUnload 函数的代码:
// this deletes the symbolic link for the driver
IoDeleteSymbolicLink(&deviceLinkUnicodeString);
// this deletes the device
IoDeleteDevice(g_RootkitDevice);
所以总的来说,我需要将其作为我的 OnUnload 函数:
VOID OnUnload(IN PDRIVER_OBJECT DriverObject)
{
// this deletes the symbolic link for the driver
IoDeleteSymbolicLink(&deviceLinkUnicodeString);
// this deletes the device
IoDeleteDevice(g_RootkitDevice);
}
关于c - Windows 7 驱动程序 - 仅运行一次然后需要重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745709/