Windows內核編程( 簡體 字) | |
作者:帕維爾·約西福維奇(Pavel Yosifovich) | 類別:1. -> 程式設計 -> 綜合 |
出版社:機械工業出版社 | 3dWoo書號: 54766 詢問書籍請說出此書號! 有庫存 NT售價: 595 元 |
出版日:6/1/2021 | |
頁數:320 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111684756 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章 Windows內部概覽1
1.1 進程1 1.2 虛擬內存2 1.2.1 頁狀態4 1.2.2 系統內存4 1.3 線程5 1.4 系統服務7 1.5 系統總體架構8 1.6 句柄和對象10 1.6.1 對象名稱11 1.6.2 訪問已經存在的對象13 第2章 開始內核開發15 2.1 安裝工具15 2.2 創建一個驅動程序項目16 2.3 DriverEntry和Unload例程17 2.4 部署驅動程序19 2.5 簡單的跟蹤22 2.6 練習24 2.7 總結24 第3章 內核編程基礎25 3.1 內核編程的一般準則25 3.1.1 未處理的異常26 3.1.2 終止26 3.1.3 函數返回值26 3.1.4 IRQL27 3.1.5 C++用法27 3.1.6 測試和調試28 3.2 調試構建與發布構建28 3.3 內核API29 3.4 函數和錯誤代碼30 3.5 字符串30 3.6 動態內存分配31 3.7 鏈表33 3.8 驅動程序對象35 3.9 設備對象36 3.10 總結38 第4章 驅動程序:從頭到尾39 4.1 簡介39 4.2 驅動程序初始化40 4.2.1 將信息傳遞給驅動程序41 4.2.2 客戶程序/驅動程序之間的通信協議42 4.2.3 創建設備對象44 4.3 客戶程序代碼46 4.4 Create和Close分發例程47 4.5 DeviceIoControl分發例程48 4.6 安裝與測試52 4.7 總結54 第5章 調試55 5.1 Debugging Tools for Windows 55 5.2 WinDbg簡介56 5.3 內核調試70 5.3.1 本地內核調試70 5.3.2 本地內核調試教程71 5.4 完整內核調試77 5.4.1 配置目標機78 5.4.2 配置宿主機79 5.5 內核驅動程序調試教程81 5.6 總結83 第6章 內核機制84 6.1 中斷請求級別84 6.1.1 提升和降低IRQL86 6.1.2 線程優先級與IRQL87 6.2 延遲過程調用88 6.3 異步過程調用90 6.4 結構化異常處理91 6.4.1 使用__try/__except93 6.4.2 使用__try/__finally95 6.4.3 使用C++ RAII代替__try/__finally96 6.5 系統崩潰98 6.5.1 崩潰轉儲信息100 6.5.2 分析轉儲文件103 6.5.3 系統掛起105 6.6 線程同步107 6.6.1 互鎖操作107 6.6.2 分發器對象108 6.6.3 互斥量110 6.6.4 快速互斥量113 6.6.5 信號量114 6.6.6 事件114 6.6.7 執行體資源115 6.7 高IRQL同步116 6.8 工作項目119 6.9 總結120 第7章 I/O請求包121 7.1 IRP簡介121 7.2 設備節點122 7.3 IRP和I/O棧位置126 7.4 分發例程130 7.5 訪問用戶緩沖區132 7.5.1 緩沖I/O133 7.5.2 直接I/O135 7.5.3 IRP_MJ_DEVICE_CONTROL的用戶緩沖區138 7.6 匯總:Zero驅動程序139 7.6.1 使用預編譯頭140 7.6.2 DriverEntry例程142 7.6.3 讀分發例程143 7.6.4 寫分發例程144 7.6.5 測試應用144 7.7 總結145 第8章 進程和線程通知146 8.1 進程通知146 8.2 實現進程通知149 8.2.1 DriverEntry例程151 8.2.2 處理進程退出通知152 8.2.3 處理進程創建通知154 8.3 將數據提供給用戶模式156 8.4 線程通知160 8.5 映像載入通知163 8.6 練習164 8.7 總結165 第9章 對象和注冊表通知166 9.1 對象通知166 9.1.1 操作前回調168 9.1.2 操作后回調170 9.2 進程保護者驅動程序171 9.2.1 對象通知注冊172 9.2.2 管理受保護的進程172 9.2.3 操作前回調176 9.2.4 客戶應用177 9.3 注冊表通知180 9.3.1 處理操作前通知181 9.3.2 處理操作后回調181 9.3.3 性能考慮182 9.4 實現注冊表通知182 9.4.1 處理注冊表回調183 9.4.2 修改后的客戶程序代碼185 9.5 練習187 9.6 總結187 第10章 文件系統小過濾驅動188 10.1 簡介188 10.2 裝入與卸載189 10.3 初始化191 10.3.1 操作回調注冊194 10.3.2 高度198 10.4 安裝200 10.4.1 INF文件200 10.4.2 安裝驅動程序206 10.5 處理I/O操作206 10.5.1 操作前回調207 10.5.2 操作后回調209 10.6 刪除保護驅動程序210 10.6.1 處理創建前回調212 10.6.2 處理設置信息前回調216 10.6.3 重構218 10.6.4 將驅動程序通用化221 10.6.5 測試修改后的驅動程序225 10.7 文件名227 10.7.1 文件名的各個部分228 10.7.2 RAII FLT_FILE_NAME_INFORMATION包裝器231 10.8 另一個刪除保護驅動程序232 10.8.1 處理創建前回調和設置信息前回調239 10.8.2 測試驅動程序241 10.9 上下文241 10.10 初始化I/O請求244 10.11 文件備份驅動程序246 10.11.1 創建后回調248 10.11.2 寫前回調252 10.11.3 清理后回調257 10.11.4 測試驅動程序258 10.11.5 恢復備份258 10.12 用戶模式通信260 10.12.1 創建通信端口261 10.12.2 用戶模式連接262 10.12.3 發送和接收消息263 10.12.4 增強文件備份驅動程序264 10.12.5 用戶模式客戶程序266 10.13 調試268 10.14 練習271 10.15 總結271 第11章 其他主題273 11.1 驅動程序簽名273 11.2 驅動程序驗證器276 11.3 使用原生API282 11.4 過濾驅動程序283 11.4.1 過濾驅動程序的實現285 11.4.2 附加過濾器286 11.4.3 在任意時刻附加過濾器288 11.4.4 過濾器的清理289 11.4.5 基于硬件的過濾驅動程序的更多內容290 11.5 設備監視器292 11.5.1 增加過濾設備293 11.5.2 移除過濾設備296 11.5.3 初始化和卸載297 11.5.4 處理請求298 11.5.5 測試驅動程序301 11.5.6 請求的結果305 11.6 驅動程序掛鉤307 11.7 內核庫309 11.8 總結310 在Windows系統中沒有什么比內核更強大了,但是如何編寫內核驅動程序來利用這種強大能力呢?這本書為讀者描述如何編寫Windows系統的軟件內核驅動程序。這些驅動程序不涉及硬件,而是處理系統本身:進程、線程、模塊、注冊表等等。內核代碼可用于監視重要事件,防止在需要時發生某些事件。讀者可以通過編寫各種過濾器來攔截驅動程序中感興趣的調用。
|