在Day13我們將讀取I/O的函式實作並測試成功,但是目前暫時依附在Non-PnP driver sample內,今天我們將要把這些函式獨立成另一隻驅動程式及動態連結函庫,之後的實作都會放在我個人的Repo中供大家參考,先來介紹驅動程式的部分。
參考Day03後半部分,我們重新開啟一個KMDF驅動程式範本(空白)。
輸入專案名稱為Sio。
建立完成後,對來源檔案點選右鍵,加入>新增項目,新增SioAccess.c
。
接著對標頭檔點選右鍵,加入>新增項目,新增SioAccess.h
。
最後一樣對標頭檔點選右鍵,加入>新增項目,新增Trace.h
。
然後我們要來設定相關屬性,因為有使用到WPP軟體追蹤,我們對Sio點選右鍵選擇屬性,將WPP Tracing>General>Run WPP Tracing設為是。
接著到WPP Tracing>File Options>Scan Configuration Data增加Trace.h。
若要使用WinDbg,則需要將C/C++>程式碼產生>執行階段程式庫設為多執行緒偵錯(/MTd)。
首先來介紹WPP軟體追蹤的部分。
Trace.h
define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID( FileIoTraceGuid, \
(086435ca,371d,4795,acc8,c169c0841b9c), \
WPP_DEFINE_BIT(DBG_INIT) \
WPP_DEFINE_BIT(DBG_RW) \
WPP_DEFINE_BIT(DBG_IOCTL) \
)
``
TraceEvents
巨集,供後續讓驅動程式能記錄偵錯訊息。
/
/ This comment block is scanned by the trace preprocessor to define our
/ Trace function.
/
/ begin_wpp config
/ FUNC Trace{FLAGS=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...);
/ FUNC TraceEvents(LEVEL, FLAGS, MSG, ...);
/ end_wpp
/
``
今天簡單介紹了如何建立專案以及設定相關專案屬性跟WPP軟體追蹤的宣告,明天我們再繼續介紹驅動程式主要標頭檔宣告和驅動程式主體。
Sio-Repo
將 WPP 軟體追蹤新增至 Windows 驅動程式