INF ファイルが Universal かどうか検証する方法

今回は、INF ファイルが Universal かどうか検証する方法として、InfVerif.exe を使う方法をご案内します。   Universal INF についてご存じない方や具体的な条件について確認したい方は、以下をご参照ください。   Using a Universal INF File https://docs.microsoft.com/en-us/windows-hardware/drivers/install/using-a-universal-inf-file   InfVerif.exe は、WDK 10 がインストールされている環境の c:\Program Files(x86)\Windows Kits\10\tools\<arch> (<arch> は x86 や x64) フォルダにあります。   以下のドキュメントの通り、/u オプションで Universal かどうかを検証できます。実行時には /v オプションも併せてつけることで、エラーや警告がある時の詳細が確認できます。   Running InfVerif from the command line https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/running-infverif-from-the-command-line   /u        Reports errors if INF is not Universal….


MSDN インシデントで技術サポートにドライバー開発のお問い合わせをする方法

MSDN サブスクリプションの特典として付属している、テクニカル サポートのインシデントを利用して、ドライバー開発に関連したお問い合わせをする方法について、ご案内いたします。   流れとしては、大きく 2 段階あります。   [1] お電話でインシデントをアクティベーションしてアクセス ID と契約 ID を取得 (※初回またはご契約更新後の初回のみ必要) [2] Web から「法人のお客様向け 技術サポート窓口」のページからお問い合わせ   すでに [1] の ID をお持ちの方は、[2] へお進みいただけます。ただ、MSDN サブスクリプションのご契約を更新いただいた場合、改めて [1] が必要になります。   [1] お電話でインシデントをアクティベーションしてアクセス ID と契約 ID を取得   以下のいずれかにお電話をいただき、MSDN サブスクリプションの特典インシデントの有効化(アクティベーション) を行っていただき、アクセス ID と契約 ID を取得します。   カスタマー サービス (0120-750052) サポート契約センター (0120-17-0196)   いずれも営業時間は 9:00-17:30 (土日祝日、弊社指定休業日を除く) です。…


パブリック シンボルとプライベート シンボル

他社でのダンプ解析やライブデバッグのために、自社ドライバのシンボルファイルを提供しないといけないけど、ローカル変数やソースコードの行番号まで出したくないと思ったことはありますか?   内部変数やソースコードの行番号がわかると、リバースエンジニアリングできてしまう可能性が高まったり、API を他社向けに提供している場合に、ローカル変数等がそれをご利用される他社様にわかり、それを前提にコーディングされてしまいますと、API を提供している側としては、その後の実装変更がやりづらくなったり、API を提供されている側としても互換性を保てなくなったりするリスクが高まるかと思います。かといって、それを恐れて、今困っているお客様の現象を調べるために、シンボルファイルを提供しない、というのも、問題の解決が遅れたり、誤った解析結果につながり、お客様の信頼を失うという別のリスクにつながりかねません。   今回は、そのような皆様に、パブリック シンボルとプライベート シンボルのご紹介をしたいと思います。誤解を恐れずにイメージだけを端的に言えば、ローカル変数やソースコードの行番号が含まれる方が「プライベート シンボル」、それらを除いた関数名やグローバル変数が含まれる方が「パブリック シンボル」です。今回の記事では、シンボルについておさらいをした後、パブリックシンボルとプライベートシンボルの違いについてご説明し、最後にその両方をどのように作成するかをご説明します。     シンボルとシンボル ファイル   まず、シンボルとシンボル ファイルについて、おさらいしておきましょう。   シンボル ファイルとは、ドライバ (.sys や.dll) やアプリケーション (.exe) をビルドすると、一緒に作成される、同じ名前の .pdb という拡張子を持つファイルです。   通常、シンボル ファイルは以下のものを含みます。   ・グローバル変数 ・ローカル変数 ・関数名とそのエントリポイントのアドレス ・FPO (Frame Pointer Omission) レコード ・ソースコードの行番号   厳密には、これらのそれぞれを、個別に「シンボル」と呼びます。   ただ、私たちがお客様に「シンボルをください」とお願いする時は、シンボル ファイルそのものを指すことが多いです。   シンボル ファイルが必要な理由は、効率性の面で様々ありますが、それよりも正確性の面で、今見ているコールスタックが間違っていない状態にする必要があるからです。例えば「WARNING: Stack unwind information not available….


Visual Studio 2015 でのテスト署名方法

今回は、Visual Studio 2015 でのテスト署名方法とx64 版のOS でインストールして動作するところまでの手順をご紹介します。   と言っても、WDK で提供されているサンプルはたいてい自動的にテスト署名されることが多いため、テスト署名の方法そのものは、通常はあまり意識する必要がないかもしれません。そのため、テスト署名をされた際に、インストールがうまくいかない場合に、正しい手順との比較がしたい、というような目的としても、今回のブログエントリをご参考にしていただけると幸いです。   今回は、例として、「NDIS Virtual Miniport Driver (netvmini) サンプルをインストールする」でご紹介した、NDIS Virtual Miniport Driver (netvmini) サンプルにテスト署名をし、x64 のOS であるWindows Server 2016 にインストールしたいと思います。サンプルをビルドする、開発側のPC はWindows 10 (1703) x64 にVisual Studio 2015 とWDK 10 がインストールされています。   なお、テスト署名の説明そのものは「ドライバーのデジタル署名の基礎」、Visual Studio を使わずに、コマンドからテスト署名する方法については、以前のブログエントリ「INFファイルを記述する」もしくは、以下のドキュメントをご参照いただければ幸いです。   Test Signing https://docs.microsoft.com/en-us/windows-hardware/drivers/install/test-signing     1. サンプルの入手   NDIS Virtual Miniport Driver (netvmini) サンプルは、以下のサイトの右側の緑色の…


NDIS Connection-less Protocol Driver Sample をインストールする

今回は、NDIS プロトコル ドライバのサンプルNDIS Connection-less Protocol Driver Sample をご紹介します。   このサンプルは、コネクションレス型の、NDIS 6.0 プロトコル ドライバの実装を確認できるサンプルです。プロトコル ドライバについては、さなえすさんの以前の記事「Windows の Network Driver」をご参照ください。Connection-less プロトコルの例としては、UDP があります。これは、トランシーバーの様に明示的な接続をしなくても、通信ができます。そして、Connection-oriented の例としては、TCP があります。こちらは、電話のように相手が着信して初めて接続が確立し、通信ができます。このサンプルは、ユーザーモードからのReadFile/WriteFile で Raw イーサネット フレームを送受信できます。また、イーサネット アダプタへのバインドを確立したり破棄したりできます。   NDIS Connection-less Protocol Driver Sample では、ドライバーに加え、そのドライバーとのやり取りを行うテストアプリケーションがあるので、すぐに検証を行うことができます。   今回は、このサンプル プロトコル ドライバをビルドして、ターゲット側 PC の Windows 10 (1703) x86 にインストールします。そして、本サンプルの test フォルダでビルドする prottest.exe サンプルアプリケーションで、このプロトコル ドライバがバインドされたイーサネット アダプタを列挙し、パケットを送受信するところまでを確認します。サンプルをビルドする、開発側のPC は Windows 10 (1703) x64…


米国時間の第 4 火曜日にリリースされる Windows 10 のアップデートについて

米国時間の第4 火曜日(日本時間の第4 水曜日) にリリースされたWindows 10 のアップデートが環境によって検出されずお困りになったことはありますでしょうか?   この第4火曜日にリリースされるアップデートは、通常、毎月第 2 火曜日に公開されるアップデートと同様、Update Catalog / WSUS / Windows Update にて公開されます。 ただし、Windows Update に関しては、以下の違いがあるため、冒頭の現象が発生します。 (a) Windows Update for Business では公開されません (b) 明示的にWindows Update で利用可能な更新を検索したユーザーのみに公開されます   Windows Update for Business については、Windows 10 1703 (RS2) より、UI から設定が変更可能となっています。(以下の画像)         Windows Update のページにある[詳細オプション] から”Current Branch for Business” となっている場合、Windows Update for Business…


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…