在Linux中,我们可以从关联的驱动程序文件对象读取/写入,并且这些函数调用将由驱动程序读/写函数承载。在Windows中它是一样的吗?
我们是否将文件与驱动程序关联,并通过读/写此文件来访问驱动程序函数?
(我一直在Linux下编写驱动程序,现在正试图理解“Windows方式”来实现它。)
答案 0 :(得分:5)
Windows上的设备驱动程序与驱动程序在Linux上的工作方式不同。要快速了解Windows驱动程序的整体结构,可以查看MSDN。有几类驱动程序,但它们与Linux中的VFS无关,而是在tree of devices
中表示为节点从MSDN开始DriverEntry
程序的目的是:
DriverObject参数为DriverEntry例程提供指向驱动程序驱动程序的指针 对象,由I / O管理器分配。 DriverEntry例程必须填写驱动程序 带有驱动程序标准例程入口点的对象。
这意味着I / O管理器将调用该过程,并使用指向驱动程序实现的过程的指针填充结构。您可以create individual device objects使用IoCreateDevice
并将其存储在DRIVER_OBJECT
结构中。
要创建块设备样式设备,我相信您要创建FILE_DEVICE_DISK
类型设备。
Microsoft提供了一系列驱动程序创建教程,second one可能是一个很好的起点。