[ニュースレターアーカイブ ^][< Vol.1、No. 5][Vol. 2、No. 2 >]

Systems Internals ニュースレター Vol. 2、No. 1

http://www.sysinternals.com

Copyright © 2000 Mark Russinovich


2000 年 1 月 6 日 - 本号の内容:

  1. Systems Internals の新着情報

    • PsKill v1.0
    • PsList v1.1
    • WinObj v2.1
    • Contig v1.3
    • NTFSCHK v1.0
    • HandleEx v2.1
    • Ctrl2cap v2.0
    • Filemon v4.26
    • Bluescreen v2.1
    • Fundelete v2.01
    • Openlist v1.11
    • 12 月 NT Internals
  2. Internals ニュース

    • Win2K DDK がリリースされました
    • キーストロークを使用して Win2K をクラッシュさせる
    • 書き込みで保護されたシステム メモリについての新着情報
    • Win2K API の爆発的増加
    • デイヴィッド・ソロモン セミナー
  3. 今後予定されている内容

    • Microsoft NT 関連の特許

スポンサー: WINTERNALS SOFTWARE

Systems Internals ニュースレターは、http://www.winternals.com. の Web で Winternals Software によって後援されています。 Winternals Software は、Windows NT/2K 用の高度なシステム ツールの主要な開発者およびプロバイダーです。 Winternals Software 製品には、FAT32 for Windows NT 4.0、ERD コマンダー Professional Edition (Windows NT 向けの先進ブート ディスク機能)、Remote Recover などがあります。

Winternals Software の NTFSDOS Professional と NTFS for Win98 では、DOS、Windows 95、Windows 98 から NTFS ドライブへの完全な読み取りと書き込みアクセス権が提供されます。 NTFSDOS Pro は、Windows NT/2K にシングルフロッピーの "ブート ディスク" 機能を提供します。 NTFSDOS Pro を使用すると、バグのあるドライバーを削除したり、ファイルを更新したり、DOS ブート フロッピーから NTFS ドライブの一般的なファイル システム メンテナンスを実行したりすることができます。 NTFS for Win98 では、Windows 95 および Windows 98 から NTFS ドライブに透過的にアクセスできます。 デュアルブート環境の NTFS ドライブ上で NT と Win9x 間でアプリケーションとファイルを簡単に共有します。 どちらのユーティリティにも NTFS Chkdsk 機能が組み込まれています。 NTFSDOS Pro の無料読み取り専用バージョンは http://www.sysinternals.com/ntfspro.htm で入手でき、NTFS for Win98 の無料読み取り専用バージョンは http://www.sysinternals.com/ntfs98.htm. で入手できます。

皆さん、こんにちは。

Systems Internals ニュースレターへようこそ。 現在、ニュースレターの購読者数は 14,000 人です。

ご存知のように、Win2K はディスク デュプリケーターにあります。 Win2K の Release-to-Manufacturing (RTM) バージョンは、結局ビルド 2195 となりました。 RC3 は 2128 でした。以前のニュースレターで説明したように、Microsoft は、毎晩 (週末と休日を含む)、現在のソース ツリーをコンパイルするときにビルド番号をインクリメントします。

私は 11 月に Microsoft に出かけました (私がそこにいた理由については、ニュースレターの後半の Filemon アップデートを参照してください)。カーネルチームのメンバーの 1 人が私を Microsoft のキャンパスのビルディング 26 のツアーに連れて行ってくれました。 ビルディング 26 は、Windows NT/2K ベース カーネル チームが配置されている場所であり、Windows NT/2K のビルド ラボとテスト ラボがあります。 ビルド ラボとテスト ラボのサイズはほぼ同じですが (30 フィート x 60 フィート)、テスト ラボにはコンピューターのラックが詰め込まれていますが、ビルド ラボには開発者用のデスク スペースとシートがあります。 開発者は毎晩、ソース ツリーを複数のクワッド プロセッサ システムに抽出し、コンパイルを実行します。 誰かがチェックインしたコードによって (万一の場合) ビルドが壊れた場合、それが何時であろうともその人は呼び出されます。そして、即座に作業に取り掛かり問題を解決します。 11 月中旬までの時点で、Win2K はコード フリーズの状態であり、許可される変更はすべて、委員会によって承認され、"show-stopper" バグ修正の指定を受ける必要がありました。

新しいビルドが生成されると、テスト担当者はそれを受け取り、ラボ内のすべてのマシンに同時にインストールします。 テスト ラボのシステム ラックには、あらゆる重要なPCベンダー製の、小型の手持ち型コンピュータから食器洗い機サイズのマルチプロセッサ サーバーまで、あらゆるものが詰め込まれています。 Win2K のインストールが完了すると、システムは大規模なストレス テスト スクリプトを実行します。 開発の後半部分では、Win2K は 90% を超える割合でストレス テストに合格しました。 ドライバー検証ツール (開発者が独自のテスト中に問題をキャッチするのに役立つツール) のような Win2K 信頼性強化が導入される前は、大幅に低いテスト合格率でした。

すべてのテストに合格するかどうかに関わらず、ビルドは Microsoft の内部配布サーバーにアップロードされます。Microsoft の従業員はここからビルドをダウンロードしてインストールできます。 開発者が大きな問題を導入した場合、次の週にその問題に遭遇した数百人の従業員から電子メールを受け取ることになります。 テスト チームが会社全体に対して警告の電子メールを送信するのは、ユーザーの大部分に重大な問題が確実に発生する場合に限られます (十分な理由がなければ 25,000 人を超えるユーザーに電子メールをブロードキャストするべきではありません)。

訪問中に、私は Windows NTのチーフ アーキテクトであるデイブ・カトラーにも会いました。 彼は最近何に取り組んでいるのでしょうか。 11 月には、カーネル チームは既に Win2K (内部的には NT 6 またはネプチューンと呼ばれています) の後継に熱心に取り組んでおり、デイブは 64 ビット バージョンの Win2K のインストールの微調整に取り組んでいました。 デイブは 64 ビットの開発作業を指揮していて、64 ビット Win2K は完成に向けて順調に進んでいました。 11 月の時点でカーネルチームはまだ 64 ビットのアルファ版の作業を行っていました。当時は、Intel が Merced プロセッサのサンプルを生産し始めたばかりで、キャンパスにはたった 1 つししかありませんでした。

いつも通り、この内容を面白いと思いそうなお友達にニュースレターを渡してください。

ありがとうございます。

-Mark

Systems Internals の新着情報

PSKILL V1.0

Windows NT と Win2K のリソース キットにはコマンド ラインの "kill" ユーティリティが付属していますが、これは Windows NT と Win2K 自体には "kill" 機能がないためです。 ローカル プロセスは、リソース キットの "kill" を使用して終了できますが、リモート プロセスは終了できません。 したがって、私の PsList のようなリモート機能を持つ、無料で利用可能な "kill" を書くことにしました。 PsKill は、プロセス ID またはプロセス名、およびオプションでコンピューター名を受け取り、ローカル システムまたは指定したリモート システムのいずれかの上で一致するプロセスを終了します。 リモート コンピューターにクライアント コンポーネントをインストールする必要もありません。 実行しているアカウントではリモート コンピューターに対する管理特権がない場合は、PsKill コマンド ラインにアカウント名とパスワードを追加して、リモート システムにログインして強制終了を実行できます。

PsKill v1.0 のダウンロード: http://www.sysinternals.com/pskill.htm.

PSLIST V1.1

私はしばらく前に、UNIX ps スタイルのプロセスとスレッドのビューアとして PsList をリリースしました。 Windows NT および Win2K のリソース キットにある同様のツールとは異なり、PsList を使用すると、リモート システムとローカル システムの両方のプロセスとスレッドの情報を表示できます。 PsList は、Perfmon のように Win NT/2K のパフォーマンス API 情報を読み取ることで機能します。 今回の PsList リビジョンでは、コマンド ラインでアカウント名とパスワードを指定することで、リモート システムにログインする機能が追加されます。 このオプションを使用すると、PsList を実行するアカウントでは管理特権がないリモート コンピューターにもアクセスできます。

PsList v1.1 のダウンロード: http://www.sysinternals.com/pslist.htm.

WINOBJ V2.1

WinObj は、Windows NT/2K 用のオブジェクト マネージャー名前空間ビューアーです。 オブジェクト マネージャー名前空間は、一般にユーザーには表示されませんが、名前付き Win32 (\BaseNamedObjects\??) オブジェクト、および名前付きカーネル オブジェクトがすべて存在する名前空間です。 また、ファイル システム名前空間 (\?? にあるドライブ文字のシンボリック リンク経由) およびレジストリ名前空間 (キー オブジェクト \Key 経由) へのエントリ ポイントとしても機能します。

WinObj は、Win32 ソフトウェア開発キット (SDK) にある同じ名前のツールと似ていますが、こちらの WinObj は Microsoft バージョンよりも多くのことを行います。 たとえば、我々の WinObj でオブジェクトのプロパティを表示すると、任意の数値ではなく参照数とハンドル数が表示されます (SDK の WinObj にはいくつかの重大なバグがあります)。 我々の WinObj では、同期オブジェクトの状態とオブジェクト セキュリティ情報も表示されます。

この最新の WinObj 更新プログラムは、Win2K の名前空間に存在する長いシンボリック リンク値の一部を正しく表示できないバグを修正します。 また、Win2K での実行時には、より使いやすい新しい Win2K セキュリティ エディター ダイアログを使用します (NT 4 では、ACLEDIT.DLL によって提供される、文書化されていないセキュリティ エディター インターフェイスが使用されます)。 ユーザー インターフェイスの機能強化では、終了時に表示するディレクトリを記憶しておくことが含まれており、次に WinObj を起動するとそのディレクトリが選択され、ディレクトリ コンテンツの ListView ウィンドウを並べ替えることができます。

WinObj v2.1 のダウンロード: http://www.sysinternals.com/winobj.htm.

CONTIG V1.3

Microsoft では、NT 4 のリリース時に組み込みのファイル デフラグ API が追加されました。 http://www.sysinternals.com/defrag.htm. では、この API を文書化し、API を使用するサンプル コードを提供しています。 この API を使用して、個々のファイルやディレクトリを最適化するために使用できるコマンド ラインのデフラグ ツールである Contig を実装しました。 Contig の最初のリリース以来、断片化分析オプションを追加して欲しいという要望を多数受け取っていましたが、今回ついにそれを実装しました。 Contig v1.3 では、指定したファイルがどの程度断片化されているかを確認して、より高コストな最適化プロセスを実行する必要があるかどうかを判断できます。

ファイルのデフラグと言えば、Symantec は最も高度なデフラグ機能である Speedisk 5.0 をリリースしました。 競合相手に勝つために、この機能はデフラグ API をバイパスし、ディスク内のブロックを手動で移動して、システムがオンラインの間にディレクトリや MFT までも最適化できるようにしています。 http://www.execsoft.com/diskeeper/infosheet.asp#Q9 と述べているにも関わらず、Executive Software の Diskeeper 製品 (バージョン 4.0 とバージョン 5.0 の両方) も、特にブート時ディレクトリ統合を実行する場合にデフラグ API をバイパスします (ただし、このデフラグツールは Norton ほど高度ではありません)。 Executive Software のマーケティングも、読んだすべてを信じてはいけない理由の一つです。

Contig v1.3 のダウンロード: http://www.sysinternals.com/contig.htm.

レジストリおよびページング ファイルのデフラグ ツール PageDefrag のダウンロード: http://www.sysinternals.com/pagedfrg.htm.

NTFSCHK V1.0

コンピューターに NT 4 と共に Win2K をインストールするパワー ユーザーからのよくある苦情は、Win2K による NTFS ドライブの NTFS v5 への自動アップグレードによって、NT 4 Chkdsk がそれらのドライブをチェックできないことです。 NTFS v5 ドライブをスキャンしてエラーを修正する代わりに、NT 4 Chkdsk は、新しいバージョンの NTFS で作成されたドライブでは実行できないことを知らせて、終了してしまいます。 このため、少なくとも今までは、これらのドライブをチェックしようとする度に Win2K を起動する必要がありました。

NTFSCHK を使用すると、NT 4 から Win2K バージョンの Chkdsk を実行できます。 方法はありますか。 NTFSDOS Professional と NTFSDOS for Win98 の一部として DOS および Windows 9x から NT のネイティブ Chkdsk を実行するために開発したのと同じテクノロジを使用して、NTFSCHK は Win2K に似た環境で Win2K Chkdsk をラップします。

NTFSCHK v1.0 のダウンロード: http://www.sysinternals.com/ntfschk.htm.

HANDLEEX V2.1

HandleEx は、Windows NT/2K 用の多面的な診断ユーティリティであり、DLL プロセスが読み込んだ内容と、開いたオブジェクト (ハンドル) を示します。 HandleEx は、DLL のバージョン管理の問題の追跡、リークの処理、および、特定のファイル、ディレクトリ、またはレジストリ キーにアクセスしているアプリケーションの特定に役立ちます。

HandleEx のバージョン 2.1 では、参照カウントや同期オブジェクトの状態など、プロセスが開いたオブジェクトのプロパティを表示できます。 NT のセキュリティ エディターを使用して、オブジェクト セキュリティ属性を表示および変更することもできます。

HandleEx v2.1 のダウンロード: http://www.sysinternals.com/handleex.htm.

CTRL2CAP V2.0

かつて UNIX を使用していた人たちは、PC キーボードのコントロール キーが間違った場所にあるという私の意見に同意するでしょう。コントロール キー は、CapsLock キーの位置にあるべきです。 それに、いったい誰が CapsLock キーを使用するのでしょうか。 Ctrl2cap は CapsLock を左コントロールに変更し、その副作用として CapsLock を削除するキーボード フィルター ドライバーです (私は Half Life をプレイするときには、標準の左コントロールをファイア キーとして使用します)。

Ctrl2cap v1.0 は Win2K で動作しますが、これを使用すると、Win2K の電源管理機能が無効化されます。ラップトップでは、これはやや苛立たしいことです。 そのため、Windows ドライバー モデル (WDM) に準拠するように Ctrl2cap を更新しました。これには、電源管理のしやすさも含まれています。 完全なソースコードを提供しています。同じソースファイルで NT 4 と Win2K の両方のバージョンをビルドできます。

Ctrl2cap v2.0 (ソース コード有り) のダウンロード: http://www.sysinternals.com/ctrl2cap.htm.

FILEMON V4.26

私が 11 月に Microsoft へ出向いた理由は、Microsoft が「ファイル システム フィルター プラグフェスト」を開催したからです (内部的には「Irp-olooza」と呼ばれています)。 プラグフェストは、Windows NT/2K のファイル システム フィルター ドライバーに基づくすべての主要な製品を集め、ラウンドロビン方式でペア化し、さまざまなペアリングに対してストレス テストを実行しました。 代表的な製品には、約 9 つの異なるウイルス スキャナー、多数のファイル暗号化ツール、ディスク クォータ マネージャーなどが含まれています。 このイベントの目的は、さまざまなフィルターの組み合わせに関連する相互運用性の問題を特定し、主要なフィルター製品のバグを見つけて特定し、さらには Win2K のバグを見つけることでした。 Filemon は世界で最も広く使用されているフィルターの 1 つであり、Microsoft のグループの多くは Filemon の開発とトラブルシューティングの作業に依存しているため、プラグフェストの開催者は私に Filemon の代表としてイベントに来るよう招待しました。

Filemon は、1 つを除くすべてのストレス テストに問題なく合格しました。 Filemon は動的に読み込まれるフィルター ドライバーであるため、イベントで扱われた製品のうち 1 点を除くすべてに対し、その上位レイヤとして機能しました。 Filemon の上位レイヤとなった唯一の製品は、それ自体も動的に読み込まれるウイルス スキャナーであり、実は Filemon に基づく製品でした。 そのウイルス スキャナーも動的に読み込まれるため、レイヤ階層の順序を両方とも試してみました。そして、Filemon が下部にある場合には、ウイルス スキャナーがクラッシュしました。 Filemon の GUI が終了すると、Filemon のドライバーはフィルター デバイス オブジェクトを削除します。 実際には、I/O マネージャーからそれを指示するコマンドを受け取らない限り、フィルター ドライバーがフィルター デバイス オブジェクトを削除することは正しくない操作です (ファイル システム フィルターでの FastIoDetach および WDM での IRP_MN_REMOVE_DEVICEIRP_MJ_PN)。 当然のことながら、Filemon のデバイス オブジェクトが予期せず消失したため、ウイルス スキャナーは割り当て解除されたメモリにアクセスしてクラッシュしました。

幸いなことに、Filemon のクラッシュはプラグフェストの最後のセッションで起こったので、私が恥ずかしい思いをするのは短時間で済みました。そして、テストによりイベントで扱われたすべての製品で少なくとも 1 つの深刻なバグや相互運用性の問題が見つかっていたので、そのような経験をしたのは私は一人だけではありませんでした。 Filemon v4.26 は、plugfest で検出されたバグを修正したバージョンです。

Filemon には、プラグフェストに参加する前にも、NT デバイスやファイル システム ドライバーの開発者が興味を持ちそうなバグが見つかっていました。 私は最近、文書化が貧弱な Exective Resource (E-Resource) 同期メカニズムを使用するように Filemon を変更しました。 Microsoft のファイル システム ドライバーは E-Resource を広範囲で使用しているため、Filemon のソース コードに使用するのは教育的だと思いました。 E-Resource は、APC (非同期プロシージャ呼び出し) が無効になっているスレッドによって取得される必要があります。 このことは、DDK ドキュメントには記載されていないため、"知っている" 必要があります。 残念ながら、急いで実装を進める際に、Filemon の E-Resource 取得に関して必要となる、APC を無効にして再度有効にする関数の呼び出しを省略してしまいました。 このバグは非常にまれな状況でのみ問題を引き起こすので、Win2K のドライバ検証ツールがキャッチしてくれるまで気付きませんでした。 この問題を解決するために、E-Resource を取得する前に KeEnterCriticalSection の呼び出しを、E-Resource を解放した後に KeLeaveCriticalSection の呼び出しを追加しました。

Filemon v4.26 のダウンロード: http://www.sysinternals.com/filemon.htm.

BLUESCREEN V2.1

Bluescreen スクリーン セーバーは、私が書いたスクリーン セーバーで、恐ろしい Windows NT の死のブルースクリーン (BSOD) をシミュレートします。 オリジナルのバージョンは、Win2K リリースが利用可能になる前に書いたので、NT 4 の BSOD と再起動をシミュレートし、ディスク エラーを検出する Chkdsk も付属していました。 2 つのバージョンが利用可能です。1 つは追加のリアリズムのためにディスク I/O を実行するもので、もう一方は実行しません。 Win2K ベータ 3 が出た後、私は新しい Win2K BSOD とシステムの再起動をシミュレートするように Bluescreen を更新しました。 RC3 では再起動画面が変わったので、もう一度 Bluescreen を更新する必要がありました。 同時に、2つのバージョンを持つ代わりに、ディスク I/O 生成を、Bluescreen のスクリーン セーバーのプロパティで構成可能なオプションにしました。

Bluescreen v2.1 のダウンロード: http://www.sysinternals.com/bluescrn.htm.

FUNDELETE V2.01

長い長い待ち時間の後に、我々の Undelete for Windows NT は、Fundelete for Windows NT として復活します。 Fundelete は、Windows NT/2K のごみ箱を拡張して、エクスプローラーから削除されたファイルだけでなく、プログラムやコマンド ライン内から削除されたファイルもゴミ箱に入れるためのユーティリティです。 名前を変更した理由は次のとおりです。 Bryce と私が Undelete for Windows NT をリリースした数ヶ月後、Exective Software が Network Delete という同様のユーティリティをリリースしました。 1年後、Exective Software は私たちのユーティリティの名前が彼らの名前よりも好きだと判断したので、名称を Undelete for Windows NT に変更しました。 同時に、Exective Software は彼らが1987年から保持している「undelete」という言葉の登録商標を私たちが侵害していることを警告する手紙を弁護士を通じて送ってきました。 私たちは戦うかわりに、ユーティリティの名前を変更しました。

開発者は、Fundelete のデバイス ドライバー中核部のソース コードをダウンロードできます。これには、ドライバーからユーザーの SID を取得する、ドライバーからディレクトリの内容を列挙する、新しい IRP を作成するなど、いくつかの強力なドライバー手法が示されています。

Fundelete for Windows NT v2.01 のダウンロード: http://www.sysinternals.com/fundelete.htm.

OPENLIST V1.11

Openlist は、システムで開かれているすべてのファイルを表示する Windows 9x ユーティリティです。 バージョン 1.11 では、DLL のバージョン情報など、ファイルに関する詳細情報を表示する機能が追加されています。

Openlist v1.11 のダウンロード: http://www.sysinternals.com/openlist.htm.

12 月 "NT Internals"

Windows NT Magazine 12 月号の "NT Internals" コラムは、"Inside Win2K の拡張性の強化、パート 2" です。 この 2 部構成のシリーズの第 2 部では、Job オブジェクト、新しい量子コントロール、新しいスケジュール クラス、ユーザー モード スレッド プールなど、マルチプロセッサのスケーラビリティのために、Microsoft が Win2K で行った機能強化について説明します。

この 8 月に、Windows NT Magazine は、サブスクライバーのみがアクセスできるようにオンライン記事の閲覧ポリシーを変更しました。 先月、ポリシーが緩められ、8 月以前の状態に戻りました。 サブスクライバー以外のユーザーは、最も新しい記事4回分よりも古い記事は自由に閲覧できるようになりました。

当社の出版物の完全な一覧を見る: http://www.sysinternals.com/publ.htm.

Internals ニュース

Win2K DDK がリリースされました

Microsoft の Win2K デバイス ドライバー開発キット (DDK) の最終リリースは、http://www.microsoft.com/ddk. から利用できます。 キットは無料でダウンロードすることも、オンラインでドキュメントを参照することもできます。

キーストロークを使用して Win2K をクラッシュさせる

いいえ、これはバグではありません。 "Inside Windows NT 2nd Edition" の著者である デイビッド・ソロモンが、このクールなヒントを提供してくれました。 DWORD レジストリ値 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters\CrashOnCtrlScroll を追加して、それを 1 に設定してから再起動すると、キーボードを使って Win2K をクラッシュさせることができます。 右のコントロール キーを押しながら、スクロール キーを 2 回連続して押します。 スクロール キーを 2 回押すと、"エンドユーザーがクラッシュダンプを手動で生成しました" というメッセージが表示されたブルー スクリーンが表示されます。

手動でシステムをクラッシュさせる機能を持つことは、カーネルまたはデバイス ドライバーがデッドロックし、コンピューターが応答しなくなった場合に役立ちます。 デッドロックが存在する間に生成されたクラッシュ ダンプは、デッドロックの原因を示す情報を開発者に提供できます。 このオプションはとてもひっそりと導入されたので、Win2K のコア カーネル開発者でさえ、私がプラグフェストにいたときに教えるまで、その存在に気付いていませんでした。

書き込みで保護されたシステム メモリについての新着情報

以前のニュースレターで、書き込みで保護されたシステム メモリについて、Win2K の新しい信頼性機能であるとして説明しました。 結局のところ、多くの構成において、完全な書き込み保護は既定では存在しません。 コンピューターに少なくとも 128 MB の物理メモリがある場合、Win2K は 4 MB の "ラージ ページ" を使用してカーネル メモリをマップします。 4 KB のページではなく 4 MB のページを使用すると、ページ変換のレベルを節約できるため、パフォーマンスが向上します。 読み取り専用コードと読み取り/書き込みデータの両方が同じ 4 MB ページに存在する可能性があるため、ユーザーがドライバー検証ツールを使用して書き込み保護を要求しない限り、これらのシステムでは書き込み保護が無効になります。 ドライバー検証ツールが書き込み保護を適用する場合、Win2K は低速の 4 KB ページを使用してカーネル メモリをマップします。異なるメモリ領域はページ アラインされているので、個々のコード ページを読み取り専用としてマークしても問題ありません。

したがって、書き込み保護は、メモリが 128 MB 未満のシステムと、ドライバー検証ツールによってそれが有効化されたシステムでのみアクティブになります。 書き込み保護がアクティブでないシステムのために、Microsoft は、システム メモリのチェックサムを計算し、そのチェックサムに対してメモリを定期的に検証するウォッチドッグ機能を Win2K サービス パックへ組み込むことを検討しています。 この検証操作は、ハードウェア補助による書き込み保護ほど正確ではありませんが、読み取り専用であるべき領域への誤った書き込みを検出します。

Win2K API の爆発的増加

Win2K が NT 4 よりも相当大きいことに間違いはありません。 確かに、多くの新しいサービスと統合された機能が Win2K のサイズ (Active Directory、MMC、COM+ など) の一部としてカウントされているというのもありますが、コア OS も大きくなりました。 OS のサイズが大きくなった理由の 1 つは、アプリケーション用にエクスポートする API の数が増えたためです。 Win2K のコア OS DLL には、KERNEL32.DLL、GDI32.DLL、USER32.DLL、ADVAPI32.DLL が含まれます (NTDLL.DLL はコア OS DLL でもありますが、 Win32 API では KERNEL32 は NTDLL に依存しています)。 それぞれの API の爆発的増加についてざっと見てみましょう。 生の数値を次に示します。

LIBRARY NT 4 SP5 WIN2K GROWTH
KERNEL32 681 823 21%
GDI32 401 553 38%
USER32 629 695 10%
ADVAPI32 401 557 39%

一部の API には ANSI 形式とワイド文字列形式の両方があるため上記の数値で 2 回カウントされており、そのため場合によっては 30% も人為的に増大した値になっていることに注意してください。

KERNEL32 は、プロセス、メモリ、ファイル I/O、ロケールを管理する API などの、いわゆる "基本 OS" 機能をエクスポートする DLL です。 Win2K での新しい API には、新しい言語関数 (例: EnumUILanguages)、ジョブ オブジェクト関数 (例: AssignProcessToJobObject)、メモリ管理関数 (例: AllocateUserPhysicalPages)、ファイル関数 (例: FindFirstVolume)、ToolHelp32 API (例: Process32First) などが含まれます。

GDI32 は、描画およびビットマップ関連のルーチンを提供します。 サイズ増大の理由は、新しいフォント管理 API (例: CreateFontIndirectEx)、アルファ ブレンド、およびパス オブジェクト関数などの、主に雑多な新しい関数の出現によるものです。

USER32 はウィンドウ関数を実装し、サイズ増大の大部分は新しいマルチモニター API によるものです。 その他の新しい USER32 API には、一連の情報関数 (例: GetWindowInfoGetTitleBarInfo) が含まれています。

最後に、ADVAPI32 は高度な Win32 API を提供する DLL です。 サイズ増大に寄与する多数の新しい API グループがあります。EFS (例: DecryptFile)、CryptoAPI (例: CryptEnumProviders)、セキュリティ (例: CheckTokenMembership)、イベント トレース (例: StartTrace)、Windows 管理インターフェイス (WMI) (例: WmiOpenBlock) が、新しい関数の大部分を構成します。

デイヴィッド・ソロモン セミナー

デイヴィッド・ソロモン専門家セミナーがサンディエゴにやって来ます - 2月21-25日。 Microsoft で教える人々による開発者トレーニング。

  • ジェフリー・リヒターの「Win32 プログラミング」
  • ジョン・ロビンスの「パワー デバッグ」
  • ジェイミー・ハンラハンの「Windows 2000 デバイス ドライバー」
  • Doug Boling による「Windows CE デバイス ドライバーおよびアプリケーション」

詳細については、http://www.solsem.com を参照する

今後予定されている内容

ソフトウェア特許は、知的財産を活用したい企業にとって必須の娯楽となっています。 Microsoft も特許ゲームに無関係ではありません。NT のカーネルには、米国特許商標庁 (PTO) によって価値があると見なされたいくつかのメカニズムがあります。 Microsoft が特許を取得したカーネルの領域には、I/O マネージャーとオブジェクト マネージャーが含まれます。 次回は、私が NT カーネルで見つけ出した特許のリストをお見せします。


Systems Internals ニュースレターをお読みいただき、ありがとうございました。

公開日: 2000 年 1 月 6 日 (木) 午後 7:09 by ottoh

[ニュースレターアーカイブ ^][< Vol.1、No. 5][Vol. 2、No. 2 >]