翔泳社の公式通販SEshopは全国送料無料!
ヘルプ 法人のお客様へ 新規会員登録 ログイン
SEshop

Windowsカーネルドライバプログラミング

Pavel Yosifovich(著) , 吉川 邦夫(翻訳)

商品番号
170820
販売状態
発売中
納品形態
宅配便にてお届け
発売日
2021年05月19日
出荷開始日
2021年05月18日
ISBN
9784798170824
判型
B5変
ページ数
408
キーワード
プログラミング  オブジェクト指向  Windows  開発  C/C++

4,180円(税込)(本体3,800円+税10%)
送料無料

380pt (10%)
ポイントの使い方はこちら

在庫あり

初回購入から使えるポイント500円分プレゼント

電子書籍はこちら

※1点の税込金額となります。 複数の商品をご購入いただいた場合のお支払金額は、 単品の税込金額の合計額とは異なる場合がございますので、予めご了承ください。

  • ポスト

Windowsカーネルを活用するドライバ開発に必要な環境構築と
カーネルドライバ開発の最初の取っ掛かりを提供する

【本書の内容】
本書は
Pavel Yosifovich, "Windows Kernel Programming",
Leanpub Publishing, 2019
の邦訳です。

本書はWindows用のカーネルドライバの開発方法について解説した書籍です。
カーネルドライバは、ハードウェアを扱うのではなく、プロセスやスレッド、
モジュール、レジストリなど、Windows特有のシステム自体を扱います。
そのため、注意深く目を配らなければならない範囲は広大です。
とはいえ、Visual Studioとデバッガーをはじめとする数種類のツールの使いかた
さえ理解できれば、Windowsカーネルが持っているパワーを最大限に活用できる
ドライバのプログラミングは難しいことではありません。
『Windowsカーネルドライバプログラミング』は、プログラミングをはじめるに
あたって必要となる環境構築と、システムを構成するオブジェクト群を解説し、
重要なイベントの監視やイベントの抑制などに役立つ、フィルタードライバの開発
まで紹介します。

【本書のポイント】
・フィルタードライバ開発に向けた最短距離
・必要最小限のAPI解説
・プログラムコードはC/C++

【読者が得られること】
・カーネルドライバ開発の概要がわかる
・カーネルドライバ開発に入門できる
・各種ツールを扱えるようになる
・Windowsシステムが理解できるようになる
・ハッカーを気取れる

【著者について】
・Pavel Yosifovich(パーベル・ヨシフォビッチ)は、開発者、トレーナー、著者、
講演者です。共著に『インサイドWindows 第7版 システムアーキテクチャ、プロセス、
スレッド、メモリ管理、他』(日経BP、2018年4月)、著書に
"Windows Presentation Foundation 4.5 Cookbook"(Packt Publishing、2012年9月)、
"Windows 10 System Programming,Part1"(Independently published、2020年4月)
などがあります。Pavelはソフトウェア全般を愛しており、古いCommodore 64が今でも
大好きです。

Windowsカーネルドライバプログラミング

Visual Studioを使い、Windowsカーネル環境で行うプログラミングのガイドブック

本書はWindows用のカーネルドライバの開発方法について解説した書籍です。カーネルドライバは、ハードウェアを扱うのではなく、プロセスやスレッド、モジュール、レジストリなど、Windows特有のシステム自体を扱います。そのため、注意深く目を配らなければならない範囲は広大です。とはいえ、Visual Studioとデバッガーをはじめとする数種類のツールの使いかたさえ理解できれば、Windowsカーネルが持っているパワーを最大限に活用できるドライバのプログラミングは難しいことではありません。『Windowsカーネルドライバプログラミング』は、プログラミングをはじめるにあたって必要となる環境構築と、システムを構成するオブジェクト群を解説し、重要なイベントの監視やイベントの抑制などに役立つ、フィルタードライバの開発まで紹介します。

※本書はPavel Yosifovich著『Windows Kernel Programming』(Leanpub Publishing, 2019)の邦訳です。

第1章 Windows内部機構の概要

第1章 Windows内部機構の概要

プロセス/仮想メモリ/スレッド/システムサービス/システムアーキテクチャ/ハンドルとオブジェクト

第2章 「カーネル開発」に着手する

第2章 「カーネル開発」に着手する

ツールのインストール/ドライバプロジェクトの作成/DriverEntryとUnloadのルーチン/ドライバの配置/単純なトレーシング

第3章 カーネルプログラミングの基礎

第3章 カーネルプログラミングの基礎

カーネルプログラミング全般のガイドライン/デバッグビルドとリリースビルドの違い/カーネルAPI/関数とエラーコード/文字列/動的なメモリ割り当て/リスト/ドライバオブジェクト/デバイスオブジェクト

第4章 ドライバを作る(始めから終わりまで)

第4章 ドライバを作る(始めから終わりまで)

優先順位の問題/ドライバの初期化/クライアントのコード/CreateとCloseのディスパッチルーチン/DeviceIoControlのディスパッチルーチン/インストールとテスト

第5章 デバッグ

第5章 デバッグ

Debugging Tools for Windows/WinDbgの紹介/カーネルデバッグ/フルカーネルデバッグ/チュートリアル:カーネルドライバをデバッグする

第6章 カーネルの機構

第6章 カーネルの機構

割り込み要求レベル(IRQL)/遅延プロシージャコール(DPC)/非同期プロシージャコール(APC)/構造化例外処理(SEH)/システムクラッシュ スレッド同期/高レベルIRQLの同期/作業項目(ワークアイテム)

第7章 I/O要求パケット

第7章 I/O要求パケット

IRPの紹介/デバイスノード/IRPとI/Oスタックロケーション/ディスパッチルーチン/ユーザーバッファをアクセスする/「ゼロ・ドライバ」に統合する

第8章 プロセスとスレッドの通知

第8章 プロセスとスレッドの通知

プロセス通知/プロセス通知を実装する/ユーザーモードにデータを提供する/スレッド通知/イメージロード通知

第9章 オブジェクトとレジストリの通知

第9章 オブジェクトとレジストリの通知

オブジェクト通知/プロセス保護ドライバ/レジストリ通知/レジストリ通知の実装

第10章 ファイルシステムミニフィルター

第10章 ファイルシステムミニフィルター

ロードとアンロード/初期化/インストール/I/O操作の処理/削除保護ドライバ/ファイル名/コンテクスト/I/O要求を出す/ファイルバックアップドライバ/ユーザーモードとの通信/デバッグ

第11章 その他の話題

第11章 その他の話題

ドライバの署名/ドライバの検証ツール/ネイティブAPI/フィルタードライバ/デバイスモニタ/ドライバフッキング/カーネルライブラリ

サンプルコード

サンプルコード

サンプルコードは、すべて本書のGitHubリポジトリから自由に入手できます。コードサンプルの更新は、このリポジトリにプッシュしていく予定です。

第1章 Windows内部機構の概要
1.1 プロセス
1.2 仮想メモリ
1.3 スレッド
1.4 システムサービス(いわゆるシステムコール)
1.5 システム全体のアーキテクチャ
1.6 ハンドルとオブジェクト

第2章 「カーネル開発」に着手する
2.1 ツールをインストールする
2.2 ドライバプロジェクトを作る
2.3 DriverEntryとUnloadのルーチン
2.4 ドライバを配置する
2.5 単純なトレースを行う
2.6 課題
2.7 まとめ

第3章 カーネルプログラミングの基礎
3.1 カーネルプログラミング全般のガイドライン
3.2 デバッグビルドとリリースビルド
3.3 カーネルAPI
3.4 関数とエラーコード
3.5 文字列
3.6 動的なメモリ割り当て
3.7 リスト
3.8 ドライバオブジェクト
3.9 デバイスオブジェクト
3.10 まとめ

第4章 ドライバを作る(始めから終わりまで)
4.1 はじめに(優先順位の問題)
4.2 ドライバの初期化
4.3 クライアントのコード
4.4 CreateとCloseのディスパッチルーチン
4.5 DeviceIoControlのディスパッチルーチン
4.6 インストールとテスト
4.7 まとめ

第5章 デバッグ
5.1 Debugging Tools for Windows
5.2 WinDbgの紹介
5.3 カーネルデバッグ
5.4 フルカーネルデバッグ
5.5 チュートリアル:カーネルドライバのデバッグ
5.6 まとめ

第6章 カーネルの機構
6.1 割り込み要求レベル
6.2 遅延プロシージャコール(DPC)
6.3 非同期プロシージャコール(APC)
6.4 構造化例外処理(SEH)
6.5 システムクラッシュ
6.6 スレッド同期
6.7 高レベルIRQLの同期
6.8 作業項目(ワークアイテム)
6.9 まとめ

第7章 I/O要求パケット
7.1 IRPの紹介
7.2 デバイスノード
7.3 IRPとI/Oスタックロケーション
7.4 ディスパッチルーチン
7.5 ユーザーバッファをアクセスする
7.6 「ゼロ・ドライバ」に統合する
7.7 まとめ

第8章 プロセスとスレッドの通知
8.1 プロセス通知
8.2 プロセス通知を実装する
8.3 ユーザーモードにデータを提供する
8.4 スレッド通知
8.5 イメージロード通知
8.6 課題
8.7 まとめ

第9章 オブジェクトとレジストリの通知
9.1 オブジェクト通知
9.2 プロセス保護ドライバ
9.3 レジストリ通知
9.4 レジストリ通知を実装する
9.5 課題
9.6 まとめ

第10章 ファイルシステムミニフィルター
10.1 はじめに
10.2 ロードとアンロード
10.3 初期化
10.4 インストール
10.5 I/O操作を処理する
10.6 削除保護ドライバ
10.7 ファイル名
10.8 もう1つの削除保護ドライバ
10.9 コンテクスト
10.10 I/O要求を発行する
10.11 ファイルバックアップドライバ
10.12 ユーザーモードとの通信
10.13 デバッグ
10.14 課題
10.15 まとめ

第11章 その他の話題
11.1 ドライバの署名
11.2 ドライバの検証ツール
11.3 ネイティブAPIを使う
11.4 フィルタードライバ
11.5 デバイスモニタ
11.6 要求の結果
11.7 ドライバフッキング
11.8 カーネルライブラリ
11.9 まとめ

各種問い合わせは以下のリンクからご連絡ください

感想・レビュー

walker さん

2021-06-19

日本語唯一(訳だが)のWindows 10時代のWDMに関する書籍。内容は入門者向けである。WDM自体ほとんど完成しているものと思われるので、あまり目新しい内容はないと思われる。ソフトウェアドライバに関する内容なので、ハードウェアドライバなどに関しては未だにXP時代のものを参考にする必要があると思われる。ドライバに関する書籍は書かれている内容が難しいことと文章(もしくは訳)が下手糞なことがあって読みにくいことが多いのだが、これは比較的読みやすいと感じた

関連商品

なっとく!並行処理プログラミング

3,520円(税込)

2024.11.11発売

おすすめ特集

プログラミング入門書大特集

翔泳社のプログラミング書籍の中から、入門・初級者向けの書籍をピックアップ!

Linuxおすすめ本特集

【Linux本特集】入門~達人レベルまで!クラウド時代の必須知識Linuxを学ぶおすすめの本

ライティングおすすめ本

ライティングのスキルアップにおすすめの本。Webライティングやコピーライティングなど

マネー本特集

お金と経済の基礎知識から、資産形成・投資術、お金教育や介護まで。暮らしに役立つマネー本

インテリア本特集

おしゃれな部屋作りのヒントやインテリアの基礎知識、色使い、うつわや洋食器の知識まで、幅広い書籍をご紹介

事務職におすすめの本

Excel、日商簿記、業務の自動化を実現するRPAやPythonの技術など、事務職としてステップアップしたい人に!

特集をもっと見る