热门关键字: excel200 蓝光笔记 pps有图像 excel winrar使 添加水印 輸入法 actionsc
当前位置 : IT 知识库 > 网络安全 > 编程技术 > 正文

Windows驱动编程基础教程(连载3)

作者:楚狂人时间:08-05-24

Windows驱动编程基础教程(2.2)

2.2 使用LIST_ENTRY

    Windows的内核开发者们自己开发了部分数据结构,比如说LIST_ENTRY。
    LIST_ENTRY是一个双向链表结构。它总是在使用的时候,被插入到已有的数据结构中。下面举一个例子。我构筑一个链表,这个链表的每个节点,是一个文件名和一个文件大小两个数据成员组成的结构。此外有一个FILE_OBJECT的指针对象。在驱动中,这代表一个文件对象。本书后面的章节会详细解释。这个链表的作用是:保存了文件的文件名和长度。只要传入FILE_OBJECT的指针,使用者就可以遍历链表找到文件名和文件长度。

    typedef struct {
        PFILE_OBJECT file_object;
        UNICODE_STRING file_name;
        LARGE_INTEGER file_length;
    } MY_FILE_INFOR, *PMY_FILE_INFOR;

    一些读者会马上注意到文件的长度用LARGE_INTEGER表示。这是一个代表长长整型的数据结构。这个结构我们在下一小小节“使用长长整型数据”中介绍。
    为了让上面的结构成为链表节点,我必须在里面插入一个LIST_ENTRY结构。至于插入的位置并无所谓。可以放在最前,也可以放中间,或者最后面。但是实际上读者很快会发现把LIST_ENTRY放在开头是最简单的做法:

    typedef struct {
        LIST_ENTRY list_entry;
        PFILE_OBJECT file_object;
        UNICODE_STRING file_name;
        LARGE_INTEGER file_length;
    } MY_FILE_INFOR, *PMY_FILE_INFOR;   

    list_entry如果是作为链表的头,在使用之前,必须调用InitializeListHead来初始化。下面是示例的代码:

最新文章
内核级HOOK的几种实现与应用
实现内核级HOOK对于拦截、分析、跟踪系统内核起着致关重要的作用。实现的方法不...
Windows平台内核级文件访问
1.背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,...
相关文章
Windows平台内核级文件访问
1.背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,...
Windows驱动编程基础教程(连载11)
Windows驱动编程基础教程(6.3) 6.3 使用事件通知 一些读者可能熟悉事件驱...