WFP Layer 2 Filtering について

こんにちは、紫陽花がきれいな季節になりましたね。WDK サポートチームのいわいだです。 Windows 8 から Layer 2 の MAC ヘッダー領域を Windows Filtering Platform のコールアウト ドライバーでフィルターできるようになっております。 今回は、その WFP Layer 2 Filtering についてご紹介します。 が、その前に一旦おさらいです。ネットワーク関連のフィルターには、    1. NDIS 中間ドライバー (NDIS IM)    2. NDIS フィルター ドライバー (NDIS Light Weight フィルター)    3. WFP コールアウト ドライバー というようにそれぞれフィルター機能を有するドライバー インターフェイスが提供されています。 ざっくりと各種フィルターの役割や用途などについて説明すると、次のようになっています。このあたりについては、過去の Blog エントリ 「Windows の Network Driver」 にもありますのであわせてご参照ください。​ 種類 1. NDIS 中間ドライバー 2….


カーネルモード デバッガで UMDF ドライバをライブデバッグする

UMDF ドライバをデバッグする際に、ユーザーモード デバッガでWUDFHost.exe にアタッチしてライブデバッグするだけではデバッグしきれなくて困ったことはありませんか?   例えば、OS のシャットダウン中の処理をデバッグしたい場合、ユーザーモード デバッガを操作している画面がシャットダウン中になるため、デバッガをその画面から操作できなくなります。   そこで、今回は、カーネルモード デバッガ(windbg.exe) でUMDF ドライバをデバッグする方法をご紹介します。カーネルモード デバッガからであれば、画面がシャットダウン中であっても、UMDF ドライバのブレークポイントで止めて、ライブデバッグすることができます。   具体的には、以下の手順で進めます。   ターゲットPC へのUMDF2 ドライバのインストール ターゲットPC へのWDFVerifier.exe のコピー カーネルモードデバッガをターゲットPC にアタッチ WDFVerifier.exe によるターゲット PC の設定 動作確認   今回は、例として、デバッガのホストPC、ターゲットPC ともにWindows 10 (1703) x86 で行います。また、サンプルドライバをビルドする開発用PC はデバッガのホストPC と同一とします。   1.ターゲットPCへのUMDF2 ドライバのインストール   ターゲットPC にUMDF2 ドライバをインストールします。今回は、例として、UMDF2 のToaster Sample のwdffeaturedum.dll を使用します。   サンプルの入手とビルド方法は、以下のエントリの「1. サンプルの入手」と「2. サンプルのビルド」をご参照ください。…


新しい WDK for Windows 10 version 1703

[更新] 2017 年 4 月 28 日 に、インストール後の注意点に関する記述を追加しました。     Windows 10 Version 1703 のリリースに合わせて、新しい WDK が公開されました!   お花見の季節ですね、WDK サポートチームの石沢です。 新しい Windows Driver Kit (WDK) はこちらからダウンロードできますので、是非お試しください!   WDK、WinDbg、および関連ツールのダウンロード https://developer.microsoft.com/ja-jp/windows/hardware/windows-driver-kit   インストール時の注意点 WDK 1703 をインストールされる際は、以下の 2 点にご注意ください。   ・2017 年 4 月 12 日現在では、Visual Studio 2017 には対応しておりません。Visual Studio 2015 Update 3 をご利用ください ・Windows 10, version 1607…


NDIS Virtual Miniport Driver (netvmini) サンプルをインストールする

今回は、ネットワークアダプタ (または Network Interface Card: NIC) のドライバのサンプル NDIS Virtual Miniport Driver (netvmini) サンプルをご紹介します。   このサンプルは、物理 NIC を必要とせずに、NDIS ミニポートドライバの実装を確認できるサンプルです。ミニポートドライバについては、さなえすさんの以前の記事「Windows の Network Driver」をご参照ください。   今回は、このサンプルをビルドして、ターゲット側 PC の Windows 10 (1607) x86 にインストールし、デバイスマネージャー上で表示されるところまでを確認します。サンプルをビルドする、開発側の PC は Windows 10 (1607) x64 に Visual Studio 2015 と WDK 10 がインストールされています。   1. サンプルの入手   NDIS Virtual Miniport Driver (netvmini) サンプルは、以下のサイトの右側の緑色の [Clone…


Microsoft ASL Compiler (asl.exe) を使ってみる

今回は、Microsoft ASL Compiler (asl.exe) を使って、BIOS の ACPI テーブルを編集する手順をご紹介したいと思います。   Microsoft ASL Compiler (asl.exe) は、システム上の種々の ACPI テーブルの逆アセンブリ、ACPI Source Language (ASL) ファイルのコンパイル等の機能が含まれています。   Microsoft ASL compiler https://msdn.microsoft.com/windows/hardware/drivers/bringup/microsoft-asl-compiler (日本語訳 : https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn551195(v=vs.85).aspx)   これと、以下のサイトの GpioSampleKMDF.asl のサンプルを使います。   https://github.com/Microsoft/Windows-driver-samples/blob/master/gpio/samples/simdevice/kmdf/GpioSampleKMDF.asl   実際のファイルは、以下のサイトの右側の緑色の [Clone or Download] ボタンを押すと表示される [Download ZIP] ボタンで Windows-driver-samples-master.zipをダウンロードすると、Windows-driver-samples\gpio\samples\SimDevice\kmdf フォルダにあります。   https://github.com/Microsoft/Windows-driver-samples   今回は、例として、ターゲット PC としてWindows 10 (1607) x86の仮想マシンの BIOS…


V4 プリンター ドライバのデバッガアタッチ方法

V4 プリンター ドライバをデバッグするときに、どのようにデバッガをアタッチすればよいか困ったことはありませんか?   明けましておめでとうございます!WDK サポートチームの石沢です。 今回は V4 プリンタドライバのレンダリングフィルタに Visual Studio をアタッチする方法をまとめたいと思います。 なお、ドライバパッケージの作成に関しては、まさかたさんの以下の記事を参考にしてください。今回はすでにドライバパッケージが出来上がっているものとして進めます。   プリンター用デバイスアプリのサンプルを動かしてみる https://blogs.msdn.microsoft.com/jpwdkblog/2013/05/21/12427/   プリンタドライバのデバッグ方法については、基本的には A 尾さんの以下の記事が元となっているのですが、実際にレンダリングフィルタのソースコード上でブレイクするところまでやってみたいと思います。   プリンタドライバやスプーラ コンポーネントをデバッグする https://blogs.msdn.microsoft.com/jpwdkblog/2009/06/26/1246-2/   具体的なデバッグまでの道のりは以下となります。   <デバッグまでの道のり> 1. V4 プリンター ドライバのインストール 2. PrintFilterPipelineSvc サービスのタイムアウト時間の設定 3. アプリケーションからの印刷 その 1 4. PrintFilterPipelineSvc サービスにデバッガをアタッチ 5. アプリケーションからの印刷 その 2   なお、今回動作を確認した環境は以下です。   ・OS: Windows 10 x86 Enterprise ・デバッガ:…


デバイスマネージャーの [表示] を [デバイス (接続別)] に切り替える

切り分けのために、接続したデバイスと PC のバスとの間でどんなドライバーが動いているか知りたいと思ったことはありますか?   皆さん、こんにちは。Windows Driver Kit サポートチームの津田です。今回は、そんな皆様に、デバイス マネージャーの [表示] を、デフォルトの [デバイス (種類別)] から [デバイス (接続別)] に切り替え、各デバイス ノードからドライバーを確認できるところをお見せしたいと思います。また、同じドライバー構成をカーネルデバッガーでデバイス ノードをたどって確認する方法もご紹介します。   今回、例として Windows 10 (1607) x86 を使います。   1. [スタート] メニューを右クリックして、[デバイス マネージャー] をクリックして、デバイス マネージャーを起動します。 2. 任意のデバイスをクリックします。今回は例として、[ディスクドライブ] にある [Virtual HD ATA Device] をクリックします。     3. 上図のように、[表示] をクリックすると、[デバイス (種類別)] となっているので、[デバイス (接続別)] をクリックします。     4. 上図の通り、対象デバイスが接続されている場所がツリー状に表示されます。上記の例では、以下のツリーになっています。  …


UMDF Version 2 の Toaster Sample をインストールする

今回は、ユーザーモードドライバーフレームワーク(User-mode Driver Framework, UMDF) のバージョン 2 について学びたい方向けのサンプル、Toaster Sample (UMDF Version 2) をご紹介します。   皆さん、こんにちは。WDK サポートチームの津田です。今回は、このサンプルをビルドして、ターゲット側 PC の Windows 10 (1607) x86 にインストールし、デバイスマネージャ上で表示されるところまでを確認します。サンプルをビルドする、開発側の PC は Windows 10 (1607) x64 に Visual Studio 2015 と WDK 10 がインストールされています。   1. サンプルの入手   Toaster Sample (UMDF Version 2) サンプルは、以下のサイトの右側の緑色の [Clone or Download] ボタンを押すと表示される [Download ZIP] ボタンで Windows-driver-samples-master.zipをダウンロードすると、Windows-driver-samples-master\general\toaster\umdf2 のフォルダにあります。…


Windows 10 Anniversary Update で適用されたドライバー署名の新しいポリシーについて

こんにちは。JS です。   以前、ブログ エントリ「Windows 10 と SHA-1 廃止ポリシーによるドライバー署名への影響について」で、Windows 10 で新しくなったドライバーの署名ポリシーについて触れたかと思います。当時はポリシーの事前のご案内であったため、今年 7 月 29 日 にリリースされた Windows 10 Anniversary Update で、そのポリシーが実際に適用されるようになりました。 この適用により、本格的にマイクロソフトの署名が必要となったため、ドライバーの開発者の皆様はこの先どのような対応が可能か、検討しているかと思います。実際、我々サポートチームも、ポリシーがどのように適用され、どのような対応が可能かについて、お問い合わせをいただいております。そのため、皆様のご参考になりますよう、今回のエントリでは、Windows 10 のドライバー署名ポリシーを一度おさらいし、注意点やよくある質問についても触れたいと思います。   Q: Windows 10 Anniversary Update のドライバー ポリシーはどういったものなのか? A: Windows 10 Anniversary Update では、基本的に、カーネル モードで動作するドライバーは、マイクロソフトより発行された証明書を用いた署名が付与されている必要がございます。もしマイクロソフトによる署名が付与されていない場合、ドライバーのロード時にポリシーが適用され、ドライバーが動作しません。ただ、Windows 10 Anniversary Update でも、特定の条件を満たしている場合に限り、第三者認証機関より発行された証明書を利用した Authenticode 署名 (自己署名) も有効なドライバー署名として扱われます。   Q: 自分で Authenticode 署名したドライバーは、Windows 10 Anniversary Update…


ダンプファイルに保存されたイベントログを取り出す

エンドユーザー様環境で BSOD が発生したため、取り急ぎ ダンプファイルはいただいたものの、その後の調査でイベントログを確認したくなったことはありますか?   皆さん、こんにちは。Windows Driver Kit サポートチームの津田です。今回は、そんな皆様に、ダンプファイルからイベントログを取り出す方法をご案内します。   ただし、あくまでもダンプファイルに残っている範囲の情報になります。そのため、ダンプファイルから得られたイベントログからは有用なログは得られないけれども、実際のイベントログには有用な情報が得られるかもしれないという場合には、改めてエンドユーザー様に事情を説明して、イベントログの採取をお願いすることになります。(もしくは、このようなことにならないよう、ダンプファイルだけでなく予めイベントログのご採取もお願いしておくことも考えられます。)逆に、今回ご案内する方法によって、ダンプファイルから有用なイベントログが得られれば、ご自身やエンドユーザー様等実際の情報採取に関わる方々に、追加のご負担をお願いせずに済む、また、追加の情報採取をお願いする側も待たずに済む、というメリットがあります。   具体的な手順は以下です。   1.ダンプファイルを WinDbg でオープン 2. !wmitrace.strdump で確認したいログの Logger Id を確認 3. !wmitrace.logsave <Logger Id> <ファイル名>.evtx でイベントログを保存 4. イベントビューアーで .evtx ファイルを開いてログを確認   1.ダンプファイルを WinDbg でオープン   今回は例として、前回の記事「ダンプファイルに保存された ETW トレースログを表示する」<https://blogs.msdn.microsoft.com/jpwdkblog/2016/08/29/%e3%83%80%e3%83%b3%e3%83%97%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e4%bf%9d%e5%ad%98%e3%81%95%e3%82%8c%e3%81%9f-etw-%e3%83%88%e3%83%ac%e3%83%bc%e3%82%b9%e3%83%ad%e3%82%b0%e3%82%92%e8%a1%a8/> で使用したダンプファイルをそのまま使います。ダンプファイルの開き方についても、この記事の「8. ダンプファイルを WinDbg でオープン」をご参照ください。   2. !wmitrace.strdump で確認したいログの Logger Id を確認   WinDbg 上の…