Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

初心者向けデバイスドライバ講座(6) Slide 1 初心者向けデバイスドライバ講座(6) Slide 2 初心者向けデバイスドライバ講座(6) Slide 3 初心者向けデバイスドライバ講座(6) Slide 4 初心者向けデバイスドライバ講座(6) Slide 5 初心者向けデバイスドライバ講座(6) Slide 6 初心者向けデバイスドライバ講座(6) Slide 7 初心者向けデバイスドライバ講座(6) Slide 8 初心者向けデバイスドライバ講座(6) Slide 9 初心者向けデバイスドライバ講座(6) Slide 10 初心者向けデバイスドライバ講座(6) Slide 11 初心者向けデバイスドライバ講座(6) Slide 12 初心者向けデバイスドライバ講座(6) Slide 13 初心者向けデバイスドライバ講座(6) Slide 14 初心者向けデバイスドライバ講座(6) Slide 15 初心者向けデバイスドライバ講座(6) Slide 16
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

初心者向けデバイスドライバ講座(6)

Download to read offline

勉強会で発表した資料。
https://sciencepark.connpass.com/event/172442/

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

初心者向けデバイスドライバ講座(6)

  1. 1. 初心者向けデバイスドライバ講座(6) サイエンスパーク株式会社 大島 光人 1 Copyright@2020 SciencePark Corp.
  2. 2. ID:aohshima 名前:大島 光人(オオシマ アキト) 東京電機大学理工学部電子機械工学科卒業 今年4月にサイエンスパーク株式会社に就職 プラットフォーム開発部:デバイスドライバ課所属 ⇒デバイスドライバ初心者が学んだ内容を発表していきます。 自己紹介 2
  3. 3. ・割込みについて →通常の処理中に割込み要求が発生した場合に、通常の処理より優先して処理を行う。 ・割込みサービスルーチン →割込み要求が発生した場合に、管理デバイスかどうかの判定、DPCルーチンの実行ス ケジュールの登録等を行う※ ※必要最低限の処理のみを実行する。 ・DPCルーチン 実際に割込み要求が発生した時に行われるメイン処理を実装する。 前回までの概要 3
  4. 4. 4月になり新入社員も来たので・・・ →改めて、ドライバについての概要を復習する。 今回の目標 4
  5. 5. OSと周辺機器の橋渡しの役割をするソフトウェア。 1つの周辺機器を動かすだけでも、たくさんのデバイスドライバが必要。 デバイスドライバとは PC 周辺機器 5 バスドライバ クラスドライバ ファンクションドライバ ミニポートドライバ
  6. 6. 6 例:実際にUSBメモリを接続した場合 USBクラスドライバ USBバスドライバ PCIバスドライバ ハードウェア ソフトウェア
  7. 7. マウスのドライバを見てみる。 7 一つのデバイスに対して 複数のドライバがロードされていることがわかる
  8. 8. SCM(Service Control Managerへの登録状況) 8
  9. 9. デバイスドライバの基本構成 10 ドライバはC言語をベースとして書かれているが、main()関数は存在しない。 ドライバはルーチン(関数)によって構成され、これらのルーチンはI/Oマネージャか ら呼び出される。 • ドライバエントリルーチン • アンロードルーチン • ディスパッチルーチン • 割り込みサービスルーチン • DPCルーチン • 特別処理、特別種類ドライバのみ適応ルーチン
  10. 10. I/Oマネージャ 11 • ユーザーモードのアプリケーションからド ライバにアクセスするにはI/Oマネージャ を通す必要がある。 • I/Oマネージャ内でドライバは階層構造と なっていて、高いレベルの順に以下のよう になっている ファイルシステムドライバ クラスドライバ ポートドライバ ミニポートドライバ I/Oリクエストによって通過する階層は異な る。
  11. 11. ドライバの処理過程 12
  12. 12. ディスパッチルーチン 13 IRP_MJ_CREATE IRP_MJ_CLOSE IRP_MJ_READ IRP_MJ_WRITE IRP_MJ_DEVICE_CONTROL IRP_MJ_PNP IRP_MJ_POWER ドライバエントリ内でアプリケーションからのデバイスに対する要求を処理する 最上位のドライバのディスパッチルーチンはユーザーモードのアプリケーションのI/O要求を直接処理する その下の中間ドライバや物理ドライバのディスパッチルーチンは一つ上のドライバからのI/O要求を処理する。 I/O処理要求があった際、ディスパッチルーチンはI/Oマネージャによって呼び出される どのディスパッチルーチンを呼ぶかは、I/Oメジャー機能コードによって管理される。 また、ディスパッチルーチンはドライバエントリ処理が終了してから呼び出される。 メジャー機能コード User App Driver A Driver B
  13. 13. 基本的なドライバ処理の流れ① 14 ドライバのインストール(Infスクリプト実行) Sysファイルをサービスとして登録 DriverEntry 各ルーチンの登録 ドライバロード処理 ドライバインストール要求
  14. 14. 基本的なドライバ処理の流れ② 15 ドライバ処理要求 対応したルーチンがコールバックされる 予め登録しておいたルーチン処理が実行 基本的にはユーザーアプリケーションで定義したサービスと動作は変わらない
  15. 15. まとめ 16 ・単純なドライバであれば、フレームワークによる実装の仕方ぐらいでサービスアプリ ケーションと処理過程は変わらない ・デバイス側に近づくにつれて、カーネルモードへの意識等必要 ・とりあえずは、ユーザーモードで動作するドライバを作成してみることで練習になる かも?
  16. 16. ご清聴ありがとうございました。 SP2004-E02-01

勉強会で発表した資料。 https://sciencepark.connpass.com/event/172442/

Views

Total views

191

On Slideshare

0

From embeds

0

Number of embeds

10

Actions

Downloads

3

Shares

0

Comments

0

Likes

0

×