zoukankan      html  css  js  c++  java
  • LIST_ENTRY使用

     

    VOID LinkListTest()

    {

           LIST_ENTRY linkListHead;

           //初始化链表

           InitializeListHead(&linkListHead);

     

           PMYDATASTRUCT pData;

           ULONG i = 0;

           //在链表中插入10个元素

           KdPrint(("Begin insert to link list"));

           for (i=0 ; i<10 ; i++)

           {

                  pData = (PMYDATASTRUCT)

                         ExAllocatePool(PagedPool,sizeof(MYDATASTRUCT));

                  pData->number = i;

                  InsertHeadList(&linkListHead,&pData->ListEntry);

           }

     

           //从链表中取出,并显示

           KdPrint(("Begin remove from link list\n"));

           while(!IsListEmpty(&linkListHead))

           {

                  PLIST_ENTRY pEntry = RemoveTailList(&linkListHead);

                  pData = CONTAINING_RECORD(pEntry,

                                  MYDATASTRUCT,

                                  ListEntry);

                  KdPrint(("%d\n",pData->number));

                  ExFreePool(pData);

           }

     }

     

    遍历

    PLIST_ENTRY pLink=NULL;
     for(pLink = glinkListRule.Flink; pLink !=(PLIST_ENTRY) &glinkListRule.Flink; pLink = pLink->Flink)
     {
      pRegPrtRule pData= CONTAINING_RECORD(pLink,RegPrtRule,ListEntry);
      
     }

  • 相关阅读:
    Android ViewPager用法小结
    HDU1212 Big Number 【同余定理】
    1051. Pop Sequence (25)
    FFmpeg源码结构图
    oracle访问不同用户的表不添加用户名前缀
    window7开启Administrator账户
    Window下对nodejs多版本管理GNVM
    基于Centos7.5搭建Docker环境
    grep与孪生兄弟egrep差异
    Linux编译步骤概述
  • 原文地址:https://www.cnblogs.com/ahuo/p/1389484.html
Copyright © 2011-2022 走看看