#include <ntddk.h>
typedef struct _MYDATASTRUCT
{
ULONG number;
LIST_ENTRY ListEntry;
}MYDATASTRUCT,*PMYDATASTRUCT;
void Unload(IN PDRIVER_OBJECT DriverObject);
void LinkListTest(void);
#ifdef __cplusplus
extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);
#endif
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
#if DBG
_asm int 3
#endif
unsigned 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;
}
链表
最新推荐文章于 2024-06-14 09:15:00 发布