[ニュースレター アーカイブ ^] [< Vol. 3、No. 2] [Vol. 4、No. 2 >]
システム内部ニュースレター Vol. 4、No. 1
http://www.sysinternals.com
Copyright (C) 2002 Mark Russinovich
2002 年 7 月 7 日 - 本号の内容:
論説
SYSINTERNALS の新機能
- Sync v2.1
- DiskExt v1.0
- NTFSDOS v3.02
- PsSuspend v1.2
- PsLogList v2.2
- PsInfo v1.2
- PsExec v1.3
- BgInfo v2.0
- Process Explorer v5.2
- Win64/Itanium 用 Filemon v4.34
- Linux 用 Filemon v1.1
- Microsoft の Sysinternals
INTERNALS INFORMATION
- Inside Windows 2000、対話型 DVD
- Inside Windows 2000/XP: セミナー
- Windows XP マニフェスト ファイル
- X ボックスの内容
- ランダム Windows XP 統計
- 改善された新しい Windbg
近日公開予定
- BootVis を使用して Windows XP ブート プロセスをプロファイルする
スポンサー: WINTERNALS SOFTWARE
Sysinternals ニュースレターは、http://www.winternals.com. の Web で Winternals Software によって後援されています Winternals Software は、Windows NT/2K/XP 用の高度なシステム ツールの主要な開発者およびプロバイダーです。 その製品には、受賞歴のある Administrator's Pak、ERD コマンダー 2000、NTFSDOS Professional Edition などがあります。
Winternals は、最も高速で最も完全なエンタープライズ デフラグ ツールである Defrag Commander バージョン 1.32 を発表したことを誇りに思っています。 NT または Windows 2000 システムにクライアント ソフトウェアをインストールしなくても、シンプルな MMC スナップインから Windows エンタープライズ全体のデフラグ スケジュールを管理できるようになりました。 10 システムのライセンスは、わずか 169 ドルでオンライン購入が可能で、積極的な数量割引も用意されています。 詳細については、またはダウンロードして 30 日間無料で使用するには、http://www.winternals.com/39 を参照してください。
皆さん、こんにちは。
Sysinternals ニュースレターへようこそ。 現在、ニュースレターの購読者数は 34,000 人です。 その内容に興味があると思われるお友だちにニュースレターをお渡しください。
Microsoft の主力オペレーティング システムである Windows XP は、8 月下旬に CD の生産に入りました。 Windows XP は、1993 年に Windows NT 3.1 で開始された Windows NT ラインの最新リリースであり、過去 8 年間の技術的な進化とイノベーションに基づいて構築されています。 オペレーティング システムは間違いなく、機能面で最先端を表しており、その多くは、David Solomon と私が詳しく調べ、12 月の MSDN マガジンの「Windows XP: Kernel Improvements Create a More Robust, Powerful and Scalable OS」(http://www.msdn.microsoft.com/msdnmag/issues/01/12/XPKernel/XPKernel.asp) という記事に掲載されています。
そして、何百万台もの Windows NT と Windows 2000 システムがインストールされ、何十万、何百万人ものベータ テスト担当者を抱え、Microsoft が Windows XP を事実上完璧に実行されるように調整、チューニング、修正されていることを期待していることと思います。 何しろ、XP を "事実上クラッシュ対策済み" と宣伝しています。 私はまさか問題が起こるとは思ってもいませんでしたが、間違っていました。
XP ベータ版とリリース候補サイクルを通して、Windows 2000 Professional をプライマリ システム上のオペレーティング システムとして使い続けました。 Windows 2000 開発サイクルから、リリース候補でさえ、最終ビットにアップグレードした後でもデバッグ・ミスが残されていることを学びました。 ベータ版プログラムから最終リリースであるビルド 2600 を受け取ったとき、移行するときがきたと判断しました。 XP 互換性ウィザードは、Windows 2000 システム上の軽微な問題 (インストールしていた Partition Magic のバージョンが XP NTFS を理解していなかったなど) しか見つけなかったため、アップグレード パスを進めました。
テキストモードで実行し、セットアップ ファイルをハード ディスクにインストールすると、XP Setup が部分的にアップグレードされた Windows XP インストールで再起動され、グラフィカル モードでアップグレードが完了しました。 このモードでは、ロケールとタイム ゾーンの設定を指定すると、Setup がデバイス検出を実行し、ネットワークが構成されます。 "デバイスのインストール" フェーズまではスムーズに進みました。 進行状況バーが約 2/3 に達し、Setup により残り時間が 34 分であると報告されたときに、Setup の生産力がなくなりました。 "XP は過去最高のものです" というバナーは交互に表示され続け、右下の小さな点滅ボタンは回転し続けましたが、2 時間後でも残り時間は 34 分のままでした。
このとき、不安を感じ始めました。 Setup をやり直すために再起動したり、BIOS を更新したり、MS サポート技術情報を確認したり (何もなし) するなど、問題を解決する可能性のあるあらゆることを必死で数時間試しましたが、何の結果ももたらしませんでした。 ついに降参し、Windows 2000 と Windows XP の半分ずつのインストールを取り消し、XP を新しくインストールしました。使用する 20 ~ 30 個のアプリケーションを再インストールするのに 1 日の大半を費やしました。
新しい XP のインストールはうまくいきました。 原因不明のクラッシュ、GUI のフレーク化、その他のシステムの奇妙な動作に失望していないと言うわけではありませんが、少なくとも生産性は向上できました。 ベータ版プログラム CD が試用版 CD であり、MSDN を通じて受け取ったときにフル バージョンにアップグレードする必要があることを知っていましたが、問題はないと予想していました。
アップグレードを中止してからちょうど 120 日後 (つまり、試用版のタイムアウト)、信じられないほどの既視感を味わいました。 試用版から完全版へのアップグレードは、実際に完全アップグレードとして機能し、(ご想像の通り) 残り時間 34 分、"デバイスのインストール" の 2/3 で Setup が進行を止めました。 もう一度、システムはセットアップの途中に陥り、まったく使用できなくなりました。 120 日前に試したすべてのことを試した後、諦めて別の完全再インストールを行いました。
その後、MSDN XP CD に Home と Professional の両方のサブディレクトリがあるため起動できないという別の問題に遭遇しました。 オペレーティング システムのインストールは 1 つしかないため (Setup によって破損したもの)、MSDN CD から Win32 バージョンの Setup を実行できませんでした。また、システムが NTFS 専用であるため、DOS Setup も実行できませんでした。 また、CD では Setup ブート フロッピーを作成する方法も提供されません。 MSDN 購読者のダウンロードに Windows XP Professional の ISO イメージが含まれていることを思い出したので、(別のシステムを使用して) それを入手して起動可能な CD を焼こうとしましたが、この一連の攻撃は、MSDN サイトからの "ファイル転送マネージャーの起動エラーが発生しました。 後でもう一度試してください。" というエラー メッセージにより阻止されました。
どのように私はこの混乱から抜け出したのでしょうか? 中止したアップグレードのレジストリ ハイブを、数週間前に作成したバックアップに置き換えました。 再起動後、Windows 製品のライセンス認証でライセンスを確認できなかったため、システムにログインできませんでしたが、セーフ モードで起動し、そこから MSDN CD セットアップを実行することができました。 ちょうどアプリケーションの再インストールが完了し、再び生産性を向上することができるところです。
この出来事 (2 回) の全く驚くべきことは、Windows XP Setup には Windows 95 以降の Windows 9x Setup に存在していた基本的な安全メカニズムがないということです。 Windows 95、98、または Me Setup を実行すると、ディスクに対する進行状況が記録されます。 Setup が予期せず中断された場合は、中断された場所から再起動し、"デバイスのインストール" フェーズだった場合は、中断される前に最後に実行していたドライバーをスキップします。 このように Setup がハングした場合は、システムを再起動することができ、Setup はハングした時点よりも先に進みます。
Windows 2000 と XP は、セーフ モードやシステムの復元など、Windows 9x ラインからいくつかの素晴らしい機能を流用しています。 Windows 9x セットアップからもいくつか流用してほしかったと思っています。
XP へのアップグレードについて言えば、ユーモアのあるコラムニスト Dave Barry は http://www.miami.com/herald/special/features/barry/2002/docs/jan06.htm で飛躍的な進歩について考えています。
ありがとうございます。
-Mark
SYSINTERNALS の新機能
SYNC V2.1
キャッシュされたデータをディスクにフラッシュするアプレットである "Sync" は、Unix システムの主要なシステム ユーティリティであり、数年前に Windows NT/2000/XP 用の Sync について書いています。 メディアを取り出す前に、読み取り/書き込み可能なリムーバブル メディアに変更が反映されるようにすることが、Sync により実行できることです。 また、システムをクラッシュさせる可能性のある開発中のドライバーを使用する前に実行すると、ディスクの破損を最小限に抑えることができます。 最近、フラッシュ後にメディアを取り出すオプションが Sync にあれば素晴らしいという声があったため、v2.1 で導入されました。
Sync v2.1 のダウンロード:
http://www.sysinternals.com/ntw2k/source/misc.shtml
DISKEXT V1.0
このニュースレターで取り上げたディスク関連のもう 1 つのツールは DiskExt です。これは、ボリュームのドライブ文字を指定すると、ボリュームを構成するパーティションの場所を示すコマンドライン アプレットです。マルチパーティション ボリュームには、スパン、ミラー、ストライプ ボリュームが含まれます。 また、DiskExt は、占有するセクターの観点から、一覧表示されるパーティションの場所も報告します。
完全なソース コードを含む DiskExt v1.0 のダウンロード:
http://www.sysinternals.com/ntw2k/source/misc.shtml#diskext
NTFSDOS V3.02
NTFSDOS は、何十万人ものユーザーのコンピューターに Sysinternals (NTFSDOS のリリース時は "Ntinternals") を導入したユーティリティで、DOS が NTFS ドライブを読み取ることができるようになります。 Windows XP NTFS のディスク上の構造に軽微な変更を加えるには、XP 互換性のために NTFSDOS を調整する必要があります。
NTFSDOS v3.02 のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/NTFSDOS.shtml
PSSUSPEND V1.2
他のものを実行することができるように、ネットワークのダウンロード、ディスク検索、またはその他のリソース集約型アプリケーションを一時的に中断したいと思ったことはありますか? 中断は、Windows NT/2000/XP の管理ツールに欠けている 1 つのプロセス管理機能です。 PsTools ツール セットに一番最近加わったものは、プロセスを中断および再開するユーティリティである PsSuspend です。 PsTools スイートの他のすべてのツールと同様に、PsSuspend はコマンドライン ツールであり、ローカル システムやリモート システムにアクセスできます。
Windows NT/2000/XP には中断プロセス機能がないため (XP にはありますが、Win32 API では公開されていません)、PsSuspend は Win32 SuspendThread API と ResumeThread API を使用してターゲット プロセスで実行されているスレッドを中断・再開します。
PsSuspend v1.2 のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/pssuspend.shtml
PsTools パッケージ全体のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml
PSLOGLIST V2.2
PsTools パッケージを構成するツールはユーザーのフィードバックに基づいて継続的に進化し、PsLoglist は他のどのユーティリティよりも機能に関する多くの要求を生成しています。 この最新バージョンでは、保存されたイベント ログ ファイル内のレコードをダンプする機能、(イベント ログ テキストにコンマが含まれている場合のために) 1 行形式の区切り記号をコンマから他のものに変更する機能、指定した日付範囲からレコードをダンプする機能、イベントの種類 (エラー、警告、情報) でフィルター処理する機能など、多くの機能強化が導入されています。 以前と同様に、PsLoglist はローカルまたはリモートのシステム イベント ログをダンプでき、その操作を制御するためのオプションが他にも多数あります。
PsLoglist v2.2 のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml
PsTools パッケージ全体のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml
PSINFO V1.2
廃止された PsTools ユーティリティは PsUptime です。これは、ローカルまたはリモート システムが稼働していた時間の長さを報告するアプレットです。 この情報が役に立たないというわけではありませんが、PsTools の比較的新しいツールである PsInfo による表示の方が適しています。 したがって、PsInfo v1.2 では、OS のバージョン、プロセッサ速度、メモリ サイズ、修正プログラムのインストール、OS が試用版かどうか、有効期限が切れるタイミング、Windows XP の場合は Windows 製品のライセンス認証の状態など、他のたくさんの情報と共にシステムの稼働時間が報告されるようになりました。
PsInfo v1.2 のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml
PsTools パッケージ全体のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml
PSEXEC V1.3
PsExec は、システムにソフトウェアをインストールすることなく、リモート システム上でプログラムを実行できるコマンドライン ユーティリティです。 実行するプログラムにコマンドライン インターフェイスがあり、PsExec によってプロキシされている場合、ローカルでプログラムを実行しているかのように対話形式で実行することができます。 これらの機能により、PsExec は便利な軽量リモート シェル型ユーティリティになり、ipconfig などのコマンドライン ツールを簡単にリモートで使用することができます。
PsExec のバージョン 1.3 では、リモート システムで Windows アプリケーション (コマンドラインとは対照的に) を起動し、対話型デスクトップに表示することができます。 これがどこに役立つか分かりませんが、この機能に関するリクエストをいくつか受け取っています。
PsExec v1.3 のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/psexec.shtml
PsTools パッケージ全体のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml
BGINFO V2.0
複数のシステムを管理している場合、"システムの混乱" について理解していると思います。これは、マシンに近づいて (または KVM で切り替えて)、コンピューターの名前、OS バージョン、インストールされているサービス パックまたは IP アドレスを忘れてしまったような状態です。 この情報はすべてさまざまな管理インターフェイスを介してアクセスできますが、取得には時間がかかる場合があります。 そこで、Bryce Cogswell の BgInfo が提供されます。デスクトップの背景に最も重要なシステム情報が表示され、必要なすべての情報をすぐに入手できます。
BgInfo に対するこの最新の更新プラグラムにより、これまで以上に構成が可能になります。 レジストリ キーでカスタム テキストを定義したり、デスクトップの背景色やビットマップを指定したり、テキストを背景に配置したりすることができます。 ただし、大規模な組織にとって最も役立つのは、設定を保存して読み込み、データベースにエクスポートする BgInfo の機能です。 これらの機能のいずれかを使用して、設定を 1 回定義すると、管理するすべてのシステムで使用できるようになります。
BgInfo v2.0 のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/bginfo.shtml
Process Explorer v5.2
Process Explorer は、タスク マネージャーが中止する場所を選択するプロセス ビューアーおよびコントロール ユーティリティです。 Process Explorer は、さまざまな機能の一覧の中で、プロセス作成ツリーを示し、プロセスが開いているハンドルを表示し、プロセスに読み込まれた DLL を一覧表示して、特定のファイルが開かれている 1 つ以上のプロセスを検索できるようにします。
Process Explorer の過去のバージョンは、Windows 9x システムと NT/2K/XP システムの両方で動作しましたが、Process Explorer は Windows 9x システムのプロセス CPU 使用率情報を表示するバージョン 5.2 でのみ動作します。 v5.2 のもう 1 つの機能強化では、プロセスが開いた GDI ハンドルと USER ハンドル (Win32 GUI リソースへのハンドル) の数が、プロセスのプロパティ ダイアログで報告されるようになります。これにより、Windows XP および 2000 システムのリークを追跡しやすくなります。 一般的な考え方とは対照的に、Windows 2000 と XP でも、このようなリソースの数は制限されています。システム全体は 65,536 ユーザー ハンドルに制限されており、プロセスごとの制限は 16,384 GDI ハンドルです。
Process Explorer v5.2 のダウンロード:
http://www.sysinternals.com/ntw2k/freeware/procexp.shtml
Win64/Itanium 用 Filemon v4.34
Microsoft は親切にも、Intel の初期 Itanium ボックスを貸してくれて、最も人気のある Sysinternals アプリケーションを Win64/Itanium に移植し始めることができました。 このボックスは印象的で、2 733 MHz プロセッサと 8 GBのメモリが搭載されています。 私は移植する最初のアプリケーションを Filemon に決定しました。 Filemon は、Win32 (現在の Win32/64) GUI とデバイス ドライバーで構成されているため、2 つの異なる移植作業が必要でした。 あまり想定していなかったことは、クロスコンパイラを使用して、Windows NT、2000、または XP を実行する 32 ビット システムで、Win64 アプリケーションと 64 ビット ドライバーの両方をビルドすることです。
プラットフォーム SDK の最新バージョン (Microsoft から無料でダウンロード可能: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/)) には、64 ビットの Itanium コンパイラとリンカー、Win64 ヘッダー ファイル、Win64 ライブラリなどのサブディレクトリが含まれています。 この単純なバッチ ファイルを作成して、Win64 実行可能ファイルをビルドする環境を設定しました。
@echo off
set PATH=D:\Mssdk\Bin\win64;%PATH%
set INCLUDE=D:\Mssdk\include\win64;D:\Mssdk\include\win64\crt
set LIB=D:\Mssdk\lib\ia64
echo 64-bit environment set.
Visual Studio から Win64 アプリケーションをビルドすることはできず、代わりにコマンド ラインからビルドする必要があることにご注意ください。
コンパイル中に遭遇した唯一の問題は、軽微なキャストに関する問題のみでした。 次に、ドライバーをビルドしました。 最新バージョンの DDK (無料ダウンロードでは使用できなくなりました) には、IA64 ドライバー ビルド環境が構成されているコマンドプロンプトへのショートカットが含まれています。 32 ビット ドライバーと同様に、64 ビット ターゲット環境でドライバーをビルドするだけです。
コンパイラにより、いくつかのキャストについてより明示的にする必要があることがわかりました。 たとえば、Filemon が操作に割り当てるシーケンス番号は、ULONG
であり、I/O Manager 関数 IoSetCompletionRoutine
のコンテキスト・パラメータとして渡すために、コンパイラを PVOID
にキャストすることはできません。 代わりに、最初に ULONG_PTR
にキャストし、次に PVOID
にキャストする必要がありました。 いずれの場合も、数分以内にドライバーがエラーなしでコンパイルされました。
次に、64 ビット アプリケーションとドライバーを Itanium システムにコピーし、実行しました。 Filemon GUI が表示され、消えました。 つまり、Win64 デバッガーを使用して、間違っていた点を把握する必要があります。 Win64 デバッガーはプラットフォーム SDK にも含まれており、32 ビットまたは 64 ビット コンピューターから実行できます。 これは、必要最小限の機能だけを装備した Visual Studio デバッガーのようなもので、アプリケーションを実行するターゲット コンピューターにデバッグ クライアント部分をインストールするリモート モードでのみ機能します。
Filemon のコードを 30 分ほど実行した後、私はようやく、Windows プロシージャで lparam パラメータを LPARAM
として宣言する必要があることに気づきました。1996 年に Filemon の最初のバージョンを書いたとき、SDK からコピーしたコードが原因でこれらが LONG になっていたのです。 興味深いことに、コンパイラがこのことについてエラーを出すことはありませんでしたが、これは lparam として渡されたポインターがトリミングされることを意味していました。 これは、lparam パラメーターを構造体へのポインターとして解釈する Filemon の WM_MEASUREITEM ハンドラーで発生しました。 Filemon ではこのコードでエラーが発生していました。
驚くべきことに、この問題を修正したところ、Filemon は Itanium 上で完璧に実行されました。 移植に要した合計時間: 1 時間。
現在、Regmon の移植に取り組んでおり、その後 DebugView を移植する予定です。 どちらも難しいですが、特に DebugView は型破りなドライバーを備えています。
完全なソースを含む Filemon のダウンロード: http://www.sysinternals.com/ntw2k/source/filemon.shtml
Linux 用 Filemon v1.1
過去数か月間に Sysinternals にアクセスしたことがある場合は、メニュー バーに新しいエントリ "Linux Utilities" が表示され、愕然としたかもしれません。 そのとおりです。Linux 上で Filemon が実行されたらかなり整頓されるだろうと判断しました。 私は既に Windows で Borland の Delphi Rapid Application Development (RAD) 環境を使用していたので、Kylix がリリースされたとき (基本的には、Linux 用の Delphi)、GUI は非常に簡単だろうと思いました。
残った質問は、ファイル システムのアクティビティをインターセプトする方法でした。
Linux を含む Unix のほとんどのバージョンでは、ptrace()
という名前のシステム呼び出しが実装されています。これにより、プロセスはターゲット プロセスによって行われたすべてのシステム呼び出しをインターセプトできます。 私はファイル システムのアクティビティを監視するために ptrace()
を使用することを検討しました。そして、将来 Filemon を変更して、今後明確になっていく目的のためにそれを使用する可能性がありましたが、それは行わないことに決定しました。
ptrace()
を使用する欠点は、Filemon が実行中のすべてのプロセスを列挙し、それぞれに対して ptrace()
を実行する必要がでてくるということです。 さらに、新しく作成されたプロセスにもアタッチする必要があり、新しいプロセスによって実行される最初のシステム呼び出しを見逃されないようにする方法が ptrace()
機能から提供されることはありません。 トレース中のプロセスがシステム呼び出しを実行すると、オペレーティング システムがそれをブロックして、トレース プロセスにシグナルを送信し、トレース プロセスがプロセスを続行するまで待機します。 これにより、すべてのファイル システム アクティビティを表示する場合、パフォーマンスが著しく低下する可能性があります。 最後に、最大の欠点は、ptrace()
がトレースされたプロセスの動作を変更してしまうことです。 トレース中、トレーサーは親プロセスとなります。つまり、トレースされたプロセスの実際の親には、子プロセスが原因のときに通常表示される通知が表示されません。
Windows NT/2000/XP の I/O Manager のようなファイル システム フィルター ドライバー (Linux 用語ではスタック可能なドライバー) を作成できたとしても、現在の Linux ファイル システム アーキテクチャではスタック可能なファイル システム ドライバーに対応していません。 それをサポートするために適用できる FiST というパッチ (http://www.cs.columbia.edu/~ezk/research/fist/)) および、Linux 用のトレース ツールキット (http://www.opersys.com/LTT/index.html) もありますが、両方ともエンド ユーザーがカーネルを再コンパイルする必要があり、私はそれを避けたいと思っています。 そこで、Regmon が Windows 上で動作するのと同じように、システム呼び出しホック ドライバを使って監視を実装することにした。
Windows で同じことを行うよりも、プロジェクトを困難にした懸念が 2 つあります。 1 つ目は、Linux の生みの親であり Linux カーネル開発のディレクターを務める Linus Torvalds が、カーネル デバッガーの使用を信じていないという点です。 その理由はかなりばかげており (Linus 自身の説明を読むには、http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-36/0575.htm を参照してください)、Linux カーネルが Windows に追いつくのに苦労する理由の 1 つです。 公式ではないカーネル デバッガーがいくつかありますが、それらを使用するには、カーネルにパッチを適用するなど、何らかの労力が必要になります。 2 つ目の懸念は、Linus が新しいカーネルがリリースされたときに、デバイス ドライバーとの下位互換性を保証することを考えていないということです。 その結果、エクスポートされたカーネル API が突然変更され、API を使用する既存のドライバーが破損し、新しいカーネル用に再コンパイルする必要が出てくる可能性があります。
組み込みのカーネル デバッガーがないため、デバッグ プリント ステートメントを使用してデバッグすることになり (カーネル デバッガをインストールして学習するのと同じくらい、printk
のカーネル モード プリントを使用したデバッグに時間がかかると判断しました)、カーネル API とデータ構造の変更は、Linux 用 Filemon がカーネル依存であることを意味します。 これは、市販の Red Hat 7.1 と 7.2、SuSE Linux 7.1 と 7.2、およびおそらく他の商用ディストリビューションで動作しますが、ドライバーを任意のカーネル変更から切り離す方法はまだ考案されていません (ドライバーの初期バージョンが破損したのは、カーネル関数の呼び出し規則を標準から高速呼び出しに変更したためです)。
Linux 用 Filemon には、Windows に対応するインターフェイスとまったく同じインターフェイスがあり、非常に似ています (Linux 用 Filemon ページのスクリーンショットを参照)。 Linux 用の一般的な非カーネル依存ファイル システム フィルタを開発することの容易さについては、不可能ではないにしても難しいという結論に至りました。 対照的に、すべてのドライバー ドメイン (ネットワーク、ファイル システム、ストレージ、入力など) のスタック可能 (フィルター) ドライバーは、最初から Windows NT I/O アーキテクチャでサポートされていました。
Linux 用 Filemon のダウンロード: http://www.sysinternals.com/linux/utilities/filemon.shtml
SYSINTERNALS AT WWW.MICROSOFT.COM
ここでもう一度、前回のニュースレター以降にリリースされた Microsoft サポート技術情報 (KB) 記事に記載されている Sysinternals リファレンスの最新号を次に示します。 タイトルに Filemon が含まれているものに注目してください。 これにより、Sysinternals への KB 参照の合計数が 31 になります。 すべての一覧は、http://www.sysinternals.com/ntw2k/info/mssysinternals.shtml から確認できます
セットアップ中に致命的な例外エラー メッセージが発生する http://support.microsoft.com/support/kb/articles/Q273/9/18.ASP
FP2000: データベース ドライバーの種類一覧のファイルが空である http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308935
HOWTO: エラー 1928 "COM+ アプリケーションの登録中にエラーが発生した" のトラブルシューティング http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308940
PRB: ADO で #import を使用する場合の EOF との競合 http://support.microsoft.com/support/kb/articles/Q166/1/12.ASP
PRB: CoFreeUnusedLibraries を呼び出した後に DLL がアンロードされない http://support.microsoft.com/support/kb/articles/Q301/3/57.ASP
PRB: エラー 80004005 "Microsoft Jet データベース エンジンでファイル '(不明)' を開くことができない" http://support.microsoft.com/support/kb/articles/Q306/2/69.ASP
PRB: DAO360.dll が MSJet49.dll、MSJet48.dll、およびその他の MSJetxx.dll ファイルの読み込みに失敗したことを FileMon が示している http://support.microsoft.com/support/kb/articles/Q306/3/86.ASP
SMS: ソフトウェア インベントリ エージェントが無効なページ フォールト エラー メッセージを生成する http://support.microsoft.com/support/kb/articles/Q302/6/51.ASP
INTERNALS INFORMATION
Inside Windows 2000、対話型 DVD
INSIDE Windows 2000 のプレリリース特別価格、Windows 2000 internals の対話型 DVD チュートリアルを見逃した方に朗報です! 通常のシングル ユーザー価格より 25% 以上値引きされた $950 の入門価格で引き続き購入できます。 David Solomon と Mark Russinovich によるこのエキサイティングな新製品を今すぐ注文するか、詳細を確認したい方は、http://www.solsem.com/dvd.html. を参照してください イントラネット ストリーミング用のネットワーク配信形式でも利用できます。
日付をマーク: Russinovich と Solomon がシアトルとボストンで再び共同講義を開催
先月、オースティンで行われた 3 日間の Windows 2000/XP internals クラスは無事完売したため、4 月 17 日から 19 日にシアトル近郊、6 月 12 日から 14 日にボストンのさらに 2 か所で開催を予定しています (登録は間もなく開始される予定)。 このクラスは「Inside Windows 2000、第 3 版」に基づいており、環境サブシステム、システム 呼び出しディスパッチ、システム スレッド、スタートアップとシャットダウン、レジストリの内部構造、プロセスとスレッドのスケジューリング、メモリ管理、セキュリティ、I/O システム、ストレージ、NTFS、キャッシュ マネージャーについて説明します。 Windows XP と 2000 の内部の動作を理解することで、プラットフォームをより効果的に利用し、問題のデバッグやトラブルシューティングをより効果的に行うことができます。 詳細については、http://www.sysinternals.com/seminar.shtml を参照する
Windows XP マニフェスト ファイル
Windows XP で最も目に見える変更の 1 つは、Luna デスクトップによって提供される新しいルック アンド フィールです。 Luna は実際には "テーマ" であり、テーマ非対応アプリケーション (Windows XP テーマを利用するために特別に記述されていないアプリケーション) を実行すると、アプリケーションは古い Windows 2000 スタイルのルック アンド フィールとなります。 ただし、ソース コードがない場合でも、古いアプリケーションに対して新しい外観を非常に簡単に作成できます。 アプリケーションに対して XML マニフェスト ファイルを作成するだけで、アプリケーションが %SystemRoot%\System32
のテーマ非対応のバージョンではなく、Common Control バージョン 6 DLL (%SystemRoot%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1 df_6.0.0.0_x-ww_1382d70a
の comctl32.dll) を使用するよう Windows XP ローダーに指示します。 Process Explorer v5.2 をテーマに対応させるマニフェスト ファイルを次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly
xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Process Explorer"
processorArchitecture="x86"
version="5.1.0.0"
type="win32"/>
<description>Process handle and DLL viewer</description> <dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
テーマ対応にするアプリケーションのアプリケーション名、バージョン、および説明を変更し、アプリケーションの実行可能ファイルと同じ名前になるようにそのファイルを保存します。ただし、ファイルに ".manifest" が付加されている場合を除きます (例: procexp.exe.manifest)。 アプリケーション開発者の方は、Process Explorer で行ったように、アプリケーションのリソースにマニフェスト ファイルを埋め込むことができます。 その方法の例については、Filemon のソース コードを参照してください。
X-BOX の内容
最近のコンソール ゲームの世界をフォローしている方なら、Microsoft の新しい X-Box コンソールで Windows 2000 の修正版が実行されていることはほぼ間違えなくご存じと思います。 先日、Microsoft に、本書の第 4 版のための Windows XP の調査に出かけた際、Dave Solomon と私は Windows 2000/XP 開発チームから、X-Box グループがドライバー サポートを Windows 2000 に決定したことを耳にしました。 決定が行われた後、X-Box 開発者は Windows 2000 のソース ツリーのコピーを入手して、どこかへ行ってしまい、Windows 2000/XP チームから再び連絡が入ることはありませんでした。
X-Box には、わずか 512 KB のメモリに収まる、高度に変更された必要最低限の Windows 2000 バージョンが含まれています。 関連のないサブシステムはすべて削除され (当初、プラグ アンド プレイ サブシステムは削除されていましたが、ドライバーの読み込みがそれに依存していることに気づいてから再度追加されました)、プロセスは 1 つしか実行されず、Win32 サブシステムはありません (X-Box API のみ)。 X-Box には 64 MB の物理メモリしかなく、仮想メモリのサポートもないため、Windows 2000 Memory と Cache Manager の 2 つのサブシステムが削除されました。 このような大幅な変更では、Windows 2000 ではなく、新しいオペレーティング システムを考慮に入れる必要があります。
X-Box、GameCube、PS2 の内部の詳細については、http://www.e-insite.net/ednmag/index.asp?layout=article&articleid=CA185947&pubdate=12-20-01 を参照してください
ランダム Windows XP 統計
次の統計は、OEM System Builder の Web サイト (http://oem.microsoft.com から無料でサインアップできます) で Microsoft によって公開され、そのうちの一部は興味を抱いていただけると思います。
ちなみに、Windows XP の最終リリースのビルド番号は偶然 2600 になったのではなく、少し細工されています (ビルド番号は、オペレーティング システムがビルド ラボでコンパイルされるたびにインクリメントされ、通常は稼働日ごとに 1 回です)。 内部の情報源によると、この数は 2600 コミュニティ、ハッカーの緩やかなグループ (http://www.2600.com/)、XP チームの XP のセキュリティに対する信頼を示すメッセージ) をターゲットにしています。
- Windows XP の開発にかかった日数: 600 (1999/12/20/ – 2001/8/24)
- フォーカスされたチーム メンバーの数: 5,736
- 開発者ごとのテスト担当者の数: 1.4
- プロジェクト中の出生数: 452
- 採用されたインターンの数: 504
- 40 個の "Windows 情報会議" 中に消費されたマカロニの量: 6,000 lbs
- Frappuccino® 提供数: 86,400
- シアトル・ロナルド・マクドナルド・ハウス (地元の慈善団体) のために調達されたドル: 200万ドル
- システム復元機能のテスト ケースの数: 160 万
- Windows XP RC1 以降に実行される Direct3D グラフィックス テスト ケースの数: 43,114,143
- 互換性のためにテストされたアプリケーションの数: 5,500
- すぐにサポートされているデバイスの数: 12,000
- Windows XP と互換性がある過去 3 年間に配布された最も一般的な PC アプリケーションの割合: 90%
- 最大のデジタル メディア ライブラリ テスト ケースのトラック数: 31,000
- Windows ムービー メーカーによってキャプチャされた最長の単一ファイルの長さ (時間単位): 114
- ローカライズする言語の数: 24 (完全) および 9 (部分的)
- 10/25 の発売に参加している国の数: 50 以上
- 世界中の打ち上げイベントに参加しているユーザーの数: 席数 58 万人以上... オンライン視聴者に加えて、世界中に 5,120人のシステム ビルダー
改善された新しい Windbg
Windbg は、Windows NT/2000/XP カーネルに組み込まれているカーネル デバッグ サポートのグラフィカル フロントエンドです。 ここ数年までは、Windbg はフレーク化し煩雑であるという評判がありましたが、Microsoft がそれの改善を重点的に行ってから、それも変わりました。 http://www.microsoft.com/ddk/Debugging/ から無料でダウンロードできる最新バージョンの Windbg は、古いバージョンよりも大幅に改善され、使いやすくなっています。 経験豊富な Windbg ユーザーでも知らないような新機能と、システムのクラッシュを診断するシステム管理者に役立つ 2 つのコマンドがあります。
最新の Windbg を非常に使いやすくする機能は、Microsoft のシンボル サーバーのサポートです。 Windbg でクラッシュ ダンプを見たり、アプリケーションをデバッグしたりする際の問題は、インストール用に適したデバッグ シンボル ファイルをインストールする必要があるということです。 サービス パック、修正プログラム、および異なるオペレーティング システム (Windows NT や Windows XP など) からのクラッシュで、これは厄介な場合があります。 シンボル サーバーのサポートでは、Microsoft シンボル サーバーの URL を Windbg シンボル パス ダイアログに入力するだけで、Windbg はオンデマンドでサーバーからシンボルをダウンロードし、指定したディレクトリに格納します。 シンボル サーバーには、Windows .NET Server Beta 3、Windows XP および XP リリース候補、Windows 2000 とそのサービス パックと修正プログラム、Windows NT 4、MDAC 2.1-2.7、IIS、ISA のシンボルがあります。
クラッシュ ダンプのデバッグに役立つ 2 つのコマンドは、!analyze と .dump です。 !analyze を実行 (-v
スイッチを指定) して、クラッシュのヒューリスティックに基づいて自動分析を取得します。 このコマンドは既に非常に強力であり、Microsoft が実際のクラッシュからのより多くの履歴データを組み込むにつれて、さらに正確になります。
.dump
コマンドは、ユーザー モードのデバッグとカーネル モードのクラッシュ ダンプ分析の両方に役立ちます。 一部のサーバー環境 (特に Web サーバー) では、メモリ リークやその他の問題を特定できますが、原因が切り離されるまでサーバーを停止して再起動する必要はありません。 Windows XP および .NET Server では、Windbg を使用してサーバー プロセスにアタッチし、.dump コマンドを実行してユーザー メモリ クラッシュ ダンプ ファイルを生成し、(.detach
コマンドを使用して) デタッチし、サーバーを一時的に一時停止できます。 その後、開発者は生成されたダンプ ファイルを取得し、オフラインで分析できます。
既定では、Windows サーバー システムはフル メモリ ダンプを生成します。これは、システムに存在する物理メモリの量と同じ大きさであるため、非常に大きくなる可能性があります。 ただし、ダンプを Windbg に読み込み、.dump
コマンドを使用して、完全なダンプから小さなカーネル メモリまたはミニダンプを生成できます。 小さいファイルは簡単に交換でき、クラッシュの原因を切り離すために必要なファイルは、これですべてです。
http://www.microsoft.com/ddk/Debugging/ から最新バージョンの Windbg をダウンロードし、http://www.microsoft.com/ddk/debugging/symbols.asp で Microsoft シンボル サーバーからシンボルを取得するように Windbg を構成する手順を確認できます
近日公開予定
BootVis を使用して Windows XP ブート プロセスをプロファイルする
Windows XP ブート プロセスのチューニングを支援するために、Windows XP パフォーマンス チームはオペレーティング システムにキー ポイントをインストルメント化し、ブート トレースを表示する BootVis というツールを開発しました。 驚くべきことに、このツールを自由に利用できるようにしました。 非常に使いやすく、ドライバーが初期化されるタイミング、ディスク I/O が発生するタイミングと場所、サービスとアプリケーションが起動するタイミングに関する情報など、驚くべき量の詳細情報が表示されます。 次回は、これの入手先と使用方法について説明します。
Sysinternals ニュースレターをお読みいただき、ありがとうございました。
公開日: 2002 年 7 月 7 日 (月) 午後 7:01 by ottoh