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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.