登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 26|回复: 0

驱动开发与系统原理-驱动中的双向链表

[复制链接]

56

主题

-7

回帖

66

积分

网站编辑

积分
66
发表于 4 天前 | 显示全部楼层 |阅读模式
  1. #include<ntifs.h>

  2.   VOID DriverUnload(PDRIVER_OBJECT pDriver) {
  3.     UNREFERENCED_PARAMETER(pDriver);//对没引用的参数进行处理

  4.     DbgPrint("Unload success!\n");

  5.   }

  6.   NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath) {//驱动对象指针,注册表路径 DriverEntry不能改
  7.     //指明该参数未被使用,避免被编译器警告
  8.     UNREFERENCED_PARAMETER(pRegPath);
  9.     //注册卸载函数,作用是指定用哪个函数来完成卸载
  10.     pDriverObject->DriverUnload = DriverUnload;

  11.     //定义结构
  12.       typedef struct _TestListEntry{
  13.       int m_data;
  14.       LIST_ENTRY m_ListEntry;
  15.     }TestListEntry,*PTestListEntry;

  16.     //声明一个头结点
  17.       LIST_ENTRY ListHeader = { 0 };
  18.   
  19.     //初始化头结点
  20.       InitializeListHead(&ListHeader);

  21.     //声明带数据的结构
  22.       TestListEntry EntryA = { 0 };
  23.       TestListEntry EntryB = { 0 };
  24.       TestListEntry EntryC = { 0 };
  25.       TestListEntry EntryD = { 0 };
  26.   
  27.     //给数据成员赋值
  28.       EntryA.m_data = 11;
  29.       EntryB.m_data = 22;
  30.       EntryC.m_data = 33;
  31.       EntryD.m_data = 44;
  32.   
  33.     //插入数据
  34.       InsertHeadList(&ListHeader, &EntryA.m_ListEntry);//头插法
  35.       InsertTailList(&ListHeader, &EntryB.m_ListEntry);//尾插法
  36.       InsertTailList(&ListHeader, &EntryC.m_ListEntry);
  37.       InsertHeadList(&ListHeader, &EntryD.m_ListEntry);

  38.     //循环遍历链表
  39.       PLIST_ENTRY pListEntry=NULL;
  40.       //删除节点
  41.       RemoveHeadList(&ListHeader);//删除第一个
  42.       RemoveTailList(&ListHeader);//删除最后一个
  43.       pListEntry = ListHeader.Flink;
  44.       while (pListEntry!=&ListHeader)
  45.       {
  46.         PTestListEntry pTestEntry = CONTAINING_RECORD(pListEntry, TestListEntry, m_ListEntry);
  47.         DbgPrint("%d", pTestEntry->m_data);
  48.         pListEntry = pListEntry->Flink;
  49.       }

  50.     return STATUS_SUCCESS;//状态成功0,一定要有返回值
  51.   }
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2025-1-24 19:31 , Processed in 0.051926 second(s), 25 queries .

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表