链表的问题...

嬴政爱天下 2011-02-18 03:46:53
#include <ntddk.h>
#define MEM_TAG 'jklk'
typedef struct
{
LIST_ENTRY List_entry;
ULONG Data;
}MY_LIST,*PMY_LIST;

LIST_ENTRY My_listHead;//声明一个结构

void Unload(IN PDRIVER_OBJECT DriverObject)
{
KdPrint(("驱动卸载成功!\n"));
}


VOID Listinit()
{

InitializeListHead(&My_listHead);//初始化
}

NTSTATUS MyAppendData(ULONG AppendValue)
{
PMY_LIST my_AppendList=(PMY_LIST)ExAllocatePoolWithTag(PagedPool,sizeof(MY_LIST),
MEM_TAG);
if(my_AppendList==NULL)
{
KdPrint(("分配空间失败\n"));
return -1;
}
else
{
KdPrint(("分配空间成功\n"));
}
my_AppendList->Data=AppendValue;
InsertHeadList(&My_listHead,(PLIST_ENTRY)my_AppendList);
ExFreePool(my_AppendList);

return STATUS_SUCCESS;

}

void ShowList()
{
PLIST_ENTRY p=NULL;
PMY_LIST elem;
KdPrint(("Show List start\n"));
for( p=My_listHead.Flink;p!=My_listHead.Flink;p=p->Flink)
{

elem=CONTAINING_RECORD(My_listHead.Flink,MY_LIST,List_entry);
}


KdPrint(("\n\nValue Is%x \n",elem->Data));

}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegPath)
{
ULONG value;
value=0;
KdPrint(("驱动加载成功!\n"));
Listinit();
for(value=0;value<10;value++)
MyAppendData(value);
ShowList();
DriverObject->DriverUnload=Unload;
return STATUS_SUCCESS;
}



哪位大侠帮忙改一下这段链表,该如何让他将 10个数全部都显示出来的呀?
晕死了,试了好多次他只能显示一个数值,我看的是天书夜读他上面的例子仿写的..
但搞 了半天还是没显示出来,谢谢哪位帮助一下哈。。
...全文
38 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
马六甲海盗 2011-02-22
在MyAppendData里面错了,
my_AppendList->Data=AppendValue;
InsertHeadList(&My_listHead,(PLIST_ENTRY)my_AppendList);
ExFreePool(my_AppendList);

这里为什么要把分配的内存free掉??你仔细想想吧
回复
嬴政爱天下 2011-02-18
错了,是放再循环体内的话,一个数字都打印不出来..
回复
嬴政爱天下 2011-02-18
[Quote=引用 1 楼 phshentu 的回复:]

在showlist函数里,把kdprint那句移到循环里面。
for( p=My_listHead.Flink;p!=My_listHead.Flink;p=p->Flink)
{
elem=CONTAINING_RECORD(My_listHead.Flink,MY_LIST,List_entry);
KdPrint(("\n\nValue Is%x \n",elem……
[/Quote]
那样的话,也只能打印出来一个9啊..
回复
马六甲海盗 2011-02-18
在showlist函数里,把kdprint那句移到循环里面。
for( p=My_listHead.Flink;p!=My_listHead.Flink;p=p->Flink)
{
elem=CONTAINING_RECORD(My_listHead.Flink,MY_LIST,List_entry);
KdPrint(("\n\nValue Is%x \n",elem->Data));
}



回复
相关推荐
发帖
驱动开发/核心开发
创建于2007-09-28

2.1w+

社区成员

硬件/嵌入开发 驱动开发/核心开发
申请成为版主
帖子事件
创建了帖子
2011-02-18 03:46
社区公告
暂无公告