从开始接触驱动以来,一直对DRIVER_OBJECT和DEVICE_OBJECT之间的关系很是困惑,经过一段时间的学习,大概了解了两者之间的关系。
DRIVER_OBJECT是驱动程序在内核中的数据结构,每个驱动程序有唯一DRIVER_OBJECT,IO管理器使用驱动程序对象代表每个设备驱动程序,驱动程序描述了驱动程序的载入到内存什么地方,驱动程序的大小和它的主要入口点(MajorFunction数组);驱动程序对象有一个DeviceObject域指向一个设备对象链表,每个设备对象代表一个设备。
DEVICE_OBJECT是物理设备或逻辑设备在内核中的数据结构,跟这个概念相关的有PDO和FDO;PDO对应于具体的硬件设备,每个硬件设备对应一个PDO,而一个PDO可以对应多个FDO;PDO和FDO都是DEVICE_OBJECT的实体;同一个设备驱动程序对象下的所有设备通过NextObject域连接成一个链表(即上述驱动程序设备对象的一个域);AttachedDevice域是针对“早期”驱动的(Window NT4以前的版本,在以后的版本中也可以正常使用);DriverObject域指向与该设备相关的驱动程序对象。
暂时就了解这么多,后面如果再有再修改。
DRIVER_OBJECT是驱动程序在内核中的数据结构,每个驱动程序有唯一DRIVER_OBJECT,IO管理器使用驱动程序对象代表每个设备驱动程序,驱动程序描述了驱动程序的载入到内存什么地方,驱动程序的大小和它的主要入口点(MajorFunction数组);驱动程序对象有一个DeviceObject域指向一个设备对象链表,每个设备对象代表一个设备。
DEVICE_OBJECT是物理设备或逻辑设备在内核中的数据结构,跟这个概念相关的有PDO和FDO;PDO对应于具体的硬件设备,每个硬件设备对应一个PDO,而一个PDO可以对应多个FDO;PDO和FDO都是DEVICE_OBJECT的实体;同一个设备驱动程序对象下的所有设备通过NextObject域连接成一个链表(即上述驱动程序设备对象的一个域);AttachedDevice域是针对“早期”驱动的(Window NT4以前的版本,在以后的版本中也可以正常使用);DriverObject域指向与该设备相关的驱动程序对象。
暂时就了解这么多,后面如果再有再修改。