Windows驱动开发小练习-内存分配与链表操作
2012-09-20 09:56
495 查看
typedef struct _MYDATA { LIST_ENTRY ListEntry; LONG number; }MYDATA, *PMYDATA; void LinkedListTest() { LIST_ENTRY head; MYDATA *pMyData; PLIST_ENTRY pListEntry; InitializeListHead(&head); // 创建链表 for (int i = 0; i < 10; i++) { // 分配分页内存 pMyData = (PMYDATA)ExAllocatePool(PagedPool, sizeof(MYDATA)); pMyData->number = i; InsertTailList(&head, &pMyData->ListEntry); } // 遍历链表 pMyData = (PMYDATA)head.Flink; while (pMyData != (PMYDATA)&head) { KdPrint(("%d\n", pMyData->number)); pMyData = (PMYDATA)pMyData->ListEntry.Flink; } // 释放链表 KdPrint(("now removing linked list...")); while (!IsListEmpty(&head)) { pListEntry = RemoveTailList(&head); // 从尾部删除一个节点(如果需要从中间删除,使用RemoveEntryList函数) pMyData = (PMYDATA)pListEntry; KdPrint(("Removed data:%d\n", pMyData->number)); ExFreePool(pListEntry); // 释放删除掉的节点所占用的内存 } }
相关文章推荐
- Windows驱动开发小练习-内存分配与链表操作
- Windows驱动开发(5) - 内核模式下的注册表操作
- 22、Windows内核函数(3)-Windows驱动开发详解笔记,注册表操作
- Linux 字符设备驱动开发--内存读写操作
- Windows驱动开发小练习-Lookaside测试程序
- Windows驱动开发WDM (3)- 设备内存读写方式
- Windows内存管理(1)--分配内核内存 和 使用链表
- Windows驱动开发小练习-Lookaside测试程序
- Windows驱动开发(4) - 内核模式下的文件操作
- Windows内存管理(1)--分配内核内存 和 使用链表
- 【驱动开发】003 内存、链表、锁
- 嵌入式操作系统内核原理和开发(基于链表节点的内存分配算法)
- Linux 驱动开发中常用的内存分配方法浅析
- Windows驱动开发基础(八)内存管理
- Windows 下主程序与动态库(*.dll)释放对方分配的内存操作要点
- 嵌入式操作系统内核原理和开发(改进的链表内存分配算法)
- 驱动开发(4)内核中的内存分配和错误码
- Windows 下主程序与动态库(*.dll)释放对方分配的内存操作要点
- windows驱动开发学习笔记一双向链表LIST_ENTRY
- 动态内存分配以及链表的基本操作