iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

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
    • 需要重新宣告ControlGUID
      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 驅動程式


上一篇
Day13 使用I/O存取環控晶片-3
下一篇
Day15 使用I/O存取環控晶片-5
系列文
Windows Driver + Electron 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言