耗時四個月,終於在國慶節完成基礎篇。初衷只有一個:在平靜的技術池裡投入幾顆石子,若能激起你探索未知的漣漪,便是最大成就。本系列面向業餘驅動開發愛好者,僅作入門引領,真正精華仍在參考書目中——知識積累必經「由薄到厚,再由厚到薄」的螺旋昇華。

切入點鎖定 Win32 子系統(最熟悉的介面),研究重心置於 系統執行層 與 核心層。HAL 以下暫不展開。
| 工具 | 角色 | 備註 |
|---|---|---|
| Visual Studio 200x | IDE 編寫代碼 | 不直接編譯驅動 |
| Windows IFS Kit + DDK | 官方編譯器、標頭、庫 | 必選 xp/2000 目標 |
| Compuware DriverStudio 3.x | VS 整合、Wizard、VdwLibs | 已停更,但支援 VS2005 |
| Visual Assist X | 語法提示、代碼導航神器 | trial-reset 可長期試用 |
| VMware / VirtualPC | 雙機核心調試,避免實體機無限重啟 | 虛擬機稱「遠程機」 |
SRV*c:\symbols*https://msdl.microsoft.com/download/symbolsboot.ini 加入:/debug /debugport=com1 /baudrate=115200g 讓遠程機繼續運行。DDK 編譯器與 VS 早已分道揚鑣,必須用 DDK Build 工具鏈 保證二進制一致性。
TARGETNAME=pnpevent
TARGETPATH=obj
TARGETTYPE=DRIVER
USE_PDB=1
INCLUDES=..\..\..\generic
TARGETLIBS=..\..\..\generic\obj$(BUILD_ALT_DIR)\i386\generic.lib
SOURCES= DriverEntry.cpp \
stddcls.cpp \
control.cpp \
readwrite.cpp \
driver.rc
# 註解,* 會被 Build 替換為平台字串(如 i386)。TARGETTYPE 可為 DRIVER/DLL/LIB/EXE…SOURCES 行尾 \ 表示續行。位於 Compuware\DriverStudio\DriverWorks\source,VS2005 語法更嚴格,**必須依文檔修正源碼後再呼叫 DDK NMAKE 編譯**。
// 不推薦
if (x) return y;
// 標準:永遠加大括號,防宏展開陷阱
if (x) {
return y;
}
Sources 加入 MSC_WARNING_LEVEL=-W3,將警告視為錯誤——嚴謹態度能攔截無數潛在 Bug。
VMware 虛擬序列埠最高支援多少 baudrate? 歡迎實測回報。
基礎篇僅止於 WDM/KMDF 入門門檻。完成後你會發現:自己以前寫的全是垃圾碼,但眼界已打開——看見控件之外的廣闊天地。預計 1-2 週消化本篇,下場見!