在 Linux 中,我们可以从关联的驱动程序文件对象中读取/写入,并且这些函数调用将由驱动程序读取/写入函数进行。在 Windows 中是否相同?
我们是否将文件关联到驱动程序并通过读取/写入该文件来访问驱动程序功能?
(我一直在 Linux 下编写驱动程序,现在正试图了解“Windows 方式”来做到这一点。)
Windows 上的设备驱动程序的工作方式与 Linux 上的驱动程序不同。要快速了解 Windows 驱动程序的整体结构,您可以查看MSDN。有几类驱动程序,但它们不像 Linux 中那样与 VFS 绑定,而是表示为设备树中的节点
从MSDN程序的目的DriverEntry
是这样的:
DriverObject 参数为 DriverEntry 例程提供指向驱动程序驱动程序对象的指针,该驱动程序对象由 I/O 管理器分配。DriverEntry 例程必须用驱动程序标准例程的入口点填充驱动程序对象。
这意味着 I/O 管理器将调用该过程,并且您使用指向您的驱动程序实现的过程的指针来填充结构。您可以创建单个设备对象并将IoCreateDevice
它们存储在您的DRIVER_OBJECT
结构中。
要创建块设备样式的设备,我相信您想创建一个FILE_DEVICE_DISK
类型的设备。
Microsoft 提供了一系列驱动程序创建教程,第二个可能是一个不错的起点。