为什么内核驱动程序在抛出异常时无法更新注册表值?

why Kernel Driver can not update registry value when it throw an exception?

这是一个测试 KMDF 项目。它的功能是读写注册表。

案例 1:

1.read 一个注册表值并将值写入注册表

2.Check windows 中的注册表,值已更新。

案例2:

1.read 一个注册表值并将一个值写入注册表,最后添加异常。开机时出现蓝屏 windows

2.remove异常,启动windows,检查注册表,值未更新。

这些是我使用的异常代码。

    void GoException()
    {
    PDRIVER_OBJECT obj = NULL;
    obj->DeviceObject->CurrentIrp = NULL;
    }

我已经尝试了两个注册表路径。

HKEY_LOCAL_MACHINE\SOFTWARE\DELL\test(正常路径)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TEST(服务路径)

注册表项无法更新的原因,需要到一定点才能在开机时保存更改。某驱动异常,可能无法保存