转自:http://blog.csdn.net/baund/article/details/7059920
IoEnumerateDeviceObjectList函数,用来枚举某驱动下的所有设备,主要是遍历deviceobject->nextobject字段,该函数第一次可以将DeviceObjectListSize传递0,来获取实际的设备个数,第二次调用,再获取整个设备列表,实现如下:
在文件过滤驱动中,常用该函数来枚举某文件系统下的所有设备,然后根据名字来区别是卷设备还是控制设备,空名字即卷设备,然后进行attach即可。
注意:调用该函数后,需要对设备队列的每个设备,都ObDereferenceObject一次,来保持对象的数目平衡。