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…


マイクロソフト ランゲージ ポータル

皆さん、はじめまして。祝田です。   今回は、ある問題が発生した時に皆さんが、まず、するであろう情報収集や事例の検索などの手助けとなるサイト マイクロソフト ランゲージ ポータル を紹介したいと思います。 マイクロソフト ランゲージ ポータル 多くの場合、日本語を主言語としている方であれば特別な理由や、こだわりがない限り、基本的には日本語版の OS をご利用いただいているかと思います。そのため、問題が発生したときに表示されるエラーメッセージや、問題が発生しているユーザーインターフェースの表記についても日本語で表示されている場合がほとんどです(一部英語のままの場合もありますが・・・)。 問題が発生した時に表示されるエラーメッセージ、例えば、次のようなイベントログが出力されていた場合 そのエラーに関する情報を収集するために、まずは Web 上でこのエラーメッセージやエラーコードをキーワードで検索するのではないかと思います(すくなくとも私はします)。ごく一般的な機能や、メジャーなエラーコードなどであれば、多数の情報がヒットして、その時点で目的の情報にたどりつけるかもしれません。 しかし、自分の担当している機能や、開発しようとしているものが必ずしも日本において一般的であるとは限りません。その場合、英語のエラーメッセージで検索することで、より多くの情報にたどりつける ”可能性“ は高くなると思います。 と、少々前置きが長くなりましたが、そのような場合、冒頭に記載したランゲージ ポータルを利用して、日本語表記されている内容が英語版の OS (あるいは他の言語の OS) では、どのように表示されているのか取得できます。つまり、表記を確認するだけであれば、OS の言語の切り替えや、複数言語の OS を基本的には準備しなくていいのです。 では、簡単に使い方を紹介します。 1.       まず、以下の用語検索の URL へアクセスします。 https://www.microsoft.com/Language/ja-jp/Search.aspx 2.       上の画像のイベントログに記載されている、エラーの内容の一部、たとえば [デバイス設定をこれらの構成に設定しています] をコピーします。 3.       [検索文字列] のテキストボックスに、コピーしたテキストを貼り付けます。 4.       以下のように [検索対象言語] から、”日本語” を選び検索ボタンをクリックします。 5.       マイクロソフトの製品群で、検索文字列のメッセージを持っている各製品一覧と、その英語表記が表示されます。以下の表はその結果の一例です。 英語 訳 製品 Failed to upgrade…


Windows 10 Driver Verifier の「コードの整合性チェック」フラグについて

こんにちは、JS です。今回は、ドライバー検証用ツール Driver Verifier にて Windows 10 で新しく追加された機能について、紹介していきたいと思います。   Driver Verifier は、OS に標準で含まれているドライバー検証用のツールで、さなえすさんの記事「ドライバー検証ツール」でも使い方などが紹介されています。 この Driver Verifier ですが、Windows 10 では新しいフラグが追加されました。「コードの整合性チェック」と呼ばれるものです。 「コードの整合性チェック」フラグが何を検証するか、そしてフラグをどのように設定するのかをについて、以下に記載しましたので、ご参照いただけたらと思います。   「コードの整合性チェック」フラグは、どの動作をチェックするのか? 「コードの整合性チェック」フラグは、対象ドライバーに対し、カーネル メモリ内に「書き込み可能」と同時に「実行可能」なコードがあるかどうかを確認します。前述のようなコードが見つかった場合、Bug Check が作動し、BSoD と共にダンプ ファイルが作成されます。 ダンプ ファイルを WinDbg で開き、!analyze -v を行うと以下の記述が確認できます。   0: kd> !analyze -v ******************************************************************************* *                                                                             * *                        Bugcheck Analysis                                    * *                                                                             * *******************************************************************************   DRIVER_VERIFIER_DETECTED_VIOLATION (c4) A device driver…


新しくなった Windows Performance Analyzer

こんにちは、JS です。今回は、新しくなった Windows Performance Analyzer (WPA) についてお話をしたいと思います。   WPA は以前、K 里さんのエントリ「WPA とか Xperf とか」にて紹介されていましたが、Windows 8 用としてツールが新しくなりましたので、改めて紹介します。   WPA は、Windows Performance Toolkit (WPT)というツールキットの中に含まれるプログラムで、名前に Performance とある通り、PC のシステム全体のパフォーマンスを測定します。   WPT の概要については、K 里さんの記事にも書かれていますが、ここでも改めて説明します。 最新の WPT は、主に以下の 2 つのコンポーネントで成り立っています: 1.    Windows Performance Recorder (WPR) – トレースデータを採取するコンポーネント 2.    Windows Performance Analyzer (WPA) – トレースデータを GUI で表すコンポーネント この 2 つに加えて、xperf 等といった、以前のバージョンからあるレガシー プログラムの殆どが揃っています。…


Debug Diagnostic Tool

皆様、天候が優れない日が多い今日この頃ですが、いかがお過ごしでしょうか。 またしても WDK サポートチームのI沢(アイザワ)でございます。そろそろ私に飽きてきた方もいらっしゃいますでしょうか。今月もお付き合いいただけますと幸いです。 今回は、「Debug Diagnostic Tool」というツールをご紹介したいと思います。 こちらのツールは、ユーザーモードプロセスのデバッグを補助してくれるツールなのですが、私が今までご紹介させていただいたものと比べると、かなり多機能なツールとなっております。 そこで、今回は本ツールの 1 機能である「自動的にクラッシュダンプを集める機能」についてご紹介したいと思います。 やはり時代はなんでも自動化です。いつでも手動で対応できるなんて考えは甘えです!クラッシュダンプの収集も自動化して楽してしまいましょう!では早速その方法について、ご紹介していきたいと思います。   ■ インストール 1. まず最初にツールを取得しましょう!以下のサイトからツールをダウンロードします。ツールは x86 版と x64 版がございますので、ご使用環境に応じたインストーラーを選択してください。     Debug Diagnostic Tool v2 Update 1     http://www.microsoft.com/en-us/download/details.aspx?id=42933 2. 次にダウンロードした DebugDiagx86.msi または DebugDiagx64.msi を実行しましょう。実行すると以下のようなウィンドウが表示されるので、[Next] をクリックしてインストールを進めましょう。 3. インストールにつきましては、表示されている内容をご確認いただきながら進めていただければ問題ございませんが、インストールするフィーチャーの選択画面では、少なくとも "Dump Collection" をインストールするように選択してください。また、インストールフォルダにつきましては、デフォルト設定の "C:\Program Files\DebugDiag\" に設定されたものとして今後の説明をさせていただきます。 4. 次のようなウィンドウが表示されればインストール完了です!   ■ ダンプコレクション 1. それではツールを実行してみましょう。インストールフォルダにある "C:\Program Files\DebugDiag\DebugDiag.Collection.exe" をダブルクリックしましょう! 2….


VMMap

皆様、お元気でしたでしょうか!WDK サポートチームのI沢(アイザワ)でございます。 なんと前回に続いて連投させていただきます!このままこのブログを乗っ取るぐらいの勢いで行きたいと思いますので、どうぞよろしくお願いいたします。   2 回目の投稿内容としましては、前回の記事でご紹介した「RAMMap」と同様に「メモリに関する問題のデバッグ方法」の 1つとして「VMMap」というツールをご紹介したいと思います。 「RAMMap」と「VMMap」で名前が似ておりますが、機能も近いところがありまして、2 つのツールを合わせてご使用いただくことで、お手軽にデバッグの幅を広げられるのでお勧めです!   ちなみに、前回記事「RAMMap」につきましてはこちらをご参照ください。 http://blogs.msdn.com/b/jpwdkblog/archive/2014/04/22/rammap.aspx   ■VMMap とは? VMMap は Windows Sysinternals ツールの 1 つで、"プロセス" の仮想メモリと物理メモリの割り当て状況を分析し、グラフィカルに表示してくれるツールです。 RAMMap は、メモリ全体の割り当て状況を表示してくれたのに対して、こちらは "プロセス" にフォーカスを合わせたツールとなっております。 つまり、この 2 つのツールを組み合わせて使用することで、まずはメモリ全体の使用状況を RAMMap で把握して、怪しいと思うプロセスを特定したら VMMap で詳細を見ていくというデバッグが可能となります! また、複数形式でのデータのエクスポート機能が備わっていたり、コマンドラインから実行可能であったりと、その手軽さとは裏腹に非常に機能が充実しておりますので、これを機に活用していただけると幸いです!   ■なにはともあれ実行してみよう! 1. まずはいつも通りツールを取得しましょう!以下のサイトから VMMap をダウンロードします。     VMMap     http://technet.microsoft.com/ja-jp/sysinternals/dd535533.aspx 2. 次にダウンロードした VMMap.zip を解凍しましょう。解凍すると vmmap.exe が格納されておりますので、この exe ファイルをメモリ状態を取得したいプロセスが動作している Windows PC…


RAMMap

  皆様、はじめまして! WDK サポートチームのI沢(アイザワ)と申します。 今月からこのブログに参加させていただきますので、どうぞよろしくお願いいたします。 初投稿の内容としまして、「メモリに関する問題のデバッグ方法」をご紹介したいと思います。デバッグ方法と言いましても、たくさんの方法がございますので、今回はその一例として「RAMMap」というツールをご紹介いたします。他の方法につきましては、次回以降の機会に取り上げたいと思いますのでご期待ください! ちなみに、今後取り上げたいツール候補は下記のような感じで考えております。  ・Kernel Memory Space Analyzer    http://www.microsoft.com/en-us/download/details.aspx?id=15877 ・Debug Diagnostic Tool    http://www.microsoft.com/en-us/download/details.aspx?id=26798 ・Desktop Heap Monitor    http://www.microsoft.com/en-us/download/details.aspx?id=17782   ■RAMMap とは? RAMMap は Windows Sysinternals ツールの 1 つです。 現在、メモリがどのように割り当てられているのか、割り当てられたそれぞれの領域はどういう状況なのか…さらには特定の物理アドレスのメモリ使用状況まで表示してくれます。RAMMap の優れている点は、それらを非常に簡単に行えるというところです。基本的には実行ファイルをダブルクリックするだけで情報が表示されます。さらにメモリのスナップショットも保存可能で、コマンドラインからの実行も可能とその手軽さから初期解析にはうってつけのツールではないでしょうか。 ■スナップショットの取得 1. まずはツールを取得しましょう!以下のサイトから RAMMap をダウンロードします。     RAMMap     http://technet.microsoft.com/ja-jp/sysinternals/ff700229.aspx 2. 次にダウンロードした RAMMap.zip を解凍しましょう。解凍すると中に RAMMap.exe が格納されています。この exe ファイルをメモリ状態を取得したい Windows PC の適当な場所に格納します。ただし、動作環境として…


Process Monitor

皆さん、こんにちは。A寿です。   突然ですが、皆さんは、ワニを食べたことがありますか?・・・このお話にご興味のある方は本文の最後の【閑話】までどうぞ。   さて、今回は、Windows Sysinternals ツールの 1 つ、Process Monitor を紹介します。Process Monitor は、プロセスが行った処理 (ファイル システム、レジストリ、プロセスおよびスレッドの活動) をリアルタイムで表示するツールです。このツールは、ドライバーやアプリケーション開発時だけでなく、運用時でも、ファイルやレジストリの操作や、DLLのロード等、様々なシステム上のトラブルシューティングで利用されています。   私たちも、このツールのログの採取方法や調査方法をお客様にご案内することがありますので、その一例の手順をご紹介しようと思います。   ■ ログの採取   (1) 以下のサイトから Process Monitor をダウンロードします。     Process Monitor     http://technet.microsoft.com/ja-jp/sysinternals/bb896645.aspx (2) ダウンロードした ProcessMonitor.zip を問題が発生している環境の任意のフォルダーに置き、unzipします。     今回は、例として、C:\temp フォルダに置き、解凍し、ProcessMonitor フォルダができたとします。     ProcessMonitor フォルダの中に、以下の通り、Procmon.exe があることが確認できます。   C:\temp\ProcessMonitor>dir ドライブ C のボリューム ラベルは OSDisk です ボリューム シリアル番号は 2460-8F6F…


WDK 8 のドライバー開発の新機能

ひさかたぶりです。まさかたです。   先日、ついに Windows 8 が発売されました。巷では、各メーカー様から発売された様々な Windows 8 対応のデバイスが並んでおり、どれを購入しようか目移りしてしまいますね。 そして、Windows Driver Kit 8 については、先日のなおきお~さんの記事でも書かれていましたように、既にリリースされておりますが、皆様、使いこなしていらっしゃいますでしょうか? ご存知の通り、WDK 8 は Visual Studio 2012 に統合され、Intellisense などの従来の Visual Studio の便利な機能が使えるようになった他に、WDK 8 のドライバー開発に特化した便利な機能がいくつか追加されております。 WDK 8 で何が新しくなったのかをお知りになりたい場合は、まずは以下のリンクから見ていただくのがよろしいかと思います。   Windows 8 の新機能 http://msdn.microsoft.com/ja-jp/library/windows/hardware/hh451220(v=vs.85).aspx   そんな中で、今回は、私が使う中でこれは便利だなと思ったものとして、ビルドしたドライバーの動作確認をする際に役立つ機能を、簡単にご紹介させていただきたいと思います。 それは、Visual Studio が自動的に、① ビルドしたドライバーパッケージの INF からカタログ ファイルを生成し、② カタログ ファイルにテスト署名をした上で、③ テスト用の PC にインストールしてくれるという機能です。今までこれらの手順は、ドライバーをビルドし直す度に、手動で行う必要があったかと思いますが、WDK 8 では、これらの作業は全て自動的に行うことができるようになりました。これなら、ドライバーを手元で動作確認する場合にもとても便利です。   というわけで、さっそく具体的なやり方を順に追って見てみましょう。今回も、例によって Toaster サンプルを例に取って見てみたいと思います。サンプルコードの取得方法が分からないという方は、先日のなおきお~さんの記事をご参照ください。…


INFファイルの構文チェック ~ chkinf の使い方 ~

皆さん、こんにちは。A寿です。   突然ですが、皆さんは、大使館に行ったことはありますか?・・・このお話にご興味のある方は本文の最後の【閑話休題】までどうぞ。   さて、今回は INF ファイルの構文チェックを行う、 chkinf というツールをご紹介しようと思います。以前、「ドライバ インストール時のトラブルシューティングの第一歩」という記事を書きました。ここに書いた以外のトラブルシューティング初期の切り分け方法として、 chkinf ツールで INF ファイルの構文チェックを行い、出力結果のエラーや警告をもとに正しい構文になるよう修正し、問題が解決するかどうか確認する、という方法もあります。今回は、 chkinf の使い方だけではなく、実際に、WDK サンプルの INF ファイルを変更しながら、どのようなエラーや警告が出るかをお見せしていこうと思います。この情報により、皆さんのトラブルシューティングの一助となれば幸いです。   まず、chkinf ツールは、以下のフォルダにあります。     \WinDDK\{バージョン}\tools\Chkinf   このフォルダ内の chkinf.bat というバッチファイルで Perl のスクリプトを実行しています。このフォルダ内には、 chkinf.pm を初めとして、多くの .pm ファイルがあります。これらが INF ファイルの構文チェックをする実体です。 chkinf.bat は、これら .pm ファイルを実行する役割を持ちます。このフォルダの詳細については、下記ドキュメントをご参照ください。     ChkINF Components   http://msdn.microsoft.com/en-us/library/ff543464(VS.85).aspx   続いて、手順の概要は以下の通りです。   1. コマンドプロンプトを起動します。    管理者権限は必要ありません。 2….