初心者向けデバイスドライバ講座
ドライバへのETWの埋め込み
サイエンスパーク株式会社 神戸 佑太
1
Copyright@2020 SciencePark Corp.
ID:ykanbe
名前:神戸佑太(カンベ ユウタ)
出身地:静岡県静岡市 趣味:サッカー・乗馬
静岡大学理学部物理学科卒業
卒業後産業機械メーカーで勤務、
今年4月にサイエンスパーク株式会社に転職
プラットフォーム開発部:デバイスドライバ課所属
⇒デバイスドライバ初心者が学んだ内容を発表していきます。
自己紹介
2
4月入社後これまでに取り組んだ業務内容から学んだ内容から発表を行う。
→既存のドライバへのログ機能(ETW)の追加
今回の目標
3
Event Tracing for Windows の略
Windows OS(Windows Vista以降)のイベントトレースの仕組み。
ETWを使用してログを取得するメリットを以下に挙げます。
1.ドライバのパフォーマンスにほぼ影響しない
2.1の理由からRelease版でもトレースログ機能を有効にできる
3.ログ取得のために、追加でアプリケーションをインストールする必要がない
4.BSODが発生した場合、ダンプファイルからログの取り出しが可能
今回はWindows Driver Kit(WDK) とVisual Studio を使用してETWの実装する方法を
紹介します。
ETWとは
4
5
GUIDとトレースフラグを定義
任意のヘッダファイル(Trace.hとする)で以下を定義していきます。
• GUID・・・オブジェクトを識別するための識別子
今回はトレース対象のドライバに対するGUIDを定義
• トレースフラグ・・・フラグを指定することでトレースするタイミングを制御できる。
ログ出力時にトレースフラグを指定することで、フラグに対応した
トレースメッセージがログに書き込まれる。
128bit 16進法で32桁のGUIDを定義t
ヘッダファイルと.tmhファイルをインクルード
6
ログを出力するファイルごとにヘッダファイルとtmhファイルをインクルードします。
tmhファイル・・・ TraceMessageHeaderファイル。
WPP プリプロセッサによって、生成されるトレースで使用される
関数、変数の宣言を含むテキストファイル。
Main.tmhはビルド時にWPPによって生成されるためインテリセンスがエラーになる
Main.cにインクルードするファイル例
トレースの初期化処理、クリーンアップ処理を追加
7
ドライバのエントリポイント(DriverEntry関数)にイベントトレースの初期化処理を追加します。
ドライバーのアンロードルーチンにイベントトレースのクリーンアップ処理を追加します。
また、ドライバエントリに失敗した場合に備え、ドライバエントリルーチンにも
クリーンアップ処理を追加します。
コードへのトレースメッセージ関数の追加
9
DriverEntyにユーザー定義関数TraceEventsを埋め込んだ
例
ビルド、インストール
10
ドライバープロジェクトのプロパティで以下の設定をしてビルドし、
インストールします。
・Wpp有効
構成プロパティ-Wpp Tracing-General
-Run Wpp Tracing →はい
・GUIDやトレースフラグを定義した、ヘッダー
ファイルをScan Configuration Dataとして指定
構成プロパティ-Wpp Tracing-File Options
-Scan Configuration Data→trace.h
ログ出力の確認 – TraceViewの設定
11
①空欄を右クリックし、
Create New Log Sessionを選
択
②ビルド時に生成されるpdbファイルを指定する
pdbファイル:ProgramDataBaseファイル
デバッグとプロジェクトの情報を保持
今回はWDK内のTraceViewを使ってpdbファイルを読み込ませて、ログ出力
の確認を行いました。
Windows Kits/10/Tools/x64/traceview
ログ出力の確認
12
DriverEntryルーチンに入ったログ出力を確認。
ご清聴ありがとうございました。
SP2005-E03-01

More Related Content

PPTX
初心者向けデバイスドライバ講座(6)
PPTX
初心者向けデバイスドライバ講座(1)
PPTX
初心者向けデバイスドライバ講座 (2)
PDF
デバイスドライバのオープンソースフレームワーク
PDF
EMS 勉強会 第1回 Autopilot 祭り - Autopilot 最新情報
PPTX
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
PPTX
02.超初心者向けセキュリティ入門(IoT)
PPTX
Windows 10デバイスドライバ開発の落とし穴 -IoT縛りの勉強会/LT会
初心者向けデバイスドライバ講座(6)
初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座 (2)
デバイスドライバのオープンソースフレームワーク
EMS 勉強会 第1回 Autopilot 祭り - Autopilot 最新情報
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
02.超初心者向けセキュリティ入門(IoT)
Windows 10デバイスドライバ開発の落とし穴 -IoT縛りの勉強会/LT会

What's hot (19)

PDF
EMS勉強会_発表資料_運用自動化基盤の話
PDF
IkaLog and Deep Learning (20161122 GDLCjp)
PDF
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
PDF
#IkaLog によるスプラトゥーンの画像解析と機械学習
PDF
IkaLog Presentation for BMD users
PDF
IkaLog osc2016tf
PPTX
エンタープライズ領域へのテスト効率化推進 - 5年間いろいろやってみました -
PDF
Jasst14東北 事例発表 share
PDF
Splunk機械学習を使ったアンケートコメント分析
PPTX
IkaLog_FPGAStartup1
PDF
ギアと開発とわたし_AAA2015
PDF
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
PDF
20181102_テスト管理を語る夕べ
PPTX
Azure周りの振り返り
PPTX
FSLogix アプリケーションマスク機能実験結果
PDF
エンタープライズシステムにおけるテスト ~STE研究交流会 参加者の視点から ~
PPTX
裏クラウドデザインパターン
PPTX
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
PDF
組込み向けテスト実行フレームワークのご紹介
EMS勉強会_発表資料_運用自動化基盤の話
IkaLog and Deep Learning (20161122 GDLCjp)
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
#IkaLog によるスプラトゥーンの画像解析と機械学習
IkaLog Presentation for BMD users
IkaLog osc2016tf
エンタープライズ領域へのテスト効率化推進 - 5年間いろいろやってみました -
Jasst14東北 事例発表 share
Splunk機械学習を使ったアンケートコメント分析
IkaLog_FPGAStartup1
ギアと開発とわたし_AAA2015
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
20181102_テスト管理を語る夕べ
Azure周りの振り返り
FSLogix アプリケーションマスク機能実験結果
エンタープライズシステムにおけるテスト ~STE研究交流会 参加者の視点から ~
裏クラウドデザインパターン
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
組込み向けテスト実行フレームワークのご紹介
Ad

Similar to ドライバへのETWの埋め込み (20)

PPTX
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
PDF
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
PPTX
MacOS10.15への対応について
PDF
さくらとエンジニアの幸せな未来を実現するための組織づくり(Developers Summit 2016 KANSAI)
PDF
SHIFT EVOLVE_テストケースの自動生成に生成AIの導入を試みた話.pdf
PDF
ファーストアカウンティング会社説明資料 for engineer 2022年7月版
PPTX
IoTC -> Power Automate & Apps
PDF
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session
PDF
駅すぱあとWebサービスにおけるAWSとその周辺
PPTX
欲しいアプリは自分で作る!経済産業省も認めたPower Appsの威力と可能性
PPTX
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
PDF
大規模なリアルタイム監視の導入と展開
PDF
Web制作者視点で理解するソフトェアテスト
PPTX
ドライブレコーダの動画を使った道路情報の自動差分抽出
PDF
テストマネジメントツールSquash TMを利用した継続的テスト改善
PDF
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
PDF
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
PDF
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
PDF
第79回 Machine Learning 15minutes ! 生成AIをエンタープライズで活用するWatsonx.aiの紹介
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
MacOS10.15への対応について
さくらとエンジニアの幸せな未来を実現するための組織づくり(Developers Summit 2016 KANSAI)
SHIFT EVOLVE_テストケースの自動生成に生成AIの導入を試みた話.pdf
ファーストアカウンティング会社説明資料 for engineer 2022年7月版
IoTC -> Power Automate & Apps
EdgeWorkers の導入について - Akamai TechWeek 2021 Japan Customer Session
駅すぱあとWebサービスにおけるAWSとその周辺
欲しいアプリは自分で作る!経済産業省も認めたPower Appsの威力と可能性
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
大規模なリアルタイム監視の導入と展開
Web制作者視点で理解するソフトェアテスト
ドライブレコーダの動画を使った道路情報の自動差分抽出
テストマネジメントツールSquash TMを利用した継続的テスト改善
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
第79回 Machine Learning 15minutes ! 生成AIをエンタープライズで活用するWatsonx.aiの紹介
Ad

More from Study Group by SciencePark Corp. (20)

PPTX
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
PPTX
YOLOとご一緒にPandasはいかがですか
PPTX
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
PPTX
JTAGを使ってみよう
PPTX
ローカルストレージでの永続化キューの方式を本気で比較してみた
PPTX
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
PPTX
06.超初心者向けセキュリティ入門(.netの解析と対策)
PPTX
Visual StudioでWixをビルドしてみた
PPTX
Teamsでのリモート勉強会の開き方
PPTX
リモートでの勉強会参加方法
PPTX
No.2 超初心者向け セキュリティ入門
PPTX
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
PPTX
01.超初心者向けセキュリティ入門
PPTX
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれる
PPTX
無線通信にて遠隔操作を行うVRトラッキングカメラ
PPTX
Sphinxの環境構築が再現できない問題をDockerで解決してみた
PDF
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
PPTX
雰囲気で​マインドフルネスしてみた​
PPTX
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
YOLOとご一緒にPandasはいかがですか
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
JTAGを使ってみよう
ローカルストレージでの永続化キューの方式を本気で比較してみた
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
06.超初心者向けセキュリティ入門(.netの解析と対策)
Visual StudioでWixをビルドしてみた
Teamsでのリモート勉強会の開き方
リモートでの勉強会参加方法
No.2 超初心者向け セキュリティ入門
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
01.超初心者向けセキュリティ入門
Azure DevTestLabsはデスクトップアプリ開発のテストを楽にしてくれる
無線通信にて遠隔操作を行うVRトラッキングカメラ
Sphinxの環境構築が再現できない問題をDockerで解決してみた
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
雰囲気で​マインドフルネスしてみた​
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする

ドライバへのETWの埋め込み