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);
      
     }

  • 相关阅读:
    AJAX
    Aliyun服务器配置Redis
    Aliyun服务器配置MySQL
    Python基础之迭代器详解
    Python基础之函数
    Flask入门--URL
    认识Web
    肖知兴:企业的底层逻辑与企业家的突破(下)
    建造者模式(Bulider模式)详解
    为什么我强烈推荐你用枚举来实现单例模式
  • 原文地址:https://www.cnblogs.com/ahuo/p/1389484.html
Copyright © 2011-2022 走看看