在Linux中,我们可以从相关的驱动程序文件对象进行读/写,这些函数调用将由驱动程序的读/写函数承载。这在Windows中是一样的吗?
我们是否将文件关联到驱动程序,并通过读/写此文件来访问驱动程序函数?
(我一直在Linux下编写驱动程序,现在正在尝试理解“Windows方式”。)
发布于 2012-11-15 20:55:51
Windows上的设备驱动程序与Linux上的驱动程序的工作方式不同。要快速了解Windows驱动程序的整体结构,可以查看MSDN。有几类驱动程序,但它们并不像在Linux中那样绑定到VFS,而是被表示为tree of devices中的节点。
在MSDN中,DriverEntry过程的目的如下:
DriverObject参数为DriverEntry例程提供一个指向驱动程序驱动程序对象的指针,该对象由I/O管理器分配。DriverEntry例程必须用驱动程序的标准例程的入口点填充驱动程序对象。
这意味着I/O管理器将调用该过程,您可以使用指向驱动程序实现的过程的指针来填充该结构。您可以使用IoCreateDevice进行create individual device objects并将它们存储在您的DRIVER_OBJECT结构中。
要创建块设备样式的设备,我相信您需要创建一个FILE_DEVICE_DISK类型的设备。
微软提供了一系列的驱动程序创建教程,second one可能是一个很好的起点。
https://stackoverflow.com/questions/13397816
复制相似问题