Windows 7驱动程序 - 仅运行一次然后需要重新启动

时间:2017-01-19 15:31:44

标签: c windows-7 drivers

最近,我一直在玩Windows 7中的驱动程序。到目前为止,我已经构建了一个可以与用户模式应用程序通信的驱动程序。 但是,我一直遇到启动和停止驱动程序的问题。 首先,我安装驱动程序并启动它,它工作得很好。我停下来,它也停止了。但是,当我再次启动它时,错误输出错误2代码"无法找到指定的文件"。

为了解决这个问题,我必须卸载驱动程序,然后重新启动。一旦我重新启动,我可以再次安装它,并运行一次,然后整个过程开始。

所以我的问题是如何解决这个问题?我真的很讨厌每次重建和测试我的驱动程序时都要重新启动,所以我想知道我的构建和部署过程中是否有错误。

我正在使用构建过程的标准DDK命令行构建,我正在使用名为OSR Driver Loader的应用程序来加载驱动程序。但是,我也可以使用SC命令行来安装它。

1 个答案:

答案 0 :(得分:0)

我解决了。我需要删除我正在创建的符号链接,并删除设备实例。

以下是我在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);
}