同步事件(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 初始...