Windows 秘話二度としないように言ってください

Raymond Chen

かつて、 オペレーティング システムの Windows® 95 シリーズ向けに開発された "自動スキップ ドライバ" というツールがありました。皆さんはまずそのツールのぎこちない名前に反応し、さらに ASD という文字が異なるものを意味するようになったのではないかという疑いすら持ったかもしれません。そして皆さんは間違っていませんでした。

Windows 95 は、プラグ アンド プレイに対応していない多くのデバイスに対処する必要がありました。これは、当時のシステムの圧倒的多数が、プラグ アンド プレイの仕様が発表される前から存在していたためです。適切なプラグ アンド プレイ デバイスが登場するまで、ハードウェアの検出は非常に恐ろしい作業でした。

たとえば、モデムを検出する場合は、何十個ものモデム レジスタの値を照会するクエリを発行していました。非常に定評のある基本的なモデム コマンド セットも提供されていましたが、コマンド言語の細部の実装には大きなばらつきがありました。通信を行うプログラムにとって、当然このばらつきはもどかしい問題でした。理由は、モデムのさまざまなモデル用に特殊なコードを追加して、個々の実装に適合させる必要があったためです。しかし、偶然にもこのばらつきが Windows にメリットをもたらしました。各モデムの動作が微妙に異なったため、Windows はそれらの細部を調査し、各モデムの動作を既知のモデムとそれらの応答が記録されたテーブルと比較することができました。

  

Windows 95 チームに所属していたあるメンバの仕事は、人類が知っているすべてのモデムと言ってもいいくらいのさまざまなモデムのインストール、モデムの性能を試す小規模なプログラムの実行、細部の調査、およびそれぞれの調査結果の収集を行い、あらゆるモデムのデータが格納されたモデム データベースを構築できるようにすることでした。まだ Windows 95 が実行されているコンピュータにアクセスできる場合、Windows\Inf ディレクトリを覗いて、名前が MDM で始まるこれらのファイルを確認することができます。モデムに関するデバイス情報ファイルのサイズは、1 MB を超えていました。1 人の人生における数年が 1 MB の判読不可能な 16 進数に費やされたと言ってもいいでしょう。

すべてのモデムの動作は大まかな部分ではほぼ同じであったため、モデムの検出作業は非常に安全でした。つまり、すべての楽しみは細部にありました。より恐ろしいのは、I/O ポートを使用するデバイスでした。たとえば、Windows 95 コンフィグレーション マネージャのビデオ カード検出モジュールは、特定のビデオ カードがインストールされているかどうかを検出するために、注意深く選択された値を特定の I/O ポートから送信し、そのデバイスからの応答を待機していました。デバイスが正しく応答した場合は、目的のデバイスが検出されたと判断します。正しく応答しなかった場合は、次のビデオ カード モデルに移ります。

もちろん、その I/O ポートにインストールされているデバイスがコンフィグレーション マネージャによってテストされているビデオ カードではなかった場合、無意味な値が送信されたことにデバイスが腹を立てることがありました。この場合、デバイスの気の短さにもよりますが、デバイスのハングやコンピュータの再起動が発生しました。これはコンフィグレーション マネージャにとって幸先の良い話ではありませんでした。このため、ASD として知られるモジュールが開発されました。

このように大惨事を引き起こす可能性があるハードウェアのテストを行う前に、コンフィグレーション マネージャは、簡単に言えば "何てことだ、私は危険な操作 X を実行しようとしている" ファイルを作成しました。これは、昔のアクション映画の主役が悪者との死を覚悟した戦いに出る前に恋人に残していった、"私が死んでしまったら開けてほしい" 封筒のコンピュータ版です。

実際、危険な操作 X を実行した場合、クラッシュやハング、または再起動が発生した後、システムの起動時にこの魔法のファイルが検出され、"封筒が開かれます"。そして、コンピュータのクラッシュを引き起こしたのが危険な操作 X であることが通知されます。システムはデバイス X の検出を試行する操作が大惨事を引き起こすという結論を下し、二度とその操作を実行してはいけないと認識します。

この動作を行うモジュールの名前は ASD でした。"何か危険な操作を試みる (Attempting Something Dangerous)" の略です。

Raymond Chen は自分の Web サイト「The Old New Thing」および同じタイトルの書籍 (Addison-Wesley、2007 年) で、Windows の歴史と Win32 プログラミングについて扱っています。彼は、やけどすることのないよう慎重にこの分野に取り組んでいます。

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.