驅動程式中使用event view記錄日誌

2021-07-23 23:02:29 字數 1670 閱讀 9844

eventdrv是ms ddk中的乙個demo,演示如何在驅動中使用event view日誌。本文譯自src/general/tracing/evntdrv/evntdrv.htm概述

event是核心態驅動執行日誌樣例.該驅動並不控制任何物理硬體,僅生成日誌事件.它用於演示如何在驅動中使用etw日誌.eventdrv通過呼叫etwregister api來註冊事件產生者.如果驅動載入成功,它將記錄乙個包含裝置名,裝置名長度,狀態碼的startevent事件.每當驅動接收到上層呼叫的deviceiocontrol,它都將記錄乙個sampleeventa事件.如果驅動被解除安裝,它會記錄包含裝置物件的unloadevent事件.注意:wpp跟蹤工具,如traceview.exe並不能啟停和觀察日誌.

使用樣例

按照以下步驟測試eventdrv:

1.用-cgz引數編譯eventdrv

2.通過以下命令安裝位於evntdrv\eventdrv目錄下的manifest檔案

wevtutil im evntdrv.xml

安裝manifest檔案後將會在登錄檔中建立乙個鍵(建立的鍵通常位於hkey_local_machine\system\currentcontrolset\services\eventlog\system\下譯者注),這個鍵包含了事件產生者的相關資訊,這使得一些工具能夠找到相關的資源和訊息檔案(訊息檔案是指:manifest定義的事件通過wenvutil生成供c語言使用的事件標頭檔案,譯者注)

3.用-czg引數編譯evntctrl程式(位於evntdrv\evntctrl).evntctrl向eventdrv傳送ioctl,當eventdrv收到ioctl後將產生日誌

4.在系統根目錄下建立etwdriversample目錄,並將eventdrv.sys/evntctrl.exe拷貝到此.同時從(wdk目錄)tools\tracing目錄拷貝tracelog.exe到此.因為manifest檔案evntdrv.xml指定了資源檔案的路徑為%systemroot%\etwdriversample.如果沒有建立這個目錄或者沒有將evntdrv.sys等檔案拷貝於此,解碼工具由於找不到事件資訊而不能解碼日誌檔案

5.用tracelog開啟名為"testeventdrv"的日誌跟蹤會話.以下命令會開始日誌跟蹤會話並在etwdriversample目錄中建立日誌檔案:eventdrv.etl

tracelog -start testeventdrv -guid #b5a0bda9-50fe-4d0e-a83d-bae3f58c94d6 -f eventdrv.etl
6.執行eventctrl.exe產生跟蹤訊息.這是在步驟3中生成的可執行程式.每次你按下除q或q以外的鍵,eventctrl都會向驅動傳送ioctl,這會促使驅動產生跟蹤訊息.按q或q鍵來停止eventctrl

7.以下命令會停止日誌跟蹤會話:

tracelog -stop testeventdrv
8.用tracerpt顯示tracedrv.etl中的日誌:

tracerpt eventdrv.etl
這個命令會生成2個檔案:summary.txt和dumpfile.xml.dumpfile.xml會以xml格式顯示事件資訊

9.解除安裝manifest:

wevtutil um evntdrv.xml

linux 驅動程式 高階字元驅動程式

ioctl方法 驅動程式的原型實現 int ioctl struct inode inode,struct file filp,unsigned int cmd,unsigned long arg ioctl 命令選擇 位段結構 number direction ioc read ioc write...

使用VC 編譯驅動程式

4,修改工程屬性。選擇 project setting 或者直接按下alt f7鍵,彈出 project settings 在對話方塊中,選擇 general 選項卡。將intermediate files和output files都改為 mydriver check.注 此處資料夾名稱可根據自己需...

使用DpInst安裝驅動程式

dpinst.exe工具位於ddk目錄redist difx dpinst engmui下,同時m 在src setup dpinst目錄下提供了定製dpinst驅動安裝包的樣例。乙個基本的驅動安裝包至少要包含cat,sys 已簽名,測試簽名也可以,為cat和sys做測試簽名的方法可以參考這裡 和i...