wdk中使用雙向鏈表(list)

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