链表

来源:互联网 发布:线切割3b手动编程入门 编辑:程序博客网 时间:2024/06/07 13:37
#include <ntddk.h>typedef struct _MYDATASTRUCT{ULONG number;LIST_ENTRY ListEntry;}MYDATASTRUCT,*PMYDATASTRUCT;void Unload(IN PDRIVER_OBJECT DriverObject);void LinkListTest(void);#ifdef __cplusplusextern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING  RegistryPath);#endifNTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING  RegistryPath){#if DBG_asm int 3#endifunsigned i;DbgPrint("Hello from 1!\n");DriverObject->DriverUnload =Unload;LinkListTest();return STATUS_SUCCESS;}void Unload(IN PDRIVER_OBJECT DriverObject){DbgPrint("Goodbye from 1!\n");}void LinkListTest(void){LIST_ENTRY linkListHead;//初始化链表InitializeListHead(&linkListHead);//在链表中插入10个元素PMYDATASTRUCT pData=NULL;ULONG i=0;for (i=0;i<10;i++){pData=(PMYDATASTRUCT)ExAllocatePool(PagedPool,sizeof(MYDATASTRUCT));pData->number=i;InsertHeadList(&linkListHead,&pData->ListEntry);}//从链表中取出,并显示while (!IsListEmpty(&linkListHead)){PLIST_ENTRY pEntry=RemoveTailList(&linkListHead);pData=CONTAINING_RECORD(pEntry,MYDATASTRUCT,ListEntry);DbgPrint(TEXT("%d\n"),pData->number);ExFreePool(pData);}return;}

0 0
原创粉丝点击