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