Java教程

Windows内核--使用内核链表.demo

本文主要是介绍Windows内核--使用内核链表.demo,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
typedef struct _MYDATA {
    LIST_ENTRY ListEntry;
    ULONG X;
    ULONG Y;
}MYDATA, * PMYDATA;

void LinkListTest()
{
    LIST_ENTRY    linkListHead;//链表头
    InitializeListHead(&linkListHead);//初始化链表
    PMYDATA pData;
    ULONG i = 0;
    KdPrint(("Begin insert to link list\n"));
    for (i = 0; i < 10; i++)
    {
        //分配分页内存
        pData = (PMYDATA)ExAllocatePool(PagedPool, sizeof(MYDATA));
        //给结构体赋值
        pData->X = i;
        pData->Y = i + 1 * 10;
        //从头部插入到链表中
        InsertHeadList(&linkListHead, &pData->ListEntry);
    }
    DbgPrint("Remove Link list\n");
    while (!IsListEmpty(&linkListHead))
    {
        PLIST_ENTRY pEntry = RemoveTailList(&linkListHead);//将链表的尾节点移除链表,返回一个PLIST_ENTRY变量
        pData = CONTAINING_RECORD(pEntry, MYDATA, ListEntry);//通过结构体的某一个变量的地址和结构体里成员的名称来拿到结构体的地址
        DbgPrint("%d,%d\n",pData->X,pData->Y);
        ExFreePool(pData);
    }
}

 

这篇关于Windows内核--使用内核链表.demo的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!