fileinfo.h
fileinfo这个头文件里面声明了各种关于文件和目录状态的宏定义信息和枚举.同时也定义个各种结构体.都是与文件的各种信息有关.
list.h
这个头文件中是对LIST_ENTRY各种方法的定义,包括了
InitializeListHead
InsertHeadList
InsertTailList
IsListEmpty
PopEntryList
PushEntryList
RemoveEntryList
RemoveHeadList
RemoveTailList
LIST_ENTRY这个结构体的定义如下:
typedefstruct_LIST_ENTRY{
struct_LIST_ENTRY*Flink;
struct_LIST_ENTRY*Blink;
}LIST_ENTRY,*PLIST_ENTRY,*RESTRICTED_POINTERPRLIST_ENTRY;
通常在驱动开发中常用,因为开发中经常会用到链表,而LIST_ENTRY就是用来维护链表的,因为他没有数据域,所以程序员可以自己声明一个需要的结构体,把它声明在结构体的第一个子域.这样每个结构体之间可以通过LIST_ENTRY进行联系,就像一个晾衣绳一样的结构.
这样我们就可以操作LIST_ENTRY,然后通过宏定义CONTAINING_RECORD,来找到LIST_ENTRY外用户自定义的结构体.
PS: 宏CONTAINING_RECORD的作用是根据结构体中的某成员的地址来推算出该结构体整体的地址.
CONTAINING_RECORD(成员地址, 结构体类型, 成员名 );