|
- #include<ntifs.h>
- VOID DriverUnload(PDRIVER_OBJECT pDriver) {
- UNREFERENCED_PARAMETER(pDriver);//对没引用的参数进行处理
- DbgPrint("Unload success!\n");
- }
- NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath) {//驱动对象指针,注册表路径 DriverEntry不能改
- //指明该参数未被使用,避免被编译器警告
- UNREFERENCED_PARAMETER(pRegPath);
- //注册卸载函数,作用是指定用哪个函数来完成卸载
- pDriverObject->DriverUnload = DriverUnload;
- //定义结构
- typedef struct _TestListEntry{
- int m_data;
- LIST_ENTRY m_ListEntry;
- }TestListEntry,*PTestListEntry;
- //声明一个头结点
- LIST_ENTRY ListHeader = { 0 };
-
- //初始化头结点
- InitializeListHead(&ListHeader);
- //声明带数据的结构
- TestListEntry EntryA = { 0 };
- TestListEntry EntryB = { 0 };
- TestListEntry EntryC = { 0 };
- TestListEntry EntryD = { 0 };
-
- //给数据成员赋值
- EntryA.m_data = 11;
- EntryB.m_data = 22;
- EntryC.m_data = 33;
- EntryD.m_data = 44;
-
- //插入数据
- InsertHeadList(&ListHeader, &EntryA.m_ListEntry);//头插法
- InsertTailList(&ListHeader, &EntryB.m_ListEntry);//尾插法
- InsertTailList(&ListHeader, &EntryC.m_ListEntry);
- InsertHeadList(&ListHeader, &EntryD.m_ListEntry);
- //循环遍历链表
- PLIST_ENTRY pListEntry=NULL;
- //删除节点
- RemoveHeadList(&ListHeader);//删除第一个
- RemoveTailList(&ListHeader);//删除最后一个
- pListEntry = ListHeader.Flink;
- while (pListEntry!=&ListHeader)
- {
- PTestListEntry pTestEntry = CONTAINING_RECORD(pListEntry, TestListEntry, m_ListEntry);
- DbgPrint("%d", pTestEntry->m_data);
- pListEntry = pListEntry->Flink;
- }
- return STATUS_SUCCESS;//状态成功0,一定要有返回值
- }
复制代码
|
|