驱动程序如何在Windows中工作?

在Linux中,我们可以从关联的驱动程序文件对象读取/写入,而这些函数调用将由驱动程序的读/写function执行。 在Windows中是一样的吗?

我们是否将文件关联到驱动程序,并通过读取/写入该文件来访问驱动程序function?

(我一直在Linux下编程驱动程序,现在正在尝试理解“Windows方式”)。

Windows上的设备驱动程序不能像驱动程序在Linux上那样工作。 有关Windows驱动程序的总体结构的快速介绍,您可以查看MSDN 。 有几种类型的驱动程序,但是它们不像Linux一样绑定到VFS,而是被表示为设备树中的节点

从MSDN的DriverEntry过程的目的是这样的:

DriverObject参数为DriverEntry例程提供一个指向由I / O管理器分配的驱动程序驱动程序对象的指针。 DriverEntry例程必须用驱动程序标准例程的入口点填写驱动程序对象。

这意味着I / O管理器将调用该过程,并用指向您的驱动程序实现的过程的指针来填充结构。 您可以使用IoCreateDevice 创建单独的设备对象 ,并将它们存储在DRIVER_OBJECT结构中。

要创建一个块设备风格的设备,我相信你想创建一个FILE_DEVICE_DISK类型的设备。

微软有一系列的驱动程序创建教程, 第二个可能是一个很好的开始。