功能:這個巨集可以確保呼叫執行緒執行在乙個允許分頁的足夠低irql級別。
引數: 無引數
返回值: 無
注意:如果irql > apc_level,則paged_code()會對系統產生乙個斷言。
1.這個巨集的呼叫必須在驅動程式開始位置,並且包含可分頁**或者可訪問分頁**
2.這個巨集定義只在驅動**執行巨集時檢查irql,如果此巨集之後提高 irql等級 ,將無法檢測改變。
3.必須使用其它 static driver verifier 和driver verifier去檢測等級,當irql在不適當的時候被提公升
4.此巨集定義只在checked builds.版本中執行
簡而言之,windows並沒有將執行在ring 0的**全部視為核心,而是區分為kernel和executive,executive可以理解為「管理層」的意思,解釋為「執行體」不合理。
其中,kernel是狹義的核心,裡面的**包括用到的資料,都是常駐在物理記憶體中的,不支援分頁機制。
而除此之外的**和資料,是支援分頁機制的,並且可以被交換到pagefile中,即並非總是在物理記憶體中的。
對於驅動來說,應該屬於後者,因此在驅動中的函式的頭部都會使用paged_code來判斷一下,
#define paged_code() paged_assert(kegetcurrentirql() <= apc_level);
#define passive_level 0 // passive release level
驅動的作用
驅動的作用 解放應用程式開發者的生產力,專人專職 由於每個硬體規格都不一樣 所以應用程式的同乙個命令在每個硬體上的處理方式也有差異 為了能讓應用程式的工作從這些繁瑣的處理方式上解放出來 我們可以為這些規格不同的硬體抽象一些一致的介面 由硬體廠商根據介面生產一些裝置驅動 借助驅動這個中間層處理這些差異...
驅動及驅動程式的作用
驅動程式 驅動程式是硬體廠商根據作業系統編寫的配置檔案,是新增到作業系統中的一小塊 其中包含有關硬體裝置的資訊。當你安裝新硬體時,驅動程式是一項不可或缺的元件。可以說沒有驅動程式,計算機中的硬體就無法工作。有了驅動程式中的這些資訊,計算機就可以與裝置進行通訊。作業系統不同,硬體的驅動程式也不同,各個...
驅動中登錄檔的作用
登錄檔主要鍵的作用 hkey local machine drivers active 所有已經載入的驅動資訊都放在該鍵下 hkey local machine drivers active 所有要device.exe 載入的驅動都放在該鍵下面 驅動主要鍵的作用 dll 指明了該驅動使用的動態庫 p...