2

在 Linux 中,我们可以从关联的驱动程序文件对象中读取/写入,并且这些函数调用将由驱动程序读取/写入函数进行。在 Windows 中是否相同?

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

(我一直在 Linux 下编写驱动程序,现在正试图了解“Windows 方式”来做到这一点。)

4

1 回答 1

5

Windows 上的设备驱动程序的工作方式与 Linux 上的驱动程序不同。要快速了解 Windows 驱动程序的整体结构,您可以查看MSDN。有几类驱动程序,但它们不像 Linux 中那样与 VFS 绑定,而是表示为设备树中的节点

MSDN程序的目的DriverEntry是这样的:

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

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

要创建块设备样式的设备,我相信您想创建一个FILE_DEVICE_DISK类型的设备。

Microsoft 提供了一系列驱动程序创建教程,第二个可能是一个不错的起点。

于 2012-11-15T12:55:51.417 回答