API
InitializeListHead
IsListEmpty
InsertHeadList
InsertTailList
RemoveHeadList
RemoveTailList
CONTANING_RECORD
使用
typedef struct _MYDATASTRUCT{
UNLONG number;
LIST_ENTRY ListEntry;
}MYDATASTRUCT, *PMYDATASTRUCT
#pragma INITCODE
VOID Test(){
//初始化链表
LIST_ENTRY linkListHead;
InitializeListHead(&linkListHead);
//插入操作
PMYDATASTRUCT pData;
ULONG i = 0;
for(i =0 ;i< 10; i++){
pData = ExAllocatePool(PagePool, sizeof(MYDATASTRUCT));
pData->number = i;
InsertHeadList(&linkListHead, &pData->ListEntry);
}
//取出并显示
while(!IsListEmpty(&linkListHead){
PLIST_ENTRY pEntry = RemoveTailList(&linkListHead);
pData = CONTAINING_RECORD(pEntry,MYDATASTRUCT,listEntry);
ExFreePool(pData);
}
}