Ring0建立事件Ring3設定事件

2022-07-25 05:18:09 字數 1308 閱讀 8822

同步事件(synchronizationevent)

當事件物件為激發時,如遇到kewaitforxx等核心函式,事件物件則自動變回未激發態

通知事件(notificationevent)

當事件物件為激發時,如遇到kewaitforxx等核心函式,事件物件則不會自動變回未激發態

ring0(建立事件).h

1 #include 234

#define event_name l"\\basenamedobjects\\ring0kernelevent"

56 void driverunload(pdriver_object driverobject);

ring0(建立事件).c

1 #include "

ring0(建立事件).h"2

34pkevent __event;

5pkevent __eventhandle;67

ntstatus driverentry(pdriver_object driverobject, punicode_string registerpath)832

3334

void driverunload(pdriver_object driverobject)

3547

48 }

ring3(設定事件).cpp

1

//ring3(設定事件).cpp : 定義控制台應用程式的入口點。2//

34 #include "

stdafx.h

"5 #include 6 #include 7

8using

namespace

std;910

intmain()

1125

break;26

27}28 cout << "

ring3的等待

"<29while (1)30

57}58continue;59

}6061if (index == 0)62

6566

67if (index ==wait_failed)

6871

72 sleep(1

);73

747576}

7778 cout << "

input anykey to exit

"<7980

getchar();

8182

if (eventhandle !=null)

8388

return0;

89 }

ring0和ring3的區別

現在 核心程式和應用程式之間的本質區別。除了能用wdk編寫核心程式和閱讀一部分windows的核心 之外,我們還需要了解它們的本質是什麼,它們和我們熟悉的應用程式有什麼區別。intel的x86處理器是通過ring級別來進行訪問控制的,級別共分4層,從ring0到ring3 後面簡稱r0 r1 r2 ...

Ring0和Ring3如何進行通訊

可以用這個底層函式建立乙個與ring3進行通訊的控制裝置物件。使用這個函式需要注意,它生成的裝置物件具有預設的安全屬性,需要有管理員許可權的程序才可以開啟這個裝置物件。對於我們用來通訊的控制裝置來說,肯定是需要乙個裝置名稱的,上面我們還提到,裝置名是無法直接被使用者層所開啟的,需要一些特殊的操作,而...

Ring0 鍊錶

一般驅動層不使用資料結構,一般ring3層 雙向鍊錶可以將鍊錶形成乙個環.blink指標指向前乙個元素,flink指標指向下乙個元素.typedef struct list entry list entry,plist entry,restricted pointer prlist entry 初始...