设备 xxx_init 未被调用

Device xxx_init not getting called

我编写了一个简单的流驱动程序来学习设备驱动程序,因为我只有 DLLEntry、Init 和 DeInit 函数,而且我已经将所有函数导出到 .def 文件中。

我还在 HKLM/Drivers/Sample 中添加了驱动程序的注册表设置。

我编写了一个应用程序来测试它的工作情况,我在其中使用以下路径调用了 ActivateDeviceEx。

正在调用我的 DLLEntry 函数,但未调用 Init 函数。我正在使用 RETAILMSG 宏来打印调试信息。

我也看到了 post 1 他也面临同样的问题

但我不明白我们必须做些什么才能让它工作...

DllEntry 被调用但 Init 并未暗示函数导出存在问题。流驱动程序 must export at least the following:

  • 初始化
  • 取消初始化
  • 打开
  • 关闭
  • 阅读
  • 写入
  • 寻求
  • IOControl

此外,除非注册表中的 Flags 值包含 DEVFLAGS_NAKEDENTRIES,否则每个函数都必须以设备名称为前缀,因此如果驱动程序支持 XYZ 设备,则函数必须命名为 XYZ_Init, XYZ_Deinit, 等等