void TestDoubleList(){
LIST_ENTRY list_head;
PLIST_ENTRY p = NULL;
int it;
InitializeListHead(&list_head);
for (int i = 0; i < 20; i++){
PMY_DATA pmd = ExAllocatePool(PagedPool, sizeof(MY_DATA));
pmd->num = i + 1;
InsertTailList(&list_head, &pmd->list);
}//向链表插入数据
for (p = list_head.Flink; p != &list_head; p = p->Flink){
PMY_DATA pmd = CONTAINING_RECORD(p, MY_DATA, list);
DbgPrint("pmd->num:%d\n", pmd->num);
}
while (!IsListEmpty(&list_head)){//释放申请的内存
PLIST_ENTRY plist = RemoveHeadList(&list_head);
PMY_DATA pmd = CONTAINING_RECORD(plist, MY_DATA, list);
ExFreePool(pmd);
}
}
wdk中使用双向链表(list)
最新推荐文章于 2020-10-08 23:16:38 发布