//一般驅動層不使用資料結構,一般ring3層
雙向鍊錶可以將鍊錶形成乙個環.blink指標指向前乙個元素,flink指標指向下乙個元素.
typedef struct _list_entry list_entry, *plist_entry, *restricted_pointer prlist_entry;
初始化雙向鍊錶都是以乙個煉表頭作為鍊錶的第乙個元素.初始化煉表頭就是把flink和blink都指向自己,此時就是空鏈.使用initializelisthead函式.
1 #include 23 typedef struct
_item_4u;
10ulong itemdata;
11 }item,*pitem;
1213
14void singlelisttest();//
單鏈表15
void listtest();//
雙鏈表16
17void driverunload(pdriver_object driverobject);
1819
2021
2223
2425 #include "
list.h"26
27//
bp list!driverentry
28ntstatus driverentry(pdriver_object driverobject, punicode_string registerpath)
2943
4445
void
listtest()
4662
63while (!islistempty(&listhead))
6470}71
72void
singlelisttest()
7387
88while (!islistempty(&listhead))
899596}
9798
99100
void driverunload(pdriver_object driverobject)
101
ring0 程序隱藏實現
最近在學習核心程式設計,記錄一下最近的學習筆記。原理 將當前程序從eprocess結構的鍊錶中刪除 無法被 process 0 0 看見 include hideprocess.h ifdef win64 define activeprocesslinks eprocess 0x188 define...
ring0和ring3的區別
現在 核心程式和應用程式之間的本質區別。除了能用wdk編寫核心程式和閱讀一部分windows的核心 之外,我們還需要了解它們的本質是什麼,它們和我們熟悉的應用程式有什麼區別。intel的x86處理器是通過ring級別來進行訪問控制的,級別共分4層,從ring0到ring3 後面簡稱r0 r1 r2 ...
Ring0建立事件Ring3設定事件
同步事件 synchronizationevent 當事件物件為激發時,如遇到kewaitforxx等核心函式,事件物件則自動變回未激發態 通知事件 notificationevent 當事件物件為激發時,如遇到kewaitforxx等核心函式,事件物件則不會自動變回未激發態 ring0 建立事件 ...