工作管理員 顯示 錯誤的問題,透過圖書和論文來找解法和答案更準確安心。 我們挖掘到下列精選懶人包

工作管理員 顯示 錯誤的問題,我們搜遍了碩博士論文和台灣出版的書籍,推薦張銀奎寫的 軟件調試(第2版)卷2:Windows平臺調試(上下) 和(美)馬克·拉希諾維奇(美)大衛·A.所羅門(美)艾力克斯·伊納蘇的 深入解析Windows操作系統.下冊(第6版)都 可以從中找到所需的評價。

這兩本書分別來自人民郵電 和電子工業所出版 。

國立宜蘭大學 電機資訊學院碩士在職專班 莊鎮嘉所指導 陳柏升的 智慧化地磅站之研究-以蘇花改為例 (2021),提出工作管理員 顯示 錯誤關鍵因素是什麼,來自於蘇花改公路、尺寸估測、YOLO、影像測量、物件偵測。

而第二篇論文明志科技大學 機電工程研究所 黃樹林所指導 蕭志豪的 數位監控系統之視訊多媒體資料庫實作與研究 (2008),提出因為有 多媒體資料庫、數位監控系統、MySQL、Metadata的重點而找出了 工作管理員 顯示 錯誤的解答。

接下來讓我們看這些論文和書籍都說些什麼吧:

除了工作管理員 顯示 錯誤,大家也想知道這些:

軟件調試(第2版)卷2:Windows平臺調試(上下)

為了解決工作管理員 顯示 錯誤的問題,作者張銀奎 這樣論述:

本書是國內當前集中介紹軟體調試主題的權威著作。本書第2卷分為5篇,共30章,主要圍繞Windows系統展開介紹。第一篇(第1~4章)介紹Windows系統簡史、進程和執行緒、架構和系統部件,以及Windows系統的啟動過程,既從空間角度講述Windows的軟體世界,也從時間角度描述Windows世界的搭建過程。第二篇(第5~8章)描述特殊的程序呼叫、墊片、託管世界和Linux子系統。第三篇(第9~19章)深入探討使用者態調試模型、使用者態調試過程、中斷和異常管理、未處理異常和JIT調試、硬錯誤和藍屏、錯誤報告、日誌、事件追蹤、WHEA、內核調試引擎和驗證機制。第四篇(第20~25章)從編譯和編

譯期檢查、運行時庫和運行期檢查、棧和函式呼叫、堆和堆檢查、異常處理代碼的編譯、調試符號等方面概括編譯器的調試支持。第五篇(第26~30章)首先縱覽調試器的發展歷史、工作模型和經典架構,然後分別討論集成在Visual Studio和Visual Studio(VS)Code中的調試器,最後深度解析WinDBG調試器的歷史、結構和用法。 本書理論與實踐結合,不僅涵蓋了相關的技術背景知識,還深入研討了大量具有代表性的技術細節,是學習軟體調試技術的珍貴資料。 本書適合所有從事軟體發展工作的讀者閱讀,特別適合從事軟體發展、測試和支持的技術人員閱讀。 張銀奎,國內知名的調試技術專家。

畢業于上海交通大學資訊與控制工程系,長期從事軟體發展和研究工作,曾在英特爾工作13年,對 IA-32 架構、作業系統內核、驅動程式,尤其是對軟體調試有較深入的研究。著有《軟體調試》《格蠹彙編》等暢銷、常銷技術圖書,格蠹科技(xedge.ai)創始人,高端調試網站(advdbg.org)創建者。翻譯(合譯)作品有《二十一世紀機器人》《觀止——微軟創建NT 和未來的奪命狂奔》《資料採擷原理》《機器學習》《人工智慧:複雜問題求解的結構和策略》等。 第一篇 大 局 觀 第 1 章 Windows 系統簡史 1.1 源於DOS 1.2 功在NT 1.3 Windows 2000 彰顯實

力 1.4 巔峰之作:Windows XP 和Windows Server 2003 1.5 Windows Vista 折戟沙場 1.6 Windows 7 享利中興 1.7 Windows 8 革新受挫 1.8 Windows 10 何去何從 1.9 本章總結 17 參考資料 第 2 章 進程和執行緒 2.1 任務 2.2 進程資源 2.3 進程空間 2.3.1 32 位元進程空間 2.3.2 64 位元進程空間 2.4 EPROCESS 結構 2.5 PEB.... 28 2.6 核心模式和使用者模式 2.6.1 訪問模式 2.6.2 使用INT 2E 切換到核心模式 2.6.3 快速系

統調用 2.6.4 逆向調用 2.6.5 實例分析 2.7 執行緒 2.7.1 ETHREAD 2.7.2 TEB 2.8 WoW 進程 2.8.1 架構 2.8.2 工作過程 2.8.3 註冊表重定向 2.8.4 註冊表反射 2.8.5 檔案系統重定向 2.9 創建進程 2.10 最小進程和Pico 進程 2.10.1 最小進程 2.10.2 Pico進程 2.11 工作管理員 2.12 本章總結 參考資料 第3 章 架構和系統部件 3.1 系統概覽 3.1.1 內核空間 3.1.2 用戶空間 3.2 內核和HAL 模組 3.2.1 內核文件 3.2.2 HAL文件 3.3 空閒進程 3.4

系統進程 3.5 內核空間的其他模組 3.6 NTDLL.DLL 3.6.1 角色 3.6.2 調用系統服務的樁函數 3.6.3 映射檔載入器 3.6.4 運行時庫 3.6.5 其他功能 3.7 環境子系統 3.8 原生進程 3.8.1 特點 3.8.2 SMSS 3.8.3 CSRSS 3.9 本章總結 參考資料 第4 章 啟動過程 4.1 BootMgr 4.1.1 工作過程 4.1.2 調試方法 4.2 WinLoad 4.3 內核初始化 4.3.1 NT 的入口函數 4.3.2 內核初始化 4.4 執行體的階段0 初始化 4.4.1 總體過程 4.4.2 創建特殊進程 4.5 執行體

的階段1 初始化 4.5.1 Phase1Initialization 4.5.2 喚醒其他CPU 4.5.3 非啟動CPU 的起步路線 4.5.4 漫長的I/O 初始化 4.5.5 更新進度 4.6 創建用戶空間 4.6.1 創建會話管理器進程 4.6.2 建立環境子系統 4.6.3 創建窗口站和桌面 4.6.4 用戶登錄 4.7 本章總結 參考資料 第二篇 探 微 第5 章 特殊的程式呼叫 5.1 非同步程式呼叫 5.2 插斷要求級別 5.2.1 設計初衷 5.2.2 基本原理 5.2.3 析疑 5.3 延遲程式呼叫 5.3.1 使用模式 5.3.2 黏滯在DPC 5.4 本地程式呼叫

5.5 遠程程式呼叫 5.5.1 工作模型 5.5.2 RPC 子系統服務 5.5.3 端點和協議串 5.5.4 蜂巢 5.5.5 案例和調試方法 5.6 本章總結 參考資料 第6 章 墊片 6.1 墊片資料庫 6.1.1 認識SDB檔 6.1.2 定制的SDB文件 6.1.3 修補模式 6.2 AppHelp 6.2.1 SDB 功能 6.2.2 墊片引擎 6.2.3 AD 掛鉤 6.2.4 穿山甲掛鉤 6.3 墊片動態庫 6.3.1 AcLayers.DLL 6.3.2 AcGenral.DLL 和AcSpecfc.DLL 6.3.3 其他墊片模組 6.4 應用程式墊片的工作過程 6.4.

1 在父進程中準備墊片資料 6.4.2 在新進程中載入和初始化墊片引擎 6.4.3 載入墊片模組 6.4.4 落實掛鉤 6.4.5 執行墊片 6.5 內核墊片引擎 6.5.1 資料和配置 6.5.2 初始化 6.5.3 KSE 墊片結構 6.5.4 註冊墊片 6.5.5 部署墊片 6.5.6 執行墊片 6.6 本章總結 參考資料 第7 章 託管世界 7.1 簡要歷史 7.2 宏偉藍圖 7.3 類和方法表 7.4 輔助調試執行緒 7.4.1 託管調試模型 7.4.2 RCThread 7.4.3 刺探執行緒 7.5 CLR4 的調試模型重構 7.6 SOS 擴展 7.6.1 載入SOS 7.6.

2 設置中斷點 7.6.3 簡要原理 7.7 本章總結 參考資料 第8 章 Linux子系統 8.1 源於Drawbridge 8.2 融入NT 8.3 總體架構 8.4 子系統內核模組 8.5 微軟版Linux 內核 8.6 Linux 子系統伺服器 8.7 WSL 啟動器 8.8 交叉開發 8.9 WSL2 8.10 本章總結 參考資料 第三篇 作業系統的調試支援 第9 章 使用者態調試模型 9.1 概覽 9.1.1 參與者 9.1.2 調試子系統 9.1.3 調試事件驅動 9.2 採集調試消息 9.2.1 消息常量 9.2.2 進程和執行緒創建消息 9.2.3 進程和執行緒退出消息 9

.2.4 模組映射和反映射消息 9.2.5 異常消息 9.3 發送調試消息 9.3.1 調試消息結構 9.3.2 DbgkpSendApiMessage函數 9.3.3 控制被調試進程 9.4 調試子系統伺服器(Windows XP 之後) 9.4.1 DebugObject 9.4.2 創建調試對象 9.4.3 設置調試對象 9.4.4 傳遞調試消息 9.4.5 杜撰的調試消息 9.4.6 清除調試對象 9.4.7 內核服務 9.4.8 全景 9.5 調試子系統伺服器(Windows XP 之前) 9.5.1 概覽 9.5.2 Windows 會話管理器 9.5.3 Windows 環境子系

統伺服器進程 9.5.4 調用CSRSS 的服務 9.5.5 CsrCreateProcess 服務 9.5.6 CsrDebugProcess 服務 9.6 比較兩種模型 9.6.1 Windows 2000 調試子系統的優點 9.6.2 Windows 2000 調試子系統的安全問題 9.6.3 Windows XP 的調試模型的優點 9.6.4 Windows XP 引入的新調試功能 9.7 NTDLL.DLL 中的調試支援常式 9.7.1 DbgUi 函數 9.7.2 DbgSs 函數 9.7.3 Dbg 函數 9.8 調試API 9.9 本章總結 參考資料 第10 章 用戶態調試過程

10.1 調試器進程 10.1.1 執行緒模型 10.1.2 調試器的工作執行緒 10.1.3 DbgSsReserved 欄位 10.2 被調試進程 10.2.1 特徵 10.2.2 DebugPort 欄位 10.2.3 BeingDebugged 欄位 10.2.4 觀察DebugPort 欄位和BeingDebugged 欄位 10.2.5 調試會話 10.3 從調試器中啟動被偵錯工具 10.3.1 CreateProcess API 10.3.2 第 一批調試事件 10.3.3 初始中斷點 10.3.4 自動啟動調試器 10.4 附加到已經啟動的進程中 10.4.1 DebugAc

tiveProcess API 10.4.2 示例:TinyDbgr 程式 10.5 處理調試事件 10.5.1 DEBUG_EVENT 結構 10.5.2 WaitForDebugEvent API 10.5.3 調試事件迴圈 10.5.4 回復調試事件 10.5.5 定制調試器的事件處理方式 10.6 中斷到調試器 10.6.1 初始中斷點 10.6.2 程式設計時加入中斷點 10.6.3 通過調試器設置中斷點 10.6.4 通過遠端執行緒觸發中斷點異常 10.6.5 在執行緒當前執行位置設置中斷點 10.6.6 動態調用遠端函數 10.6.7 掛起中斷 10.6.8 調試快速鍵(F12

鍵) 10.6.9 窗口更新 10.7 輸出調試字串 10.7.1 發送調試資訊 10.7.2 使用調試器接收調試資訊 10.7.3 使用工具接收調試資訊 10.8 終止調試會話 10.8.1 被調試進程退出 10.8.2 調試器進程退出 10.8.3 分離被調試進程 10.8.4 退出時分離 10.9 本章總結 參考資料 第 11 章 中斷和異常管理 11.1 中斷描述符表 11.1.1 概況 11.1.2 門描述符 11.1.3 執行中斷和異常處理函數 11.1.4 IDT 一覽 11.2 異常的描述和登記 11.2.1 EXCEPTION_RECORD結構 11.2.2 登記CPU 異常

11.2.3 登記軟體異常 11.3 異常分發過程 11.3.1 KiDispatchException 函數 11.3.2 內核態異常的分發過程 11.3.3 用戶態異常的分發過程 11.3.4 歸納 11.4 結構化異常處理 11.4.1 SEH 簡介 11.4.2 SHE 機制的終結處理 11.4.3 SEH 機制的異常處理 11.4.4 過濾運算式 11.4.5 異常處理塊 11.4.6 嵌套使用終結處理和異常處理 11.5 向量化異常處理 11.5.1 登記和註銷 11.5.2 調用結構化異常處理器 11.5.3 示例 11.6 本章總結 參考資料 第 12 章 未處理異常和JIT

調試 12.1 簡介 12.2 默認的異常處理器 12.2.1 BaseProcessStart 函數中的結構化異常處理器 12.2.2 編譯器插入的SEH 處理器 12.2.3 基於信號的異常處理 12.2.4 實驗:觀察默認的異常處理器 12.2.5 BaseThreadStart 函數中的結構化異常處理器 12.3 未處理異常過濾函數 12.3.1 Windows XP 之前的異常處理機制 12.3.2 Windows XP 中的異常處理機制 12.4 “應用程式錯誤”對話方塊 12.4.1 用HardError 機制提示應用程式錯誤 12.4.2 使用ReportFault API

提示應用程式錯誤 12.5 JIT 調試和Dr. Watson 12.5.1 配置JIT 調試器 12.5.2 啟動JIT 調試器 12.5.3 自己編寫JIT 調試器 12.6 頂層異常過濾函數 12.6.1 註冊 12.6.2 C 運行時庫的頂層過濾函數 12.6.3 執行 12.6.4 調試 12.7 Dr. Watson 12.7.1 配置和查看模式 12.7.2 設置為默認的JIT 調試器 12.7.3 JIT 調試模式 12.8 DRWTSN32 的日誌檔 12.8.1 異常資訊 12.8.2 系統資訊 12.8.3 任務列表 12.8.4 模組清單 12.8.5 執行緒狀態 12

.8.6 函式呼叫序列 12.8.7 原始棧資料 12.9 用戶態轉儲檔 12.9.1 檔案格式概覽 12.9.2 資料流程 12.9.3 產生轉儲檔 12.9.4 讀取轉儲文件 12.9.5 利用轉儲檔分析問題 12.10 本章總結 參考資料 第 13 章 硬錯誤和藍屏 13.1 硬錯誤提示 13.1.1 缺盤錯誤 13.1.2 NtRaiseHardError 13.1.3 ExpRaiseHardError 13.1.4 CSRSS 中的分發過程 13.2 藍屏終止 13.2.1 簡介 13.2.2 發起和產生過程 13.2.3 診斷藍屏錯誤 13.2.4 手工觸發藍屏 13.3 系統轉

儲檔 13.3.1 分類 13.3.2 檔案格式 13.3.3 產生方法 13.4 分析系統轉儲檔 13.4.1 初步分析 13.4.2 執行緒和棧回溯 13.4.3 陷阱幀 13.4.4 自動分析 13.5 輔助的錯誤提示方法 13.5.1 MessageBeep 13.5.2 Beep 函數 13.5.3 閃動窗口 13.6 配置錯誤提示機制 13.6.1 SetErrorMode API 13.6.2 IoSetThreadHardErrorMode 13.6.3 藍屏後自動重啟 13.7 防止濫用錯誤提示機制 13.8 本章總結 參考資料 第 14 章 錯誤報告 14.1 WER 1.

0 14.1.1 用戶端 14.1.2 報告模式 14.1.3 傳輸方式 14.2 系統錯誤報告 14.3 WER 伺服器端 14.3.1 WER 服務 14.3.2 錯誤報告分類方法 14.3.3 報告回應 14.4 WER 2.0 14.4.1 模組變化 14.4.2 創建報告 14.4.3 提交報告 14.4.4 典型應用 14.5 CER 14.6 本章總結 參考資料 第 15 章 日誌 15.1 日誌簡介 15.2 ELF 的架構 15.2.1 ELF 的日誌檔 15.2.2 事件源 15.2.3 ELF 服務 15.3 ELF 的資料組織350 15.3.1 日誌記錄 15.3.2

添加日誌記錄 15.3.3 API 一覽 15.4 查看和使用ELF 日誌 15.5 CLFS 的組成和原理 15.5.1 組成 15.5.2 存儲結構 15.5.3 LSN 15.6 CLFS 的使用方法 15.6.1 創建日誌檔 15.6.2 添加CLFS 容器 15.6.3 創建編組區 15.6.4 添加日誌記錄 15.6.5 讀日誌記錄 15.6.6 查詢資訊 15.6.7 管理和備份 15.7 本章總結 參考資料 第 16 章 事件追蹤 16.1 簡介 16.2 ETW 的架構 16.3 提供ETW消息 16.4 控制ETW會話 16.5 消耗ETW消息 16.6 格式描述 16.

6.1 MOF文件 16.6.2 WPP 16.7 NT 內核記錄器 16.7.1 觀察NKL的追蹤事件 16.7.2 編寫代碼控制NKL 16.7.3 NKL 的實現 16.8 Global Logger Session 16.8.1 啟動GLS 會話 16.8.2 配置GLS 16.8.3 在驅動程式中使用GLS 16.8.4 自動記錄器 16.8.5 BootVis 工具 16.9 Crimson API 16.9.1 發佈事件 16.9.2 消耗事件 16.9.3 格式描述 16.9.4 收集和觀察事件 16.9.5 Crimson API 的實現 16.10 本章總結 參考資料 第

17 章 WHEA 17.1 目標、架構和PSHED.DLL 17.1.1 目標 17.1.2 架構 17.1.3 PSHED.DLL 17.2 錯誤源 17.2.1 標準的錯誤源 17.2.2 通過ACPI 表來定義錯誤源 17.2.3 通過PSHED 外掛程式來報告錯誤源 17.3 錯誤處理過程 17.3.1 WHEA_ERROR_PACKET結構 17.3.2 處理過程 17.3.3 WHEA_ERROR_RECORD結構 17.3.4 固件優先模式 17.4 錯誤持久化 17.4.1 ERST 17.4.2 工作過程 17.5 注入錯誤 17.6 本章總結 參考資料 第 18 章 內核

調試引擎 18.1 概覽 18.1.1 KD 18.1.2 角色 18.1.3 組成 18.1.4 模組檔 18.1.5 版本差異 18.2 連接 18.2.1 序列埠 18.2.2 1394 18.2.3 USB 2.0 18.2.4 管道 18.2.5 選擇連接方式 18.2.6 解決連接問題 18.3 啟用 18.3.1 BOOT.INI 18.3.2 BCD 18.3.3 高級啟動選項 18.4 初始化 18.4.1 Windows 系統啟動過程概述 18.4.2 第 一次調用KdInitSystem 18.4.3 第二次調用KdInitSystem 18.4.4 通信擴展模組的階段1

初始化 18.5 內核調試協議 18.5.1 數據包 18.5.2 報告狀態變化 18.5.3 訪問目標系統 18.5.4 恢復目標系統執行 18.5.5 版本 18.5.6 典型對話過程 18.5.7 KdTalker 18.6 與內核交互 18.6.1 中斷到調試器 18.6.2 KdpSendWaitContinue 18.6.3 退出調試器 18.6.4 輪詢中斷包 18.6.5 接收和報告異常事件 18.6.6 調試服務 18.6.7 列印調試資訊 18.6.8 載入調試符號 18.6.9 更新系統檔 18.7 建立和維持連接 18.7.1 最早的調試機會 18.7.2 初始中斷點

18.7.3 斷開和重新建立連接 18.8 本地內核調試 18.8.1 LiveKD 18.8.2 Windows 系統自己的本地內核調試支援 18.8.3 安全問題 18.9 本章總結 參考資料 第 19 章 驗證機制 19.1 簡介 19.1.1 驅動程式驗證器 19.1.2 應用程式驗證器 19.1.3 WHQL 測試 19.2 驅動驗證器的工作原理 19.2.1 設計原理 19.2.2 初始化 19.2.3 掛接驗證函數 19.2.4 驗證函數的執行過程 19.2.5 報告驗證失敗 19.3 使用驅動驗證器 19.3.1 驗證項目 19.3.2 啟用驅動驗證器 19.3.3 開始驗證

19.3.4 觀察驗證情況 19.3.5 WinDBG 的擴展命令 19.4 應用程式驗證器的工作原理 19.4.1 原理和組成 19.4.2 初始化 19.4.3 掛接API 19.4.4 驗證函數的執行過程 19.4.5 報告驗證失敗 19.4.6 驗證停頓 19.5 使用應用程式驗證器 19.5.1 應用驗證管理器 19.5.2 驗證項目 19.5.3 配置驗證屬性 19.5.4 配置驗證停頓 19.5.5 程式設計調用 19.5.6 調試擴展 19.6 本章總結 參考資料 第四篇 編譯器的調試支持 第 20 章 編譯和編譯期檢查 20.1 程式的構建過程 20.1.1 連結器 20.

1.2 載入器 20.2 編譯 20.2.1 前端 20.2.2 後端 20.3 Visual C++編譯器 20.3.1 MSVC 簡史 20.3.2 MSVC6 20.3.3 VS7 和VS8 20.3.4 構建程式 20.3.5 調試 20.4 編譯錯誤和警告 20.4.1 錯誤ID 和來源 20.4.2 編譯警告 20.5 編譯期檢查 20.5.1 未初始化的區域變數 20.5.2 類型不匹配 20.5.3 使用編譯器指令 20.5.4 標注 20.5.5 驅動程式靜態驗證器 20.6 標準標注語言 20.6.1 緩衝區標注符 20.6.2 高級標注符 20.7 本章總結 參考資料.

第 21 章 運行時庫和運行期檢查 21.1 C/C++運行時庫 21.1.1 C 運行時庫 21.1.2 C++標準庫 21.2 連結運行時庫 21.2.1 靜態連結和動態連結 21.2.2 lib 文件 21.3 運行時庫的初始化和清理 21.3.1 介入方法 21.3.2 初始化 21.3.3 多個運行時庫實例 21.4 運行期檢查 21.4.1 自動的運行期檢查 21.4.2 斷言 21.4.3 _RPT 宏 21.5 報告運行期檢查錯誤 21.5.1 _CrtDbgReport 21.5.2 _CrtSetReportMode 21.5.3 _CrtSetReportFile 21.

5.4 _CrtSetReportHook 493 21.5.5 _CrtSetReportHook2 21.5.6 使用其他函數報告RTC錯誤 21.6 本章總結 參考資料 第 22 章 棧和函式呼叫 22.1 簡介 22.1.1 用戶態棧和內核態棧 22.1.2 函數、過程和方法 22.2 棧的創建過程 22.2.1 內核態棧的創建 22.2.2 用戶態棧的創建 22.2.3 跟蹤用戶態棧的創建過程 22.3 CALL 和RET 指令 22.3.1 CALL 指令 22.3.2 RET 指令 22.3.3 觀察函式呼叫和返回過程 22.3.4 跨特權級調用 22.4 區域變數和棧幀 22.

4.1 區域變數的分配和釋放 22.4.2 EBP 寄存器和棧幀 22.4.3 幀指針和棧幀的遍歷 22.5 幀指針省略 22.6 棧指針檢查 22.7 調用協定 22.7.1 C 調用協定 22.7.2 標準調用協定 22.7.3 快速調用協定 22.7.4 This 調用協定 22.7.5 CLR 調用協定 22.7.6 x64 調用協定 22.7.7 通過編譯器開關改變預設調用協定 22.7.8 函數返回值 22.7.9 歸納和補充 22.8 棧空間的增長和溢出 22.8.1 棧空間的自動增長 22.8.2 棧溢出 22.8.3 分配檢查 22.9 棧下溢 22.10 緩衝區溢位 22.

10.1 感受緩衝區溢位 22.10.2 緩衝區溢位攻擊 22.11 變數檢查 22.12 基於Cookie 的安全檢查 22.12.1 安全Cookie 的產生、植入和檢查 22.12.2 報告安全檢查失敗 22.12.3 編寫安全的代碼 22.13 本章總結 參考資料 第 23 章 堆和堆檢查 23.1 理解堆 23.2 堆的創建和銷毀 23.2.1 進程的預設堆 23.2.2 創建私有堆 23.2.3 堆列表 23.2.4 銷毀堆 23.3 分配和釋放堆塊 23.3.1 HeapAlloc 23.3.2 CRT 分配函數 23.3.3 釋放從堆中分配的記憶體 23.3.4 GlobalA

lloc 和LocalAlloc 23.3.5 解除提交 23.4 堆的內部結構 23.4.1 結構和佈局 23.4.2 HEAP 結構 23.4.3 HEAP_SEGMENT結構 23.4.4 HEAP_ENTRY結構 23.4.5 分析堆塊的分配和釋放過程 23.4.6 使用!heap 命令觀察堆塊資訊 23.5 低碎片堆 23.6 堆的調試支持 23.6.1 全域標誌 23.6.2 堆釋放檢查 23.7 棧回溯資料庫 23.7.1 工作原理 23.7.2 DH 和UMDH工具 23.7.3 定位記憶體洩漏 23.8 堆溢出和檢測 23.8.1 堆緩衝區溢位 23.8.2 調用時驗證 23

.8.3 堆尾檢查 23.9 頁堆 23.9.1 總體結構 23.9.2 啟用和觀察頁堆 23.9.3 堆塊結構 23.9.4 檢測溢出 23.10 准頁堆 23.10.1 啟用准頁堆 23.10.2 結構佈局 23.10.3 檢測溢出 23.11 CRT 堆 23.11.1 CRT 堆的3 種模式 23.11.2 SBH 簡介 23.11.3 創建和選擇模式 23.11.4 CRT 堆的終止 23.12 CRT 堆的調試堆塊 23.12.1 _CrtMemBlockHeader結構 23.12.2 塊類型 23.12.3 分配堆塊 23.13 CRT 堆的調試功能 23.13.1 記憶體分配

序號中斷點 23.13.2 分配掛鉤 23.13.3 自動和手動檢查 23.14 堆塊轉儲 23.14.1 記憶體狀態和檢查點 23.14.2 _CrtMemDumpAllObjectsSince 23.14.3 轉儲掛鉤 23.15 洩漏轉儲 23.15.1 _CrtDumpMemoryLeaks 23.15.2 何時調用 23.15.3 定位導致洩漏的原始程式碼 23.16 本章總結 參考資料 第 24 章 異常處理代碼的編譯 24.1 概覽 24.2 FS:[0]鏈條 24.2.1 TEB 和TIB 結構 24.2.2 ExceptionList 欄位 24.2.3 登記異常處理器 24

.3 遍歷FS:[0]鏈條 24.3.1 RtlDispatchException 24.3.2 KiUserExceptionDispatcher 24.4 執行異常處理函數 24.4.1 SehRaw 實例 24.4.2 執行異常處理函數 24.5 _ _ try{}_ _ except()結構 24.5.1 與手工方法的對應關係 24.5.2 _ _ try{}_ _ except()結構的編譯 24.5.3 範圍表 24.5.4 TryLevel 24.5.5 _ _ try{}_ _ except()結構的執行 24.5.6 _SEH_prolog 和_SEH_epilog 24.6

安全問題 24.6.1 安全Cookie 24.6.2 SAFESEH 24.6.3 基於表的異常處理 24.7 本章總結 參考資料 第 25 章 調試符號 25.1 名稱修飾 25.1.1 C 和C++ 25.1.2 C 的名稱修飾規則 25.1.3 C++的名稱修飾規則 25.2 調試資訊的存儲格式 25.2.1 COFF格式 25.2.2 CodeView 格式 25.2.3 PDB格式 25.2.4 DWARF格式 25.3 目的檔案中的調試資訊 25.3.1 IMAGE_FILE_HEADER結構 25.3.2 IMAGE_SECTION_HEADER結構 25.3.3 節的重定位

資訊和行號資訊 25.3.4 存儲調試資料的節 25.3.5 調試符號表 25.3.6 COFF 字串表 25.3.7 COFF 符號例析 25.4 PE 檔中的調試資訊 25.4.1 PE 文件佈局 25.4.2 IMAGE_OPTIONAL_HEADER結構 25.4.3 調試資料目錄 25.4.4 調試數據 25.4.5 使用WinDBG 觀察PE 檔中的調試資訊 25.4.6 調試資訊的產生過程 25.5 DBG 文件 25.5.1 從PE 檔產生DBG 檔 25.5.2 DBG 文件的佈局 25.6 PDB 文件 25.6.1 複合檔案 25.6.2 PDB 文件佈局 25.6.3

PDB 簽名 25.6.4 Magic 代碼 25.6.5 PDB_HEADER 25.6.6 根資料流程——流目錄 25.6.7 頁分配表 25.6.8 訪問PDB 檔的方式 25.6.9 PDB 檔的產生過程 25.7 有關的編譯和連結選項 25.7.1 控制調試資訊的編譯選項 25.7.2 控制調試資訊的連結選項 25.7.3 不同連結和編譯選項的比較 25.8 PDB 文件中的資料表 25.8.1 符號表 25.8.2 原始檔案表 25.8.3 節貢獻表 25.8.4 段信息表 25.8.5 注入原始程式碼表 25.8.6 幀資料表 25.9 本章總結 參考資料 第五篇 調 試 器

第 26 章 調試器概覽 26.1 TX-0 電腦和FLIT調試器 26.2 小型機和DDT調試器 26.2.1 PDP-1 26.2.2 TOPS-10 作業系統和 DDT-10 26.3 個人電腦和它的調試器 26.3.1 8086 Monitor 26.3.2 SYMDEB 26.3.3 CodeView調試器 26.3.4 Turbo Debugger 26.3.5 SoftICE 26.4 調試器的功能 26.4.1 建立和終止調試會話 26.4.2 控制被偵錯工具執行 26.4.3 訪問記憶體 26.4.4 訪問寄存器 26.4.5 中斷點 26.4.6 跟蹤執行 26.4.7 觀

察棧和棧回溯 26.4.8 彙編和反彙編 26.4.9 原始程式碼級調試..685 26.4.10 EnC 26.4.11 文件管理 26.4.12 接收和顯示調試資訊 26.4.13 轉儲 26.5 分類標準 26.5.1 特權級別 26.5.2 作業系統 26.5.3 執行方式 26.5.4 處理器架構 26.5.5 程式設計語言688 26.6 實現模型 26.6.1 進程內調試模型 26.6.2 進程外調試模型 26.6.3 混合調試模型 26.6.4 內核調試模型 26.7 經典架構 26.7.1 基本單元 26.7.2 遠程調試 26.7.3 多語言和多處理器架構調試 26.8 H

PD 標準 26.8.1 HPD 標準簡介 26.8.2 動作點 26.8.3 進程和執行緒的表示和命名 26.8.4 命令 26.9 本章總結 參考資料 第 27 章 VsDebug 27.1 架構和調試模型 27.1.1 架構概覽 27.1.2 遠程調試器 27.1.3 本地調試器 27.2 VS 調試引擎 27.2.1 一套介面,多種實現 27.2.2 核心類 27.3 工作過程 27.3.1 開始調試32 位元本地程式 27.3.2 開始調試64 位元本地程式 27.3.3 訪問調試目標 27.4 使用中斷點 27.4.1 根據名稱設置中斷點 27.4.2 數據中斷點 27.4.3 附

加條件 27.4.4 附加操作 27.5 多執行緒調試 27.5.1 並行棧回溯 27.5.2 並行監視 27.5.3 凍結執行緒 27.6 EnC 27.6.1 應用過程 27.6.2 要求/ZI 編譯選項 27.6.3 下次調用生效 27.6.4 應用失敗 27.7 設計期調試 27.8 使用符號伺服器 27.9 定制調試事件 27.9.1 初始中斷點 27.9.2 異常設置 27.10 本章總結 參考資料 第 28 章 VS Code 的調試擴展 28.1 簡介 28.2 四大技術 28.3 理解“擴展包” 28.3.1 包類型 28.3.2 安裝 28.3.3 工作原理 28.4 擴展

包API 28.4.1 貢獻點 28.4.2 命令 28.4.3 啟動事件 28.5 調試模型 28.5.1 貢獻調試器 28.5.2 宏觀架構 28.6 調試適配器 28.6.1 DA 描述符工廠 28.6.2 進程內DA 28.6.3 vsdbg 28.6.4 OpenDebugAD7 28.7 機器介面 28.7.1 啟用用法 28.7.2 對話示例 28.7.3 MIEngine 28.8 調試Python 程式 28.8.1 PTVSD 28.8.2 發起異常時中斷 28.9 本章總結 參考資料 第 29 章 WinDBG 及其實現 29.1 WinDBG 溯源 29.1.1 KD

和NTSD 誕生 29.1.2 WinDBG 誕生 29.1.3 發行方式 29.1.4 版本歷史 29.2 C 階段的架構 29.2.1 功能模組 29.2.2 遠程調試 29.3 重構 29.3.1 版本歷史 29.3.2 介面變化 29.3.3 模組變化 29.3.4 發佈方式和NTSD 問題 29.3.5 文件 29.4 調試器引擎的架構 29.4.1 概覽 29.4.2 對外介面 29.4.3 DebugClient 類 29.4.4 中間層 29.4.5 服務層 29.4.6 傳輸和連接層 29.5 調試目標 29.5.1 TargetInfo 類 29.5.2 使用者態目標 29

.5.3 內核態目標 29.5.4 轉儲檔目標 29.6 調試會話 29.6.1 建立調試會話 29.6.2 調試迴圈 29.6.3 等待和處理調試事件 29.6.4 繼續調試事件 29.6.5 結束調試會話 29.7 接收和處理命令 29.7.1 調試器的兩種工作狀態 29.7.2 進入命令狀態 29.7.3 執行命令 29.7.4 結束命令狀態 29.8 擴展命令的工作原理 29.9 本章總結 參考資料 第30 章 WinDBG 用法詳解 30.1 工作空間 30.2 命令概覽 30.2.1 標準命令 30.2.2 元命令 30.2.3 擴展命令 30.3 使用者介面 30.3.1 窗口概

覽 30.3.2 命令窗口和命令提示符 30.4 輸入和執行命令 30.4.1 要點 30.4.2 運算式 30.4.3 偽寄存器 30.4.4 別名 30.4.5 迴圈和條件執行 30.4.6 進程限定詞和執行緒限定詞 30.4.7 記錄到檔 30.5 建立調試會話 30.5.1 附加到已經運行的進程 30.5.2 創建並調試新的進程 30.5.3 非入侵式調試 30.5.4 雙機內核調試 30.5.5 本地內核調試 30.5.6 調試轉儲文件 30.5.7 遠程調試 30.6 終止調試會話 30.6.1 停止調試 30.6.2 分離調試目標 30.6.3 拋棄被調試進程 30.6.4 終止

被調試進程 30.6.5 調試器終止或僵死 30.6.6 重新開始調試 30.7 理解上下文 30.7.1 登錄會話上下文 30.7.2 進程上下文 30.7.3 寄存器上下文 30.7.4 局部(變數)上下文 30.8 調試符號 30.8.1 重要意義 30.8.2 符號搜索路徑 30.8.3 符號伺服器 30.8.4 載入符號檔 30.8.5 觀察模組資訊 30.8.6 檢查符號 30.8.7 搜索符號 30.8.8 設置符號選項 30.8.9 載入不嚴格匹配的符號檔 30.9 事件處理 30.9.1 調試事件與異常的關係 30.9.2 兩輪機會 30.9.3 定制事件處理方式 30.9.

4 GH 和GN 命令 30.9.5 實驗 30.10 控制調試目標 30.10.1 初始中斷點 30.10.2 俘獲調試目標 30.10.3 繼續運行 30.11 單步執行 30.11.1 概覽 30.11.2 單步執行到指定位址 30.11.3 單步執行到下一個函式呼叫 30.11.4 單步執行到下一分支 30.11.5 追蹤並監視 30.11.6 程式指標飛躍 30.11.7 歸納 30.12 使用中斷點 30.12.1 軟體中斷點 30.12.2 硬體中斷點 30.12.3 條件中斷點 30.12.4 位址表達方法 30.12.5 設置針對執行緒的中斷點 30.12.6 管理中斷點 3

0.13 控制進程和執行緒 30.13.1 MulThrds 程式 30.13.2 控制執行緒執行824 30.13.3 多進程調試 30.14 觀察棧 30.14.1 顯示棧回溯 30.14.2 觀察棧變數 30.15 分析記憶體 30.15.1 顯示記憶體區域 30.15.2 顯示字串 30.15.3 顯示資料類型 30.15.4 搜索記憶體 30.15.5 修改記憶體 30.15.6 使用實體記憶體位址 30.15.7 觀察記憶體屬性 30.16 遍歷鏈表 30.16.1 結構定義 30.16.2 雙向鏈表示例 30.16.3 單向鏈表示例 30.16.4 dl 命令 30.16.5 !

list 命令 30.17 調用目的程式的函數 30.17.1 調用示例 30.17.2 工作原理 30.17.3 限制條件和常見錯誤. 30.18 命令程式 30.18.1 流程控制符號 30.18.2 變數 30.18.3 命令程式示例 30.18.4 執行命令程式 30.19 本章總結 參考資料 附錄A 示例程式清單 附錄B WinDBG 標準命令列表 附錄C NT 內核部件縮寫列表 持之若癡——代跋

工作管理員 顯示 錯誤進入發燒排行的影片

GTA5 ➤ 教學 - 各種錯誤基本解法 - 10/31更新DirectX修復 - 請見影片說明 | GTA5 Error Fix Tutorial
【目錄】
Steam使用者:0:50
RockStar官方使用者:2:24

【10/20更新】
▶R星版:
①全新安裝GTA5,手動使用中文用戶更新檔(http://j.mp/1yD6BFa)
②若自動下載失敗,手動安裝10/20更新檔(http://j.mp/1N0PfTz)
(設定「GTAV.exe」,「GTAVLauncher.exe」,「PlayGTAV.exe」- 內容 - 相容性-以系統管理員的身分執行)。
▶STEAM版:程式自動更新

▶刪除ScriptHookV.dll,dinput8.dll
▶若持續無法登入,請刪除我的文件內的rockstar資料夾。
▶更改「美國」DNS(教學http://j.mp/1GL7DS1):請使用Level3(209.244.0.3,209.244.0.4),也可以用其他的,自己挑(http://j.mp/1GL7ePM)
▶使用「手機網路」下載遊戲
▶修復DirectX(推薦):http://j.mp/1yOTil2
▶修復遊戲檔案(推薦):http://j.mp/1cirKdf

【其他問題】
▶光碟安裝問題:請勿使用光碟,見下光碟無法安裝解法。
▶錯誤訊息 - ERR_GFX_D3D_INIT:遊戲內設置成VSYNCE關閉,Tesselation關閉,DirectX為10,模式調到無邊框。。也可嘗試將顯示卡降頻約20mhz(超頻的反向操作,請google)。
▶錯誤訊息 - 無法初始化 DIRECTX 9 裝置:解法在此(http://i.imgur.com/9dDM81h.png)
▶錯誤訊息 - 遊戲服務無法使用:創建新的英文名使用者管理員,Win8參見此篇(http://j.mp/1GLr6lE)
▶錯誤訊息 - Social Club無法初始化 / Social Club安裝不完整 / 需要新版本的Social Club:(steam版)驗證遊戲完整性,(官方版)用「手動更新Social Club」下載遊戲
▶無限登入 - 手動更新Social Club啟動器,並看此解法(http://i.imgur.com/hpmoD14.png)
▶代碼12 - 使用系統管理員身份開啟,換dns,不斷重開,更改系統相容性

【重要:請確認所有程式皆為最新版】
▶關閉Mactray,關閉所有防毒程序,使用「管理員身份執行」
▶Win7 SP1:http://j.mp/1H6Ooks(啟動器停止運作解法之一)
▶DirectX兩檔皆須裝:http://j.mp/1GLp4BX(錯誤視窗解法之一)
▶手動更新Social Club啟動器 / 手動下載遊戲:http://j.mp/1GL9S7Z(光碟無法安裝 / 找不到遊戲執行路徑檔 / ERR_GEN_ZLIB_2解法 / 代碼9 /無限登入解法)
▶Microsoft Visual C++ 2008 SP1:http://j.mp/1cuD3Q6
▶官方網路連線疑排難解:http://j.mp/1CJxWBX(Rockstar遊戲服務無法使用 / 無法存取Rockstar伺服器)
▶NVIDIA顯示卡驅動程式:http://j.mp/1H6NgNN
▶AMD顯示卡驅動程式:http://j.mp/1H6Nl4b

【推薦閱讀】
▶路徑須為英文:http://j.mp/1cutZuE
▶Nvidia顯示卡問題:http://j.mp/1cuu7KB
▶啟動器閃退問題:http://j.mp/1cuu8hv,http://j.mp/1cuupB1
▶退款:http://j.mp/1cuubdc




-考古文4/15-
▶檢查檔案完整性教學(WinMD5):http://j.mp/1L2YXIz
▶本次更新檔案檢查碼:http://j.mp/1L2Z0nO
▶替換成官方版啟動器(內含steam原版):http://j.mp/1JNi8mh(啟動器停止運作解法之一,grand theft auto v launcher已停止工作解法之一)
▶官方版使用者可用的專屬「遊戲更新檔」(steam使用者勿用):http://j.mp/1GQbpK4
▶終極解法:重灌「英文版」Win7 64bit


【結論】
▶steam版使用者:
1. 可從50秒開始觀看(①改路徑為中文名 ②可嘗試關閉nvidia顯卡 ③置換為官方啟動器)
2. 如果無效,再嘗試RockStar版的解法。

▶Rockstar官方版使用者:
1. 可從2:24秒開始觀看(①代碼1:下載「遊戲更新檔」,或是進入C-Program FilesX86-Rockstar Games-Social Club 裡找到subprocess點兩下,接著開啟桌面GTA5)
2. 如果無效,或是遊戲中途閃退,看看這篇(http://j.mp/1cuxAJ0)檢查檔案完整性(代碼7 / 代碼5 / GTA5意外退出解法之一 / ERR_GEN_ZLIB_2解法)
3. 最後再嘗試Steam版的解法

【注】「關閉nvidia顯卡大法」適用於有內顯的「筆電」的使用者,一般人勿用。
【注】AMD使用者請關閉「內顯(intel HD Graphic...)」,nVidia使用者也可以試試看(GTA5意外退出解法之一)


▶訂閱Youtube(http://youtube.com/cooMasterShooter)
▶實況台(http://twitch.tv/cooMaster88)
▶粉絲專頁(http://facebook.com/cooMaster88)


聯絡E-Mail:[email protected]
以FPS遊戲為主的遊戲頻道,提供第一手的射擊遊戲資訊與評論。
只要有槍可打,就有苦大師。

智慧化地磅站之研究-以蘇花改為例

為了解決工作管理員 顯示 錯誤的問題,作者陳柏升 這樣論述:

蘇花改自108年1月17日開放大貨車通車以來,扮演著地方大貨車運輸、民生產業鏈的重要一環。然而「超尺度車輛」及「載運危險物品車輛」是開放大貨車通行後,一直以來的重點執法項目之一。蘇花改的地磅站是隧道群為維護隧道安全之重要隘口,以往皆採用人工操作、目視等傳統式方式進行執法,執法方式耗時且不精確,且難以依此作為執法單位製單舉發之用。 本研究旨優化地磅站之智慧化辨識:1、自動辨識危險車輛圖示並產生告警。2、雷達與影像自動取得大貨車之長寬高數值。3、車側核定重量畫面影像擷取。4、超尺度影像擷取。 本研究採用Lidar技術的感測器來描繪車輛外型,得到車體之長、寬、高數值。另採用邊緣偵測、

yolov3物件演算法、搭配神經網路框架及opencv像素比例推算進行實驗。結果顯示,提升目前禁止通行車輛種類的智慧化辨識率取得顯著成效,可有效節省人為操作時間,並能大幅度解決無法快速得知大貨車核定重量及後方危險運輸圖示之問題,亦包含:載運危險物品車輛辨識、車側核定重量影像擷取、超長、超寬、超高等超尺度辨識。本研究成果得以解決目前地磅站難以目視大貨車車側核定重量及低效率辨識該車輛之車長、車寬、車高之問題,並輔助目前地磅站執法單位製單舉發之執法依據,俾供後續用於車輛公路行駛的安全性判斷與違規偵測之參考。

深入解析Windows操作系統.下冊(第6版)

為了解決工作管理員 顯示 錯誤的問題,作者(美)馬克·拉希諾維奇(美)大衛·A.所羅門(美)艾力克斯·伊納蘇 這樣論述:

本書是Windows技術權威參考書的最新版本,本書主要介紹了基於Windows 7 and Windows Server 2008 R2的核心技術與底層技術,全面闡釋Windows技術機理,是廣大Windows開發人員必備的參考書。 Mark Russinovich(馬克·拉希諾維奇)是微軟windows Azure組技術人員,是Sysinternals工具的作者之一,合著了《深入解析Windows作業系統》系列圖書;David A.Solomon(大衛·A.所羅門)是《深入解析Windows作業系統》系列圖書的合著者,並為全球成千上萬的開發人員和IT專業人士,包括微軟員

工,講授Windows內幕課程。他時常在微軟舉辦的會議中發言,包括TechNet和PDC。 范德成,2004年畢業于上海交通大學,在微軟和 SAP公司有多年專案經驗,構建了微型開源專案Robbie’s Shell。   潘愛民,任職于阿裡巴巴,長期從事軟體和系統技術的研究與開發工作,撰寫了大量軟體技術文章,著譯了多部經典計機圖書,在國內外學術刊物上發 表了30多篇文章。曾經任教於北京大學和清華大學(兼職),後進入工業界,先後任職于微軟亞洲研究院、盛大網路發展有限公司和阿裡雲計算有限公司,目前也 是工信部移動作業系統專家組成員。潘愛民先生獲得了數學學士學位和電腦科學博士學位,主要研究領域包括軟

體設計、資訊安全、作業系統和互聯網技術。 第8章 I/O系統1 8.1I/O系統元件1 I/O管理器3 典型的I/O處理過程4 8.2設備驅動程式5 設備驅動程式的類型5 WDM驅動程式6 分層的驅動程式7 實驗:查看已載入的驅動程式清單9 驅動程式的結構11 驅動程式物件和設備物件13 實驗:看一看設備物件15 實驗:顯示驅動程式和設備物件17 打開設備18 實驗:查看設備控制碼21 實驗:查看Windows設備名稱之間的映射23 8.3I/O處理24 I/O類型24 同步I/O和非同步I/O24 快速I/O25 實驗:查看一個驅動程式登記的快速I/O常式25 映射文件I

/O和文件緩存26 分散/聚集I/O27 I/O請求包27 IRP棧單元28 實驗:查看驅動程式的分發常式29 實驗:查看一個執行緒的未完成IRP29 IRP緩衝區管理30 針對單層驅動程式的I/O請求32 為一個中斷提供服務33 完成一個I/O請求34 同步36 針對分層的驅動程式的I/O請求38 實驗:查看一個設備棧39 實驗:查看IRP40 執行緒無關I/O45 I/O取消45 用戶發起的I/O取消46 執行緒終止時的I/O取消47 實驗:調試一個無法被殺死的進程48 I/O完成埠49 IoCompletion對象50 使用完成埠50 I/O完成埠操作52 I/O優先順序支持54 I/O

優先順序54 優先化策略55 I/O優先順序反轉的避免(I/O優先順序繼承)57 I/O優先順序提升和撞升57 實驗:“非常低”和“正常”I/O輸送量的對比58 實驗:I/O優先順序提升/撞升的性能分析59 頻寬預留(計畫的檔I/O)60 容器通知60 驅動程式檢驗器(DriverVerifier)61 8.4核心模式驅動程式框架(KMDF)63 KMDF驅動程式的結構和操作64 實驗:顯示KMDF驅動程式65 KMDF資料模型66 KMDF的I/O模型69 8.5使用者模式驅動程式框架(UMDF)72 8.6隨插即用(PnP)管理器76 隨插即用支持的級別77 驅動程式對於隨插即用的支援77

驅動程式載入、初始化和安裝79 Start值80 設備列舉81 實驗:將設備樹轉儲出來84 設備棧85 設備棧的驅動程式載入86 實驗:在裝置管理員中查看詳細的devnode資訊88 驅動程式安裝90 實驗:檢查一個驅動程式的INF檔92 實驗:查看目錄(catalog)檔93 8.7電源管理器94 電源管理器的操作96 驅動程式的電源操作97 實驗:查看一個驅動程式的電源映射關係97 實驗:查看系統的電源能力和策略98 驅動程式和應用程式對於設備電源的控制100 電源可用性請求100 實驗:在調試器中查看一個電源可用性請求101 實驗:利用Powercfg查看電源可用性請求103 處理器電

源管理(PPM)103 核心停運的策略104 利用率函數105 實驗:查看利用率和頻率的資訊106 實驗:查看利用率和頻率的歷史107 演算法覆蓋108 增加/減少動作108 各種閾值和策略的設置109 實驗:查看當前的核心停運策略111 “性能檢查”演算法112 實驗:查看當前的PPM檢查資訊116 8.8本章總結118 第9章 存儲管理119 9.1有關存儲的術語119 9.2磁片設備120 旋轉磁片120 磁片的磁區格式120 固態硬碟122 NAND型快閃記憶體122 檔的刪除和irim命令124 9.3磁片驅動程式125 Winload125 磁片類、埠和小埠驅動程式126 iSC

SI驅動程式127 多路徑I/O(MPIO)驅動程式128 實驗:觀察物理磁片I/O130 磁片設備物件130 分區管理器131 9.4卷的管理132 基本磁片133 MBR風格的分區133 GPT(GUID分區表)分區方案133 基本磁片卷管理器134 動態磁片135 LDM資料庫135 實驗:使用LDMDump來查看LDM資料庫137 LDM和GPT或MBR風格的分區方案139 動態磁片的卷管理器140 多分區卷的管理140 跨距卷141 條帶卷142 實驗:觀察鏡像磁碟區的I/O操作143 RAID—5卷145 卷名字空間145 掛載管理器146 掛載點147 卷的掛載148 實驗:查看

VPB149 卷的I/O操作152 虛擬磁片服務153 9.5虛擬硬碟(VHD檔)支援155 附載VHD的操作156 嵌套的檔案系統156 9.6BitLocker驅動器加密157 加密金鑰159 可信平臺模組(TPM)161 BitLocker引導過程163 BitLocker金鑰的恢復165 全卷加密驅動程式166 BitLocker的管理167 BitLockerToGo168 9.7卷影像(shadow)拷貝服務170 影像拷貝170 “克隆”影像拷貝170 “寫時複製”影像拷貝170 VSS的架構170 VSS的操作171 影像拷貝提供者172 實驗:查看Microsoft影像拷貝提

供者的過濾型設備物件173 Windows中的用途174 備份174 實驗:查看影像卷的設備物件174 “之前的版本”和系統還原175 實驗:導航到“之前的版本”176 實驗:映射卷影像設備物件177 9.8本章總結178 第10章 記憶體管理179 10.1記憶體管理器簡介179 記憶體管理器元件180 內部同步181 檢查記憶體的使用情況182 實驗:查看系統記憶體信息182 10.2記憶體管理器提供的服務184 大頁面和小頁面185 保留頁面和提交頁面187 實驗:保留的頁面對比提交的頁面188 提交限額190 鎖住記憶體190 分配細微性191 共用記憶體和映射檔192 實驗:查看記

憶體映射檔193 保護記憶體194 “不可執行”頁面保護196 實驗:查看進程上的DEP保護199 軟體的資料執行保護200 寫時複製201 位址窗口擴展203 10.3核心模式堆(系統記憶體池)204 記憶體池的大小205 實驗:確定最大的池大小值206 監視記憶體池的使用208 實驗:診斷記憶體池洩漏210 快查表(Look—AsideList)211 實驗:查看系統的快查表212 10.4堆管理器212 堆的類型213 堆管理器結構214 堆同步215 低碎片堆215 堆的安全特性216 堆的調試特性217 pageheap218 容錯堆218 10.5虛擬位址空間的佈局結構219 x8

6位址空間的佈局結構221 實驗:檢查一個應用程式能否感知大位址空間222 x86系統位址空間的佈局結構223 x86會話空間224 實驗:查看會話224 實驗:查看會話空間的使用情況225 系統分頁表項目(PTE,PageTableEntry)226 實驗:查看會話空間的使用情況226 64位元位址空間佈局結構227 x64虛擬定址的限制230 Windowsx64的16TB限制231 動態的系統虛擬位址空間管理233 實驗:查詢系統虛擬位址的用量234 實驗:設置系統虛擬位址的限制值235 系統的虛擬位址空間配額236 使用者位址空間的佈局結構237 實驗:對使用者虛擬位址空間進行分析23

8 映射隨機化239 棧的隨機化240 堆的隨機化240 內核位址空間中的ASLR240 對安全性緩和措施的控制240 實驗:查看進程上的ASLR保護241 10.6地址轉譯241 x86虛擬位址轉譯242 頁目錄245 實驗:檢查頁目錄和PDE245 頁表和分頁表項目246 分頁表項目中硬體和軟體的“寫”位元247 頁面內的位元組248 地址轉譯快查緩衝區248 實體位址擴充(PAE)249 實驗:轉譯地址251 x64虛擬位址轉譯253 IA64虛擬位址轉譯254 10.7分頁錯誤處理255 無效PTE256 原型PTE258 頁面換入I/O259 衝突的分頁錯誤260 聚簇的分頁錯誤26

0 分頁檔261 實驗:查看系統分頁檔262 提交用量和系統提交限額263 提交用量和分頁檔的大小266 實驗:利用工作管理員來查看分頁檔使用量266 10.8棧268 用戶棧268 實驗:創建最大數量的執行緒268 內核棧269 實驗:觀察內核棧的使用量269 DPC棧270 10.9虛擬位址描述符270 進程的VAD271 實驗:查看虛擬位址描述符272 旋轉VAD272 10.10NUMA273 10.11記憶體區物件274 實驗:查看記憶體區物件275 實驗:查看控制區域277 10.12驅動程式檢驗器280 10.13頁面幀編號資料庫284 實驗:查看PFN資料庫287 頁面清單的動

態變化288 實驗:空閒清單和零頁面清單289 實驗:已修改列表和備用列表291 頁面優先順序296 實驗:觀察區分優先順序的備用列表298 已修改頁面寫出器299 PFN資料結構301 實驗:查看PFN項304 10.14實體記憶體的限制305 Windows客戶版本的限制306 32位元客戶的有效記憶體限制307 10.15工作集309 按需換頁309 邏輯預取器310 實驗:窺探預取文件內部312 實驗:觀察預取檔的讀和寫312 放置策略313 工作集管理314 實驗:查看進程工作集大小316 實驗:工作集與虛擬大小316 實驗:在調試器中查看工作集列表317 平衡集管理器和交換器318

系統工作集319 記憶體通知事件320 實驗:查看記憶體資源通知事件321 10.16主動式記憶體管理(Superfetch)322 各個元件322 跟蹤過程和日誌記錄324 場景325 頁面優先順序和重平衡326 魯棒性能328 RAM優化軟體329 ReadyBoost330 ReadyDrive331 統一緩存332 進程反射334 實驗:利用Preflect來觀察進程反射的行為336 10.17本章總結337 第11章 緩存管理器338 11.1緩存管理器的關鍵特性338 單個中心化的系統緩存339 記憶體管理器339 快取一致性339 虛擬塊緩存341 流式緩存機制341 對可恢

復檔案系統的支持341 11.2緩存的虛擬記憶體管理342 11.3緩存的大小344 緩存的虛擬大小344 緩存的工作集大小344 實驗:查看系統緩存的工作集345 緩存的物理大小345 11.4緩存的資料結構347 系統範圍的緩存資料結構347 實驗:查看系統緩存的工作集349 針對每個檔的緩存資料結構350 實驗:查看共用的和私有的緩存表353 11.5檔案系統介面355 從緩存中來回拷貝資料356 通過映射和鎖定介面進行緩存356 通過直接記憶體存取介面進行緩存357 11.6快速I/O357 11.7預讀(ReadAhead)和滯後寫(WriteBehind)359 智能預讀359 回

寫緩存(Write—BackCaching)和延遲寫(LazyWriting)361 實驗:觀察緩存管理器的活動情況362 禁止一個檔的延遲寫出行為367 強迫緩存被直寫(write—through)到磁片上367 刷新映射文件367 實驗:觀察緩存的刷新368 寫節流(WriteThrottling)369 實驗:查看寫節流參數370 系統執行緒370 11.8本章總結371 第12章 檔案系統372 12.1Windows檔案系統格式373 CDFS373 UDF374 FAT12、FAT16和FAT32374 exFAT377 NTFS377 12.2檔案系統驅動程式總體結構378 本

地FSD379 遠程FSD380 鎖定381 實驗:查看已註冊檔案系統的列表383 檔案系統操作387 顯式文件I/O388 記憶體管理器的修改頁面寫出器和映射頁面寫出器392 緩存管理器的延遲寫出器(LazyWriter)392 緩存管理器的預讀執行緒392 記憶體管理器的分頁錯誤處理器393 檔案系統過濾型驅動程式393 進程監視器393 實驗:查看進程監視器的過濾型驅動程式394 12.3診斷檔案系統的問題395 進程監視器的基本和高級模式395 實驗:在一個空閒系統上查看檔案系統的活動395 進程監視器診斷技巧396 12.4公用日誌檔案系統397 列集操作397 日誌的類型398 日

誌的佈局結構400 日誌序號401 日誌塊401 所有者頁面402 虛擬LSN到物理LSN的轉譯403 管理策略404 12.5NTFS設計目標和特性404 高端(High—End)檔案系統的需求404 可恢復性405 安全性405 資料冗余和容錯能力405 NTFS的高級特性406 多資料流程406 實驗:查看資料流程408 基於Unicode的名稱408 通用的索引設施409 動態的壞簇重新映射409 硬連結(link)和交接(junction)409 實驗:創建一個硬連結410 符號(軟)連結和交接(junction)410 實驗:創建一個符號連結412 壓縮檔和稀疏文件412 變化日誌

413 針對每個用戶的卷配額413 連結跟蹤414 加密415 POSIX支持416 磁碟重組416 動態分區417 12.6NTFS檔案系統驅動程式419 12.7NTFS在磁片上的結構421 卷(volume)421 簇(cluster)422 主檔案表格(MFT)423 實驗:查看NTFS信息425 檔記錄號426 檔記錄426 檔案名429 隧道傳輸431 駐留的和非駐留的屬性432 資料壓縮和稀疏文件435 壓縮稀疏資料435 壓縮非稀疏資料437 稀疏文件439 變化日誌檔439 實驗:讀取變化日誌441 索引442 對象ID444 配額跟蹤444 統一的安全性445 重解析點44

7 事務支援447 隔離性448 實驗:理解和管理事務449 事務型API450 資源管理器451 實驗:查詢資源管理器的資訊452 磁片上的實現453 日誌的實現454 恢復的實現455 12.8NTFS的恢復支持455 設計456 中繼資料日誌記錄457 日誌檔服務(LFS)457 日誌記錄類型459 恢復461 分析掃描(AnalysisPass)462 重做掃描(RedoPass)463 撤銷掃描(UndoPass)463 NTFS的壞簇恢復465 自我修復468 12.9加密檔案系統(EFS)安全性469 第一次加密一個檔472 加密檔資料473 解密過程474 加密檔的備份474

實驗:查看EFS信息475 加密檔的複製475 12.10本章總結476 第13章 啟動和停機477 13.1引導過程477 BIOS引導準備477 BIOS引導磁區和Bootmgr481 UEFI引導過程495 從iSCSI引導496 初始化內核和執行體子系統497 實驗:載入器參數塊497 Smss、Csrss和Wininit504 未完成的檔重命名操作507 ReadyBoot509 自動啟動的映射檔510 實驗:Autoruns511 13.2引導和啟動問題的故障檢查511 最後已知的好配置512 安全模式512 安全模式下的驅動程式載入513 能感知安全模式的使用者程式514 安全

模式下的引導日誌515 Windows恢復環境(WinRE)516 引導狀態檔519 解決常見的引導問題520 MBR損壞520 引導磁區損壞520 BCD的錯誤配置520 系統檔損壞521 Windows資源保護522 System儲巢損壞523 啟動畫面之後的崩潰或者掛起523 13.3停機525 實驗:驗證HungAppTimeout值526 13.4本章總結528 第14章 崩潰轉儲分析529 14.1Windows為什麼會崩潰529 14.2藍屏530 Windows崩潰的原因531 14.3診斷崩潰問題533 14.4崩潰轉儲文件535 實驗:查看轉儲檔的資訊539 崩潰轉儲的生

成540 14.5Windows錯誤報告542 14.6線上崩潰分析543 14.7基本的崩潰轉儲分析545 Notmyfault545 基本的崩潰轉儲分析546 詳細的分析547 14.8使用崩潰診斷工具549 緩衝區溢位、記憶體破壞和特殊記憶體池550 實驗:通過驅動程式檢驗器啟用特殊記憶體池552 代碼改寫和系統代碼防寫553 14.9高級的崩潰轉儲分析554 棧破壞555 掛起的或無回應的系統557 實驗:利用LiveKd來生成Hyper—V客戶的轉儲559 當沒有崩潰轉儲時561 實驗:附載一個內核調試器562 14.10對常見停止代碼的分析564 0xD1—DRIVER_IRQL_

NOT_LESS_OR_EQUAL564 0x8E—KERNEL_MODE_EXCEPTION_NOT_HANDLED566 0x7F—UNEXPECTED_KERNEL_MODE_TRAP567 0xC5—DRIVER_CORRUPTED_EXPOOL569 硬體故障571 實驗:藍屏螢幕保護裝置程式572 14.11本章小結572 譯者序一 在所有介紹Windows作業系統的圖書中,我相信都離不開Windows Internals系列提供的資訊。除了公開可見到的Windows原始程式碼以外,本書是披露Windows系統機理最為詳盡的一份資料,尤其對於 Windows的每

一個最新版本。本書第6版專門針對Windows 7和Windows Server 2008 R2進行了大幅度更新。由於篇幅的增加,這一版本改成了上下兩冊來發行,由此也可見本書的“分量”。本書上冊中文版已於2014年4月出版,這幾年間,我 經常收到讀者的詢問,本書下冊是否出版。現在,下冊中文版終於要出版了,讀者們可以如願看到本書了。 在Windows作業系統的發展歷程 中,Windows 7是一個具有特殊意義的版本。它可以算得上是最為複雜的單機作業系統,無論是從代碼規模、代碼複雜度,還是從系統適應場景的複雜程度,都超過了以前所有的 版本。從某種意義上,Windows 7代表了軟體工程的一個頂峰

——人類可以構造出如此複雜且能穩定工作的軟體系統!與此相對應,要用一本書來涵蓋其中的各種機理也同樣是一項艱巨的任務,本書作者基於他們過去所做的大量工作,以及對Windows的深入理解,出色地完成了這一詮釋工作。 本書的權威性毋庸置疑。Mark Russinovich因在Windows內核探索方面所作出的貢獻而成為Microsoft Fellow(現為Azure CTO),本書中用到的大量Sysinternals工具均出自他的手筆。David Solomon長期從事Windows NT內部機理的培訓,他不僅在全球各地培訓Windows系統程式師,甚至也為Microsoft的內部員工提供Wind

ows內核培訓服務,他從本書第 2版開始奠定了卓有成效的敘述風格。Alex Ionescu是一名年輕的駭客型Windows專家,曾經為ReactOS(一個開源的作業系統專案,旨在相容Windows 2000/XP/Server 2003的應用程式)編寫了絕大多數內核代碼。他曾經發現和報告了一些與Windows內核相關的軟體漏洞,也跟David Solomon一起講授Windows內部機理的課程。有如此強大的作者組合,再加上Microsoft的內部支援(包括提供原始程式碼,以及Windows 開發組的細緻解釋),本書無疑是Windows最新版本的第一手技術資料。 每一個對Windows作業系統

有濃厚興趣的讀者都不應該錯過這本書。 本書上冊介紹了Windows的系統架構、系統機制、管理機制、進程與執行緒、安全性和網路。下冊是上冊的直接延續,共有7章,分別介紹了Windows I/O、存儲管理、記憶體管理、緩存管理器、檔案系統、啟動與停機,以及崩潰轉儲分析。每一章都是一個重要話題,讀者既可以在上冊的基礎上繼續深入鑽研 Windows各個子系統,也可以有選擇地閱讀某些章節。在閱讀過程中,最好能動手做一做書中描述的實驗。做這些實驗的門檻並不高,但效果非常好,既可以 讓你直觀地領會Windows內部的一些設計與實現,也可以積累一些洞察Windows內部活動的方法,這些方法對於排查Windo

ws平臺上出現的問題 往往很有幫助。 我與本書的淵源是從第4版(針對Windows XP/Server 2003)開始的,後來第5版(針對Windows Vista/Server 2008)錯過了出版週期,直至這次第6版又有機會翻譯。這三個版本,連同後來的第7版(針對Windows 10/Server 2016)都採用同樣的敘述框架,只是針對最新的Windows版本做了更新。本書講述的內容,雖然是針對Windows 7/Server 2008 R2,但更新幅度較大,尤其是有關64位元系統的介紹,有較多新內容。即使讀者已經在Windows 8或者Windows 10上工作,本書中的內容仍然對你

有價值。另外,如果讀者不滿足于本書Windows系統機理的系列介紹,而希望進一步理解Windows作業系統的源代 碼實現以及內核中的各種基礎演算法,則推薦閱讀另一本書《Windows內核原理與實現》,這是我在Windows XP/Server 2003 SP1內核代碼基礎上寫作的一本講解Windows內核的書,它幾乎將Windows內核大白於天下。 最後,我要特別感謝范德成先生,他在我第4版譯稿的基礎上,更新到了第6版。也要感謝電子工業出版社的編輯劉皎,依然把第6版的翻譯工作交給了我,使我有機會彌補第5版中文版未能出版之缺憾。 潘愛民 2018年1月於杭州 譯者序二 微軟的Windows

作業系統歷經三十年左右的發展,早已成為一個博大精深的桌面及伺服器作業系統,並在市場上獲得了很大的成功。但近十年來,以亞馬遜、穀 歌、Facebook等為代表的互聯網企業在市場和技術兩方面開疆拓土,極大地推動了移動設備、雲計算、大資料和人工智慧等行業的發展,顯著影響了包括微 軟在內的各大傳統軟體巨頭的發展態勢。繼2006年亞馬遜提出雲計算之後,微軟於2008年首度公開Azure虛擬機器雲平臺,SAP也在2012年公開其 應用程式雲平臺。儘管各種新的技術不斷湧現,但本書的定位焦點仍然在Windows作業系統本身,在我看來,這本書的價值依然很高,因為技術的本源有共通 性,Windows作業系統又可謂

是微軟技術的中流砥柱——微軟的Azure雲平臺的作業系統就是基於Windows開發的,其上運行的虛擬機器管理器正是 最早在Windows Server 2008中發佈的Hyper-V。 如果你對Windows作業系統有著濃厚的興趣,自然不應該錯過本書。如 果你是分散式系統架構師,也同樣能從本書中受益。這是因為,分散式系統和作業系統在許多方面都有著或多或少的相似性,對作業系統設計原理的掌握自然會對分 布式系統的設計有重大啟發和幫助。比如,作業系統的執行緒調度和分散式系統的負載均衡、作業系統的磁片緩存和分散式系統的緩存設計、作業系統的檔案系統和分 布式系統的檔案系統、虛擬機器管理器的VLAN和分

散式系統的軟體定義網路(SDN)、作業系統的效能監視器與分散式系統伺服器的性能監視平臺等之間都有不少相似性。 以交易處理為例,Windows Vista中引入了KTM(內核事務管理器,參見本書第12章),它所實現的事務的隔離級別類似於資料庫的READ COMMITTED級別,是一種幾乎所有SQL資料庫都會實現的隔離級別;而分散式系統中的Paxos共識演算法所能實現的分散式事務,其隔離級別也類似於 READ COMMITTED。又以磁片緩存為例(參見本書第11章),作業系統的磁片緩存是強一致性的,而分散式系統緩存可以做成應用伺服器內的,或者是專門的緩 存層,前一種實現對負載均衡調度有特殊要求,

而普通的負載均衡會大大降低緩存命中率從而導致系統性能低下,後一種實現則在網路延遲上稍差些。兩種實現都要 考慮是做成強一致性的還是最終一致性的,前者需要在寫的同時更新緩存,後者則需要自動淘汰舊的緩存資料。緩存的細微性也很重要,細微性過小可能導致索引資料量 過大,這和作業系統磁片緩存的原理是類似的。所以,理解作業系統的知識能拓展眼界,進而對基於這些系統的設計產生正面影響。 此外,理解作業系統的 行為有助於設計性能更高的分散式程式。比如,瞭解作業系統磁片緩存的原理,有助於設計出高性能的物件存儲服務——可以想辦法提高物件存儲在作業系統上的緩 存命中率,或者在必要時禁用作業系統緩存而改為自己實現緩存機制

。又如,瞭解作業系統網路棧的工作模式,有助於編寫做高速網路傳輸的程式,甚至可以深入驅 動程式層面做進一步的性能優化。 我是Windows作業系統的深度使用者,學習和研究了包括Windows、Linux、FreeBSD、 OpenBSD在內的多種作業系統。從1995年首次接觸Windows 3.1開始,就與Windows結下了不解之緣。陸續使用過Windows 3.1、Windows 95、Windows 98、Windows ME、Windows NT 4.0、Windows 2000、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8

.1和Windows 10等各個版本,還接觸過Windows Server 2000、Windows Server 2003、Windows Server 2008、Windows Server 2008 R2等伺服器版本,以及其上的Microsoft Virtual PC、Virtual Server和Hyper-V虛擬化技術。我會好奇它們有著怎樣的功能和性能,底層是怎樣工作的,為什麼這樣設計而不是那樣設計的;正是因為這種好奇,所 以Windows Internals一直是我十分感興趣的一本書。在完成本書上冊的翻譯工作後,我寫了一篇後記。2012年,當好友高博打電話告訴我有機會參與《深入解析

Windows作業系統》第6版的翻譯時,我非常欣喜。在高博的引薦下,我首次見到了仰慕已久的潘愛民老師。因此我非常感謝高博的引薦和潘愛民老師的認 可,感謝電子工業出版社的劉皎和白濤兩位編輯,本書的出版離不開他們的策劃和編輯。 范德成 2018年1月於上海浦東張江 引言 《深入解析Windows作業系統(第6版)》的讀者物件是那些想要理解Microsoft Windows 7和Windows Server 2008 R2作業系統的核心元件內部工作機理的高級電腦專業人員(包括開發人員和系統管理員)。開發人員利用這些知識,可以在構建Windows平臺上的應用程 序時更好地理解各種設計決策背後的基

本原理,調試複雜的問題。系統管理員也可以從這些資訊中獲益,因為理解了

數位監控系統之視訊多媒體資料庫實作與研究

為了解決工作管理員 顯示 錯誤的問題,作者蕭志豪 這樣論述:

數位監控與多媒體資料庫越來越密不可分,因為監控系統數位化後,為提高安全品質,在監控錄影檔案的應用層面已有許多研究顯示,找尋媒體檔案中的有效資訊與如何詮釋資訊已蔚為主流的課題。本研究以MySQL資料庫為研究基礎,將多媒體錄影資料以LongBLOB型式存入資料庫中,透過MFC專案做視窗軟體開發,經由MyODBC的連線對資料庫做媒體檔案的存取控制,並使用Open CV 函式庫產生媒體檔案中的詮釋資料,這其中包含移動偵測、人臉偵測,並將檔案物件與詮釋資料一同寫入MySQL資料庫之中,這在日後查詢龐大數量的檔案上可有效率的節省時間,也提高資料的可信度。本研究的多媒體資料庫也進行系統效能測試,實驗中進行

了大批的檔案寫入資料庫的測試,平均可達每秒12.2MB的速度,同時也記載了CPU的使用率,這個實驗結果可做為DVR伺服器在管理監控系統的硬體考量依據,也是數位監控在媒體檔案管理上新的契機。