高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Note TN2010
Mac OS 9.1

このテクニカルノートでは、次世代の Mac OS である Mac OS 9.1 に加えられた変更および修正について説明します。Mac OS 9.1 は Mac OS 9.0.4 の後継システムであり、Mac OS 9.0.4 の機能に対する拡張と修正を含んでいます。このテクニカルノートは、Mac OS 9.1 と互換性を持つ製品の開発に関心を持っているすべてのデベロッパを対象に書かれています。

一言でいえば、Mac OS 9.1 は、これまで報告されていたバグを修正し、操作のパフォーマンスと安定性を向上させるシステムアップデートです (r. 2469436)。

CONTENTS

[2001 年 1 月 18 日]






必要なハードウェア

Mac OS 9.1 は、PowerPC プロセッサを搭載して出荷されたすべての Macintosh が対象です。Mac OS 9.1 をインストールする Macintosh には少なくとも 32 MB の RAM が物理的に実装されていて、40 MB 以上の RAM が論理的に設定されている必要があります (物理的に実装されている RAM の容量が 64 MB未満の場合、仮想メモリの容量はデフォルトで 64 MB に設定されます)。

Apple では、Mac OS 9.1 を Apple 製の PowerPC ベースの Mac OS コンピュータでテストしており、その動作を保証しています (他社製の Mac OS 互換コンピュータでは Mac OS 9.1 をテストしていないため、これらのコンピュータで Mac OS 9.1 が正常に動作することは保証されていません)。

ページの先頭に戻る



インストール

Mac OS 9.1 は、Mac OS 7.5.5 またはそれ以降の Mac OS に対するアップグレードとしてインストールすることができます。Mac OS 9.1 のインストーラを実行するには、Mac OS 8.5 またはそれ以降が実行されている必要があります。ただし、インストールを実行する前に、インストール CD からシステムを起動をすることをお勧めします。

ページの先頭に戻る




Finder 9.1

Finder はユーザにグラフィカルインタフェースを提供すると同時に、ファイルシステムを利用するアプリケーションに Apple イベントベースのサービスを提供します。次に、Finder 9.1 の新機能と Finder 9.1 に加えられた変更の一覧を示します。

全般的な変更と修正

  • アプリケーションの「情報を見る」ウインドウでは、メモリパーティションをより自由に編集できるようになりました。特に、Finder から無効なメモリ構成に関する警告が表示されることなく、まずいずれかのフィールドを自由に変更できるようになっています。ユーザがウインドウを閉じるまで Finderは変更を適用しません (ユーザが制限を超える値を入力している場合に確認のウインドウが表示されるのはこの時点のみです)。

  • コンテキストメニューのコマンドが追加され、Mac OS パッケージフォルダの内容を表示できるようになりました。新しい「パッケージの内容を表示」コンテキストメニューコマンドを使用すると、パッケージフォルダを開いて、その内容をあたかも通常のフォルダのように取り扱うことができます (r. 2406988)。

  • Finder のメインメニューバーに「ウインドウ」メニューが追加され、現在開いている Finder ウインドウのリストが表示されるようになりました。「ウインドウ」メニューから項目を選ぶと、対応するウインドウが手前に移動します (また、項目がポップアップウインドウを参照している場合は、ウインドウがポップアップします)。「ウインドウ」メニューから項目を選択するときには、次のメタキーの組み合わせを使用できます。

    • メタキーを押し続けない - ウインドウを選択して手前に表示します
    • コマンド - ウインドウを閉じます
    • コマンド + shift - ポップアップウインドウを片づけます
    • コマンド + option - その他のウインドウを閉じ、選択したウインドウの内容を表示します
    • control - その他のウインドウをタイトルバーだけの状態にし、選択したウインドウの内容を表示します (シングルウインドウ)
    • control + option - すべてのウインドウの内容を表示し、選択したウインドウを手前に表示します



  • Finder では、Desktop Folder から起動ボリュームを除くボリュームへのリダイレクトがサポートされるようになりました (Folder Manager API によって)。その結果、Finder は全面的に Folder Manager に依存して Desktop Folder の位置を決定し、その実際の位置についての仮定を行わなくなります (r. 2406346)。

  • ファイルをコピーするとき、今後は通常の書類ファイルをエイリアスファイルで上書きできなくなります (r.2433219)。

  • Finder 9.1 のユーザインタフェースでは、名前が半角 27 文字を超えるフォルダやボリュームのファイル共有を開始できなくなります (r. 2257202)。

  • 「情報を見る」ウインドウ内でファイルの名前を編集し、同じウインドウにあるチェックボックスを使ってファイルをロックすると、ファイルの名前を直前の値に戻せなくなります (r. 2286023)。

  • エイリアスファイルを選択しているときは、Finder の「暗号化」メニューコマンドを使用できなくなります (r. 2397515)。

  • Finder 9.1 では、Finder とシステムファイルを Desktop Folder の位置に移動しても、それを保護することはできません (r. 2404745)。

  • Finder 9.1 は、Mac OS X のパッケージを認識するためにいくつかのチェックを行います。つまり、あるフォルダに適切な Mac OS X パッケージ情報ファイルが含まれていると、Finder はそのフォルダをパッケージとして識別します。

  • 不可視ファイルがゴミ箱の中にあるときに、同じ名前の別のファイルをゴミ箱にドラッグすると発生する可能のあったクラッシュの問題が修正されました (r. 2413764)。

  • FireWire ドライブをゴミ箱にドラッグするときに Finder で発生する可能性のあったいくつかのエラーが修正されました (r. 2515977)。

  • Mac OS X パッケージへのカスタムアイコンのペーストがサポートされました (r. 2538098)。

  • Finder は、一番手前のアプリケーションに切り替えられるときに、バックグラウンドアプリケーションとして実行されている別のアプリケーションから受け取った Apple イベントに応答して開いたウインドウを適切にアクティブにできるようになりました (r. 2417802)。

  • 多数のファイルを含む幅の狭いウインドウを開くときに Finder がハングすることがあるという問題が修正されました。この問題はこれまで、アイコンの位置があらかじめ割り当てられていないリスト表示以外のウインドウでのみ発生することがありました。

  • Finder 9.1 では、ドロップボックスの内部でエイリアスを作成できません。Finder の以前のバージョンではこの操作を許可していましたが、この操作は常に失敗し、部分的に作成されたエイリアスがドロップボックス内に残されていました (r. 2442066)。

  • Mac OS 9 パッケージに対するカスタムアイコンを正しく表示できるようになりました (r. 2468468)。

  • Finder のリスト表示を最新の情報に再描画するためのメカニズムが改善されました (r. 2308818)。

  • 新しい Finder は、階層が 200 を超えるフォルダをリスト表示で展開してもクラッシュしなくなりました (r. 2371844)。

  • ユーザによる画面解像度の変更に従って、ポップアップウインドウのタブのサイズが適切に変更されるようになりました (r. 2372335)。

  • コピー操作の実行中にフォルダを開くと、その内容が動的にアップデートされないという問題が修正されました (r. 2474094)。

  • これまで特定の状況下では、コマンド + 上矢印キーを押してウインドウのナビゲーションを行うと (現在選択しているウインドウの親ウインドウを開いて選択するために使用する)、クラッシュが起きることがありました。この問題は修正されました (r. 2515500)。

  • これまで特定の状況下では、コマンド + I キーを押した後で (情報を見る)、コマンド + delete キーを押すと (選択した項目をゴミ箱に移動する)、Finder のメモリが壊れてクラッシュが起きる可能性がありました。この問題は修正されました (r. 2504598)。

  • Finder 9.1 には次のショートカットキーが追加され、Mac OS X の Desktop で使用されるショートカットキーと同じ機能を持つキーボードコマンドがサポートされました (r. 2525977)。

    • コマンド + T - 選択した項目をよく使う項目に追加します。
    • コマンド + shift + delete - ゴミ箱を空にします。


  • これまで場合によって、アプリケーションのメモリパーティションサイズに対する新しい設定が保存されませんでした。この問題は修正されました (r. 2454019)。

  • Finder は、複製コマンドまたはコピーコマンドを実行した結果作成される新規ファイルや新規フォルダの ioFlBkDat および ioDrBkDat フィールドをクリアするようになりました。

  • システム起動時にテンポラリ項目フォルダの中にあった項目は、再度、ゴミ箱内の「救出された項目」フォルダに移動されるようになりました (r. 2486192)。

    注意:
    この問題を説明する Tech Info Library の記事は次のアドレスで入手できます。
    http://kbase.info.apple.com/techinfo.nsf/artnum/n25134



  • Finder 内の特定の位置にドラッグされるテキストをクリッピングファイルではなく、インターネットロケーションファイルに配置することが望ましいかどうかを判断するときに、Finder によって使用される発見法的メカニズムが各国語のテキストとの互換性を向上させるためにアップデートされました。ドラッグ & ドロップの結果としてインターネットロケーションファイルが作成されるためには、そのテキストが明示的な URL 表記 (「mailto:」や「http://」など) を含むインターネットアドレスを作成するために使用されるものでなければなりません。

    注意:
    この変更は、非 ASCII 文字を含むテキストのみに影響を与えます。テキストが純粋な ASCII である場合は、Mac OS 9 と同じアルゴリズムが使用されます (r. 2478012)。



重要:
コマンドキーと control キーを押しながらコントロールパネルのアイコンをダブルクリックしても、そのコントロールパネルを Finder のパーティション内で起動できなくなりました (r. 2440800)。





AppleScript の変更

  • Finder ウインドウの 'titled' 属性が resizable 属性としてスクリプトにコンパイルされるという、Mac OS 8.5 以来存在し続けてきた問題が修正されました (r. 2472105)。たとえば、次のスクリプトは、

    tell application "Finder" to get the titled of window 1



    次のようにコンパイルされていました。

    tell application "Finder" to get the resizable of window 1



  • Finder の以前のバージョンでは、すべてのアクティブプロセスのクリエータタイプのリストを要求すると、4 文字からなる文字列のリストではなく、オブジェクト参照のリストが返されていました。この問題は Mac OS 8 から Mac OS 9.0.4 で発生しますが、Mac OS 7.x には存在しませんでした (r. 1670530)。たとえば、次のようなオブジェクト参照が返されます。

    tell application "Finder"
        get creator type of every process
            --> {ヌclass COBAネ, ヌclass apaeネ, ヌclass 3615ネ, ヌclass Mrr2ネ,
            ヌclass FMP3ネ, ヌclass ToySネ, ヌclass XPR3ネ}
        beep
    end tell



    この命令はアップデートされ、常に次のような 4 文字の文字列のリストを返すようになりました。

    tell application "Finder"
        get creator type of every process
            --> {"XPR3","FMP3", etc.}
        beep
    end tell



  • 「put away」には、次のような使い方のできる「without asking」引数をオプションで指定できるようになりました (r. 1673117)。

    tell application "Finder"
        set theDisk to disk "Scratch"
        put away theDisk without asking
    end tell



    オプションで指定できる「without asking」引数の効果は、「マシンを次に起動するときにこのディスクを再表示する」といった命令の処理中に表示される可能性のある警告を抑制することです。

  • 次に示すような、すべての取り出し可能なディスクの名前を取得しようとするスクリプトを正常に実行できるようになりました (r. 2244621)。これまで、このようなスクリプトは、「Finder でエラーが起きました:デスクトップにある ejectable = true のすべてのディスクの名前を取得できません」のようなエラーが発生して、実行が中止されていました。

    tell application "Finder"
       name of every disk of desktop whose ejectable is true
    end tell



  • スクリプトは、システム終了シーケンスまたは再起動シーケンスの一部として自分が呼び出されているかどうかを判断できるようになりました。現在の実行状況を検出するため、スクリプトは次のような、Finder の「execution state」属性を使用することができます。

    tell application "Finder"
       if execution state is restarting then
          beep 1 -- マシンが再起動されている
       else if execution state is starting up then
          beep 2 -- マシンを起動中
       else if execution state is running then
          beep 3 -- 完全に機能中
       else if execution state is rebuilding desktop then
          beep 4 -- 現在デスクトップファイルを再構築中
       else if execution state is copying then
          beep 5 -- コピー操作を実行中
       else if execution state is quitting then
          beep 6 -- マシンの電源を切断中
       end if
    end tell 



  • Mac OS 8.5 以降、ファイルに関連付けられている「modification date」および「creation date」属性を使用するスクリプトは動作しませんでした (r. 2279739)。この問題は Mac OS 8 から Mac OS 9.0.4 で発生しますが、Mac OS 7.x には存在しませんでした。この問題は修正され、次のようなスクリプトを使用できるようになりました。

    tell application "Finder"
        set the backup_list to every item of the entire contents of the startup
            disk whose modification date is greater than x
    end tell
                         
    tell application "Finder"
        set the backup_list to every item of the startup disk whose -
            creation date is greater than the (current date)
    end tell
                         
    tell application "Finder"
        set the backup_list to every item of the startup disk whose -
            modification date is greater than the (current date)
    end tell



ページの先頭に戻る




Apple Data Security 2.1

Apple Data Security は Mac OS にセキュリティ機能を提供します。使用できるセキュリティ機能には、ファイルシグネチャの署名と検証、パスワードの保守、およびファイルの暗号化に関する機能が含まれます。

  • Apple Data Security は 128 ビットの暗号化と復号化をサポートするようになりました。

  • いくつかの他社製のアプリケーションおよび Sherlock と関連して、キーチェーンが行う http プロキシパスワードの処理が改善されました (r. 2406669, 2391168)。



ページの先頭に戻る



Apple ファイル保護

Apple ファイル保護は暗号化機能を提供します。ユーザはこのアプリケーションを使って、パスワードによるファイルの暗号化または暗号化されたファイルの復号化を行うことができます。Finder の「暗号化」メニュー項目は、「アプリケーション」フォルダ内に常駐する Apple ファイル保護アプリケーションの機能に依存しています。Apple ファイル保護にはフォルダの圧縮および暗号化を行う機能はありません。これによりパッケージの暗号化が妨げられます。

  • Apple ファイル保護は 128 ビットの暗号化をサポートするようになりました。

  • Apple ファイル保護は、いくつかの他社製ウイルス保護ユーティリティとの互換性を向上するようにアップデートされました (r. 2399313)。

  • 「マルチユーザ」との互換性の問題が修正されました。これまで、Apple ファイル保護は、暗号化を要求されたファイルを含むフォルダの親フォルダに対する読み書きアクセス権をたまたま持っていないとき、そのファイルを含むフォルダ内のすべてのファイルを誤って暗号化しようとすることがありました (r. 2442096)。

ページの先頭に戻る




Apple ヘルプ

Apple ヘルプは、Mac OS のほとんどすべての機能についての詳細な操作ヘルプサービスを提供します。

新しい Apple ヘルプ API

  • Mac OS 9.1 と共に出荷される CarbonLib のバージョンにはいくつかの新しい API が導入されました。以下に、新しい API の概要を示します。

    AHSearch

    OSStatus AHSearch(
         CFStringRef bookname,
         CFStringRef query);



    - bookname パラメータで指定されるヘルプブックの中で、指定された query を検索するようにヘルプビューアに命令します。bookname が NULL の場合は、すべてのブックが検索されます。この関数は同期的に動作します。つまり、必要な場合は、ヘルプビューアアプリケーションを起動し、ヘルプビューアのコンテキストに切り替えて、検索を実行するということです。

    AHGotoMainTOC

    OSStatus AHGotoMainTOC(
         AHTOCType toctype);



    - toctype で指定されるメイン目次に移動するようにヘルプビューアに命令します。kAHTOCTypeUser を指定すると「ヘルプセンター」へ移動し、kAHTOCTypeDeveloper を指定すると「Developer Help Center」*へ移動します。この関数は同期的に動作します。つまり、必要な場合は、ヘルプビューアアプリケーションを起動し、ヘルプビューアのコンテキストに切り替えて、指定された目次ページへ移動するということです。

    注意:
    「Developer Help Center」は Mac OS X でのみサポートされます。呼び出し側がこの API の中で kAHTOCTypeDeveloper 定数を使用しようとすると、ヘルプビューアは「ヘルプセンター」を開きます。



    AHGotoPage

    OSStatus AHGotoPage(
         CFStringRef bookname,
         CFStringRef path,
         CFStringRef anchor);



    bookname と path の組み合わせによって指定される html ファイルに移動するようにヘルプビューアに命令します。bookname が NULL の場合、path はフル「file://」URL でなければなりません。bookname が NULL でなければ、path は bookname によって指定されるブックを基準とする相対パスでかまいません。anchor を指定すると、ヘルプビューアは、新しく開いたファイルの中でそのアンカーまで自動的なスクロールを行います。この関数は同期的に動作します。つまり、必要な場合は、ヘルプビューアアプリケーションを起動し、ヘルプビューアのコンテキストに切り替えて、指定されたページへ移動するということです。



    AHLookupAnchor

    OSStatus AHLookupAnchor(
         CFStringRef bookname,
         CFStringRef anchor);



    - 指定された anchor を含むファイルを開き、そのアンカーまでファイルをスクロールするようにヘルプビューアに命令します。bookname を指定すると、指定した anchor を含むファイルの検索がそのブックに制限されます。bookname が NULL の場合は、すべてのブックが検索されます。アンカーは一意であるべきですが、そうでない場合は、指定された anchor を含むすべてのファイルへのリンクのリストが表示されます。この関数は同期的に動作します。つまり、必要な場合は、ヘルプビューアアプリケーションを起動し、ヘルプビューアのコンテキストに切り替えて、アンカーを含むページまたは結果のリストへ移動するということです。

    AHRegisterHelpBook

    OSStatus AHRegisterHelpBook(
        const FSRef *appBundleRef);



    - アプリケーションが起動するたびにアプリケーションによって呼び出されるこの関数は、そのアプリケーションのパッケージ内に格納されているヘルプブックを検出し、そのヘルプブックのエイリアスをシステムヘルプの位置に置いて (エイリアスがまだ存在していない場合)、次にヘルプビューアを起動するときにそのヘルプブックが「ヘルプセンター」の中に表示されるようにします。

ヘルプビューア

ヘルプビューアはシンプルな HTML レンダリングアプリケーションで、ユーザがオンラインヘルプの情報をブラウズできるようにします。

  • ヘルプビューアと、他のシステム機能や一部の他社製プリンタとの間で発生していた、いくつかのメモリ管理および互換性の問題が修正されました (rr. 2535899, 2386521, 2510449, 2525758)。これらの変更により、結果的にヘルプビューアのパフォーマンスと安定性が向上しています。

  • help:///full/path/to/file.htm という形式の URL がヘルプビューアによって正しく認識されるようになりました (r. 2537852)。

  • ヘルプブックそのものではなく、ヘルプブックのエイリアスがヘルプブック内に格納されているときに、インターネットを経由したリモートコンテンツのダウンロードに関連して発生していた問題が修正されました (r. 2517221)。

  • ヘルプフォルダ内に格納されているエイリアスは、それらの名前がヘルプブックフォルダの名前と同じ場合だけ正常に動作するという問題が修正されました (r. 2474792)。今後、エイリアスに同じ名前を付ける必要はありません。


ページの先頭に戻る




Carbon のサポート - CarbonLib 1.1

Carbon は、Mac OS 9.1 と Mac OS X の両方で実行できるように設計された Mac OS アプリケーションで使用するプログラミングインタフェースのセットです。Mac OS 9.1 と共に出荷される CarbonLib のバージョンには次の新機能が追加されました。CarbonLib の詳細については、「Carbon SDK」を参照してください。

  • 新しい Carbon Event モデル API。
  • 新しい Carbon Printing モデル API。
  • DataBrowser API。
  • 新しいヘルプビューア API。
  • HTMLRenderingLib API。

     



重要:
Mac OS 9.1 は CarbonLib 1.1 と共に出荷されますが、パフォーマンスを向上させるため、Mac OS 9.1 のユーザは CarbonLib 1.2 またはそれ以降へのアップグレードを行うことをお勧めします。このテクニカルノートの執筆時点で、CarbonLib 1.2 はデベロッパ Web サイト (http://developer.apple.com/sdk) で「CarbonLib SDK」の一部として入手できます。



ページの先頭に戻る




ROM イメージファイルの内部

ROM イメージファイルはシステム起動時に RAM 内にロードされ、メモリのその領域は読み込み専用に設定されます。ROM イメージファイルの内容は、かつて Apple Macintosh コンピュータと共に出荷された古いハードウェアベースの ROM チップセットに取って代わります。ROM イメージファイルのアップデートは、システムアップデートおよび新しいハードウェアによって提供されます。Mac OS 9.1 と共にインストールされる ROM イメージファイルには、次の修正が加えられています。

  • これまで、スリープの解除後に一部の表示色が正しく表示されないという問題が発生することがありました (r. 2469657)。この問題は修正されました。

  • これまで、Pro キーボード (ANSI、ISO、JIS) の KMAP リソースに格納されている ID 番号は正しい番号ではありませんでした。この問題は修正されました (r. 2504668)。

     

ページの先頭に戻る



USB Support 1.4.4

Mac OS USB は Mac OS の ROM ファイルに組み込まれていて、内蔵 USB を持つ Macintosh システムで USB サポートを有効にします。

  • 接続されているデバイスが Name Registry 内で 'non-removable' と表示されるようになりました (r. 2439684)。

  • MacsBug との相互運用性の向上が Mac OS USB に組み込まれました (rr. 2540060, 2543100)。

     

ページの先頭に戻る




System ファイルの内部

System ファイルには、コンピュータを実行するために必要なコードとリソースが含まれます。このセクションでは、System ファイルに加えられた新機能、変更、およびバグフィックスについて説明します。shift キーを押しながらシステムを起動したときにも、System ファイルによって提供される機能は常に Mac OS 9.1 の一部としてロードされます。System ファイルには、このセクションで取り上げるライブラリの実行可能ファイルとシステムによって使用されるリソースデータが含まれています。

  • これまで、コンピュータがサーバに接続されていて、ユーザがパワーボタンを押したときに複数のアプリケーションが開いていると、まもなくサーバとの接続が解除されることをユーザに通知するダイアログがバックグラウンドに表示されていました。この問題は修正されました (r. 2486759)。

  • これまで、accRun 呼び出しの処理中に、あるドライバが別のドライバによってインストールされても、SystemTask はローメモリ変数 UTableBase および UnitNtryCnt の古い値を使い続けてしまうという問題がありました。SystemTask はアップデートされ、accRun 呼び出しの実行中にドライバユニットテーブルの移動またはサイズ変更が行われると、テーブルの先頭から accRun の処理を再開するようになりました (r. 2542196)。Mac OS 9.1 以前の Mac OS のバージョンで、accRun 呼び出しの実行中に、あるドライバの内部から別のドライバをインストールする必要がある場合、そのようなインストールは、accRun 呼び出しの処理中にドライバによって初期化される Notification Manager タスクの内部から実行できます。

  • これまで、Process to Process Communication Toolbox はキーチェーンライブラリをシステムヒープ以外のヒープにロードすることがあり、使用中のライブラリが閉じてしまうという危険がありました。この問題は修正され、キーチェーンライブラリは PPCToolbox によって常にシステムヒープにロードされるようになりました (r. 2516363)。

  • これまで、GetFSInfo、SetFSInfo、および InformFSM File System Manager 呼び出しの InterfaceLib グルーはレジスタ D3 を無効にしていました。この問題は修正されました (r. 2522240)。

  • File Manager、Device Manager、および Delay トラップでは、Multiprocessing API Library の先進的な省電力サポートを利用して、消費電力を低下させ、バッテリ寿命を延ばすようになりました。

  • Mac OS 9.1 以前、未処理の二次割り込みリクエストの数は 40 に制限されていました。Mac OS 9.1 では、この制限が 256 に増加しました (r. 2627130)。


ページの先頭に戻る



Alias Manager

Alias Manager はオペレーティングシステムの一部で、File Manager と情報をやり取りし、ファイルやフォルダの保存場所への参照を格納するために使用されるエイリアスレコードを管理します。Alias Manager は Finder のエイリアスファイルを作成しません。これらのファイルは Finder が作成し、Alias Manager によって作成されたエイリアスレコードをそれらのファイルの中に格納します。

  • FSSpecs の代わりに FSRefs を要求する、以下の新しい API が Alias Manager に追加されました。これらの新しいルーチンは、対応する以前の Alias Manager 呼び出しと同じ機能を提供しますが、古い FSSpec データ型の代わりに新しい FSRef データ型を使用する点が異なります。次に、新しい呼び出しの一覧を示します。

    OSErr FSNewAlias(
        const FSRef *fromFile, /* NULL でもかまわない */
        const FSRef *target,
        AliasHandle *inAlias)
                         
    OSErr FSNewAliasMinimal(
        const FSRef *target,
        AliasHandle *inAlias)
                         
    OSErr FSIsAliasFile(
        const FSRef *   fileRef,
        Boolean     *   aliasFileFlag,
        Boolean     *   folderFlag)
                         
    OSErr FSResolveAliasWithMountFlags(
        const FSRef *   fromFile, /* NULL でもかまわない */
        AliasHandle inAlias,
        FSRef       *   target,
        Boolean     *   wasChanged,
        unsigned long   mountFlags )
                         
    OSErr FSResolveAlias (
        const FSRef *   fromFile, /* NULL でもかまわない */
        AliasHandle    alias,
        FSRef      *   target,
        Boolean    *   wasChanged)
                         
    OSErr FSResolveAliasFileWithMountFlags(
        FSRef       *   theRef,
        Boolean         resolveAliasChains,
        Boolean     *   targetIsFolder,
        Boolean     *   wasAliased,
        unsigned long   mountFlags )
                         
     OSErr FSResolveAliasFile(
        FSRef       *   theRef,
        Boolean         resolveAliasChains,
        Boolean     *   targetIsFolder,
        Boolean     *   wasAliased)
                         
     OSErr FSFollowFinderAlias(
        FSRef       *   fromFile, /* NULL でもかまわない */
        AliasHandle     alias,
        Boolean         logon,
        FSRef       *   target,
        Boolean     *   wasChanged)
                         
     OSErr FSUpdateAlias(
        const FSRef   *   fromFile, /* NULL でもかまわない */
        const FSRef   *   target,
        AliasHandle alias,
        Boolean *wasChanged)
                         



ページの先頭に戻る



Appearance Manager

Appearance Manager は、グラフィカルユーザインタフェースの要素に一貫したアピアランスを与えるための機能を提供します。

  • DrawThemeGenericWell には明らかなアップデートのバグがあります。くぼみに対するアップデートが必要で、しかも外側の 1 ピクセルまたは 2 ピクセルだけがアップデートを必要としている場合、Appearance Manager 内の最適化により、くぼみの外側の境界は描画されません (r. 2435805)。

ページの先頭に戻る



ATSUI

Unicode は、フラットな 16 ビット数値空間の中で多数の言語の文字をエンコードする文字セットです。ATSUI は QuickDraw API を拡張し、Mac OS アプリケーションによる Unicode テキストの描画を可能にします。ATSUI は Unicode テキストを描画するためのローレベルなサービスを提供するだけでなく、これまでは QuickDraw GX によって行われていたハイエンドなタイポグラフィ制御の多くを提供します。

  • これまで、フォントのスクリプトコードを正しく読み込めなかったため、一部の他社製 Unicode cmap は ATSUI で使用されませんでした。ATSUI はスクリプトコードを正しく読み込めるようになったため、これらのフォントを使用できるようになりました (r. 2541880)。

  • ATSULeftCursorPosition および ATSURightwardCursorPosition ルーチンでは、クラスタの移動に対して Unicode Utils ルーチンを使用するようになりました。その結果、代理クラスタおよびインド語クラスタに対する ATSULeftCursorPosition と ATSURightwardCursorPosition のクラスタ移動操作で発生していたいくつかの問題が修正されました (r. 2503643)。

  • ATSUPreviousCursorPosition および ATSUNextCursorPosition では、レイアウト境界へのオフセットを正しく返すようになりました。これまで、これらの関数はレイアウト境界を超えるオフセットを返すことがありました。たとえば、レイアウトがオフセット 2 から始まるのに、オフセット 0 のテキストが 5 文字からなる単語で始まる場合に、初期オフセットを 3 に設定し、ATSUPreviousCursorPosition に前の単語の境界を返すように要求すると、これまでは 0 が返されていましたが、現在は正しく 2 が返されるようになりました (r. 2503648)。

  • ATSUPositionToOffset ルーチンは代理ペアを処理できるようになりました (r. 2497992)。

  • これまで、QDStyles のみが使用されている一部の環境では、ATSUCompareStyles が実際には異なる 2 つのスタイルランを等しいものであると判断することがありました。この問題は修正されました (r. 2485233)。

  • ATSUI を使用してプリントされるカラーテキストが印刷ページに期待どおりに出力されないという問題は修正されました (r. 2393116)。

  • 下線文字スタイルは今後、リターン文字に適用されなくなります (r. 2520184)。


ページの先頭に戻る



Drag Manager

Drag Manager では、ウインドウ間またはアプリケーション間でのドラッグ & ドロップ操作をサポートします。

  • これまで一部の環境下では、DrawThemeFocusRect が 2D グラフィックスのアクセラレーションを無効にすることがありました。この問題は修正されました (r. 2445982)。

ページの先頭に戻る



Deferred Task Manager

Deferred Task Manager はオペレーティングシステムの一部で、ハードウェア割り込みサイクルの最後に他のすべての割り込みが可能になるようにしてルーチンを実行するために使用できます。通常、あるハードウェア割り込みの内部で実行されるコードは Deferred Task Manager を呼び出して、他の割り込みがハードウェア割り込みサイクルの内部でただちに処理される場合は、それらの割り込みを十分な時間にわたって無効にするオペレーションのスケジュールを設定します。

  • ある遅延タスクが、CallSecondaryInterruptHandler2 ルーチンを使用する遅延タスクの内部から二次割り込みハンドラを同期的に呼び出せるようになりました (r. 2529860)。

  • 二次割り込みハンドラの内部からインストールされるとき、遅延タスクはただちに実行されなくなります。また、二次割り込みの処理中にインストールされる遅延タスクは、二次割り込みサイクルの最後まで処理が遅延されます (r. 2529860)。


ページの先頭に戻る



File Manager

File Manager は、ディスクベースの情報を格納したり取得したりするためのサービスを提供します。File Manager には次の変更が加えられました。

  • ファイルへの追加スペースの割り当てのパフォーマンスが大幅に向上しました。

  • 512 バイト境界で始まらないファイルへの書き込みは、File Manager の以前のバージョンに比べて最大で 3 倍まで高速化できます。特に、File Manager の書き込みリクエストが 512 バイト境界で始まらず、その書き込みリクエストの最後が開始点を含む 512 バイトディスクブロックの末尾を超え、しかもその書き込みリクエストの残りの部分がキャッシュに格納されないとき (ioPosMode の noCache ビットがセットされていたり、書き込みリクエストが大きすぎてキャッシュに収まりきらないため)、書き込みリクエストの先頭部分を含むキャッシュバッファは即座にディスクにフラッシュされます。これにより、ファイルがフラッシュまたはクローズされるときに 1 ブロックずつフラッシュする必要のある不連続な (ディスク上の) ダーティキャッシュバッファがディスクキャッシュ内に残されなくなります。

  • ディスクキャッシュのサイズを 8 MB を超えるサイズに設定できるようになりました (詳細については、「メモリ」コントロールパネルのセクションを参照してください)。

  • File Manager は改訂され、データをバッファに格納するときにいずれかのローメモリグローバルを上書きする可能性がある場合は読み込みコマンドを処理しなくなりました (r. 2508431)。

  • FSGetCatalogInfoBulk は、PC フォーマットの Zip ディスクと共に正しく動作するようになりました (r. 2485093)。

  • パーソナルファイル共有では、4 GB を超えるボリュームを使用できるようになりました (r. 2283946)。

  • ISO 9660 CD から空フォルダを含む大規模なツリーをコピーするときに発生することがあった問題が修正されました (r. 2372435)。

  • ファイル共有が開始されているときも、FSCreateFileUnicode は正しく動作するようになりました。これまで、このルーチンによって作成されるファイルは、このルーチンに渡すパラメータで正しく指定しておいても、ファイルタイプとクリエータがブランクになってしまっていました (r. 2397324)。

  • これまで、非常に多数の非同期読み書き呼び出しを同時に実行すると、不正なリザルトコードが返されるようになるという問題が報告されていました。この問題を引き起こす潜在的な環境は、Mac OS 9.0 および Mac OS 9.0.4 にのみ存在します (r. 2452853)。

  • 2 バイト文字のエンコーディングを行うシステムで複製を行うとき、ファイル名がスクランブルされてしまうという問題が修正されました (r. 2475992)。特に、テキストエンコーディングヒントの設定を試みなかった FSSetCatalogInfo 呼び出し (またはその PB 相当呼び出し) は、最終的にテキストエンコーディングヒントを現在のデフォルトのテキストエンコーディングに変更してしまっていました。FSSetCatalogInfo は、テキストエンコーディングヒントを変更せずにそのまま残すようになります。

  • 強制アンマウントを行うと、アンマウント操作を続けて、ボリュームに割り当てられているメモリ構造体を破棄する前に、任意の反復子または「ラージ」ファイル(つまり、OpenFork を使って開かれたファイル) が閉じられるようになりました (r. 2526761)。

  • パフォーマンスを向上させるため、サイズが 220 GB を超えるボリュームのデフォルトアロケーションブロックサイズは 8K に設定されました (r. 2529957)。

  • Mac OS 拡張 (HFS Plus) ボリューム上のカタログノード ID (CNID) は再利用できるようになりました。CNID が再利用されるとき、VCB の vcbAtrb フィールドおよび HFSPlusVolumeHeader の attributes フィールドのビット 12 (kHFSCatalogNodeIDsReusedBit) がセットされます。

  • このビットがセットされていることを確認したディスク修復ユーティリティは、すでに使用されている nextCatalogID より大きな CNID を検出した場合にも、それをエラーと見なしてはいけません。


ページの先頭に戻る



File System Manager

File System Manager は、外部ファイルシステムのインストールや識別を行ったり、外部ファイルシステムとオペレーティングシステムとのインタフェースをとるための一般的な手段を提供します。

  • これまで、GetFSInfo、SetFSInfo、および InformFSM の InterfaceLib グルーコードは、68020 エミュレータ内のレジスタ D3 を無効にしていました。この問題は修正され、このレジスタは正しく保持されるようになりました (r. 2522240)。

ページの先頭に戻る



Folder Manager

Folder Manager は、フォルダ名に依存することなく、特殊なフォルダ (たとえば、システムフォルダ内の「機能拡張」フォルダなど) を検出するための機能を提供します。Folder Manager はアプリケーションのローカライズ作業を支援します。

  • 起動ディスク以外のディスク上にある「Chewable Items」フォルダもシステム起動時に空にされるようになりました。システムソフトウェアの以前のバージョンでは、起動ディスク上の「Chewable Items」フォルダだけがシステム起動時に空にされていました (r. 2468800)。

  • これまで、新しいフォルダを作成しようとしたときに発生したエラーは、FindFolder ルーチンによって返されていませんでした。この問題は修正され、FindFolder はフォルダを作成しようとしたときに生成されるエラーコードを正しく返すようになりました (r. 2489334)。

  • Folder Manager は、ボリュームのマウント時およびアンマウント時にネットワークのゴミ箱フォルダに対してさらにいくつかのクリーンアップ操作を実行するようになりました (r. 2485627)。


ページの先頭に戻る



Font Manager

Font Manager は、テキスト情報を表示するグリフを取得するためのシステム全体にわたるサービスを提供します。

  • FMGetFontFamilyTextEncoding はこれまで、日本語 PostScript フォントのベースエンコーディングのみを返し、フォントバリアントを返していませんでした。この問題は修正され、FMGetFontFamilyTextEncoding はフォントバリアントも返すようになりました (r. 2489182)。

ページの先頭に戻る



Icon Services

Icon Services は、ファイルアイコン、ディレクトリアイコン、またはその他の一般的に使用されるアイコン (たとえば、警告アイコン、注意アイコン、ヘルプアイコンなど) の表示に使用される適切なアイコン情報を高速かつ効率的に取得するための機能を提供します。

  • パッケージにカスタムアイコンが適用されているときでも、GetIconRefFromFile ルーチンは Mac OS 9 Finder パッケージの正しいアイコンを返すようになりました (r. 2481644)。

  • 画面が 16 ビットモードのときに 8 ビットアイコンを使用していると発生していた問題が修正されました。これまで、この問題の回避方法としては、画面を 32 ビットモードに切り替えるしかありませんでした (r. 2395259)。

  • DesktopDB という名前のファイルを含むボリューム上での「Desktop」という名前のファイルに対する冗長検索が省略されました (r. 2388430)。


ページの先頭に戻る



Memory Manager

Memory Manager はオペレーティングシステムの一部で、メモリ割り当てリクエストの管理を担当します

  • Memory Manager コードの pc ロケーションとして表示されていた MacsBug デバッガのシンボルが BowelsOfTheMemoryMgr からよりわかりやすい名前である YourHeapIsProbablyCorrupt に変更されました (r. 2529682)。

ページの先頭に戻る



Menu Manager

Menu Manager はオペレーティングシステムの一部で、メニューバーの描画と、メニューコマンドを選択するときのメニューおよびポップアップメニューの描画を管理します。

  • IsMenuItemEnabled が常に true を返すという問題が修正されました。このルーチンは、項目の実際のステータスを返します (r. 2406841)。

  • マウスでポップアップメニューを開いているときにキーボードメニューコマンドによる選択を行うと、PopUpMenuSelect が不適切なメニュー項目を返す場合があるという問題が修正されました (r. 2438609)。

  • メニューバー・クロックのバッテリインジケータが、バッテリの状況の変化により敏感に応答できるようになりました (r. 2497581)。


ページの先頭に戻る



MultiLingual Text Editing

MultiLingual Text Editing (MLTE) は、Unicode テキスト書類を作成して編集するための C 言語インタフェースを提供します。MLTE の機能は多くの点で TextEdit の機能に類似しているように見えますが、実際には TextEdit に含まれていないさまざまな機能を提供します

  • メモリ不足になった場合の TXNNewObject の操作の安定性が向上しました (rr. 2536146, 2534825)。

  • サポートされていないフォントを使用した操作の実行を要求されたとき、TXNDoFontMenuSelection は適切なエラーコードを返すようになりました (r. 2488121)。

  • これまで、TXNSetDataFromFile ルーチンは呼び出されたときに入力オフセットを無視していました。今後は、これらのパラメータを適切に使用します (r. 2479847)。

  • MLTE は、フォントの UniqueName ではなく、フォントのフルネームをエンコードされたファイルの中にエンコードするようになりました (r. 2500541)。

  • これまで、テキストデータが RTF 形式ファイルから読み込まれるとき、均等配置の情報が使用されず、テキストがソースファイルで指定したとおりに均等配置されていないように見えることがありました。この問題は修正されました (r. 2507443)。

  • TXNFind ルーチンの検索データとして kTXNUnicodeTextData を指定できるようになりました (r. 2505642)。

  • TXNAttachObjectToWindow ルーチンは、それが呼び出されるときに現在の GrafPort 設定を保持すようになりました (r. 2516497)。


ページの先頭に戻る



Multitasking/Multiprocessing API

Multitasking/Multiprocessing ライブラリを使用すると、アプリケーションは 1つまたは複数の PowerPC プロセッサを搭載したコンピュータでプリエンプティブマルチプロセッシング操作を実行できるようになります。

  • これまで、あるデバッガがすでに特定のレベルに登録されているとき、それと同じレベルに別のデバッガを登録しようとしても、MPRegisterDebugger ルーチンはエラーを返しませんでした。MPRegisterDebugger は、すでに登録されているレベルにデバッガを登録しようとすると、エラーを返すようになりました。複数のデバッガを登録できるようになったため、Macsbug をインストールしているときでも、その他の複数のデバッガをインストールすることができます (r. 2490379)。

  • kMPTaskStoppedErr 定数を使って呼び出されるときに、MPThrowException ルーチンが kInvalidID エラーを返すという問題が修正されました (r. 2492526)。

  • オプションパラメータで kMPAllocateNoGrowthMask マスクを使って MPAllocateAligned を呼び出すと、MPAllocateAligned への呼び出しがクラッシュするという問題が修正されました (r. 2510691)。

  • MPAllocateAligned によって割り当てられたメモリプールは、それらが必要でなくなったときに適切に解放されるようになりました。

  • ローメモリトラップテーブルを介してディスパッチされる InterfaceLib、DislayLib、FSMLib、または DragLib 呼び出しは MP タスクからも呼び出せるようになりました。


    注意:
    これらの呼び出しの大部分は MPRemoteCall 形式のグルーによって実装されているため、これらのライブラリを MP タスクから呼び出すときには少量のオーバーヘッドが発生します。また、これらの呼び出しはリエントラントの保護を実行せず、InterfaceLib に含まれる API の多くはリエントラントではありません。したがって、アプリケーションは必要に応じて独自の相互排他コードを提供しなければなりません。



  • MPRemoteCall に kMPInterruptRemoteContext という新しいオプションが追加されました。このオプションにより、リモートプロシージャはレベル 1 割り込み時に実行されるようになります。kMPInterruptRemoteContext オプションを使用しているとき、MPRemoteCall プロシージャはほとんど即座に呼び出されます (待ち時間は 1.5 マイクロ秒)。この新しいオプションを使用すると、アプリケーションは、即座に実行され、WaitNextEvent を呼び出すアプリケーションに依存しない、割り込み時に呼び出し可能な MPRemoteCall プロシージャを呼び出せるようになります。

    重要:
    kMPInterruptRemoteContext オプションを使って呼び出された MPRemoteCall プロシージャは、割り込み時に呼び出し可能でなければなりません。したがって、これらのプロシージャはメモリの移動または割り当てを行うルーチンを呼び出すことはできません。割り込み時に呼び出し可能なルーチンの詳細については、「Technical Note TN1104, Interrupt-Safe Routines」を参照してください。



  • kMPOwningProcessRemoteContext を指定するとき、MPRemoteCall は WakeUpProcess を呼び出すようになりました。これにより、MPRemoteCall の呼び出し待ち時間が大幅に短縮されます (16 ミリ秒から 100 マイクロ秒に)。

  • MP ページフォールトは、システムタスク時ではなく割り込み時に解決されるようになりました。これにより、MP タスクに対するページフォールト待ち時間が改善され、MP スレッドの実行時に発生する可能性のあったブロック状況の数が減少します。

  • 次の条件が満たされると、MPAllocateAligned ルーチンはメモリが十分に存在しても正常に実行されないことがありました。


    1. アプリケーション 1 によって作成されたプリエンプティブタスクから呼び出しが行われている。
    2. アプリケーション 1 は、リクエストに使用するスペースを確保するために、まだ MaxApplZone を呼び出していない。
    3. 割り当てリクエストサイズはヒープ内にある現在の空きスペースよりも大きい。
    4. アプリケーションヒープをフルサイズに拡張すると、割り当てリクエストはその中に収まる。
    5. 現在のアプリケーションはアプリケーション 1 ではない


    この問題は修正され、割り当てリクエストを満たすために十分メモリが使用可能であるとき、MPAllocateAligned 呼び出しはこのような条件下でも正常に実行されるようになりました (r. 2512273)。

  • Multitasking/Multiprocessing API ライブラリに含まれていたいくつかのバグが修正され、結果的にオペレーションの安定性が向上しました (rr. 2513476, 2520949, 2517072, 2522261, 2524626)。

ページの先頭に戻る



Navigation Services

Navigation Services は新しい「開く」、「保存」ダイアログを提供して、ユーザがファイルやその他のリソースを容易に検索して選択することを可能にします。

  • インライン入力を使用する特定の条件下では、「新規フォルダ作成」Navigation Services サブウインドウの新規フォルダ名フィールドがテキスト入力を受け付けませんでした。この問題は修正されました (r. 2404367)。

  • 「ショートカット」ボタンに「iDisk に接続」という新しい項目が追加されました (r. 2463489)。

  • 「開く」ダイアログボックスでよく使う項目をリストに追加するプロセスで発生していた DisposeHandle 呼び出しのエラーは取り除かれました (r. 2470707)。


ページの先頭に戻る



PPC Toolbox

PPC(Program-to-Program Communications)Toolbox は、同じマシン上で実行されているプロセス、および AppleTalk ネットワークまたは TCP/IP ネットワークによって接続されている異なるコンピュータ上で実行されているプロセスを対象とするプロセス間通信機能を提供します。

  • PPC Toolbox は自分自身を Network Services Location に登録するようになりました。NSL に登録される名前は、「生」のドメイン名または IP アドレスではなく、「ファイル共有」コントロールパネルで割り当てられているマシン名です。これは、AppleTalk および TCP/IP 経由のどちらでネットワークをブラウズしても、同じマシン名が確認できるようになるという意味です (rr. 2382164, 2450626)。

  • TCP/IP 経由の PPC に対する PPCToolbox で使用されるデフォルトのポート番号を変更できるようになりました。PPCToolbox によって使用されるポート番号は、システムファイルの 'ppc2' リソースに含まれています。PPCToolbox が初期化されるときにこのリソースが存在すると、これに含まれる ID 番号は、TCP/IP 接続経由で受信するすべての PPC に対するデフォルトのリスニングポートとして使用されます (r. 2450615)。

    次に、システムファイルに含まれるデフォルトの 'ppc2' リソースに対する Rez 定義を示します。

    type 'ppc2' {
        unsigned integer; // データ構造体のバージョン (1)
        unsigned integer; // デフォルトの PPCtoolbox TCP ポート
    };
                         
                         
    resource 'ppc2' (-16409) {
    	1,    // リソースのバージョン
    	3031  // デフォルトの PPCtoolbox TCP ポート
    };
                         



  • リモートコンピュータを記述するロケーションネームレコードが PPC 接続のリスニング側で不正に設定されることがありました。この問題は修正されました (r. 2426253)。

  • これまで、スリープを解除するとき、プログラムリンクは停止されていました。今後は、マシンがスリープに入る前にプログラムリンクが開始されている場合、マシンのスリープを解除すると、プログラムリンクは再度開始されるようになります (r. 2435676)。

  • 改善が加えられ、キーチェーンと組み合わせて使用するときに PPCToolbox のオペレーションがより安定したものになりました (r. 2516363)。


ページの先頭に戻る



Process Manager

Process Manager は複数のアプリケーションにプロセッサを共有させます。Mac OS 9.1 の Process Manager には次の変更が加えられています。

  • Process Manager 全体がネイティブ PowerPC コードで書き換えられました。このため、タスクスワッピングのオーバーヘッドが減少し、全般的なシステムパフォーマンスが向上します。特に、アプリケーション間の切り替えを行う WaitNextEvent 呼び出しと Apple イベントのパフォーマンスが向上しました。また、バッテリ電源を使用する場合のパフォーマンスも相当に改善されました。

  • WakeUpProcess はプロセスのスケジューリングを適切に実行し、プロセスのスリープ時間と未処理イベントのキューに従って、それらの優先順位を決定するようになりました。

  • Mac OS 9 では、フローティングウインドウを表示するアプリケーションが予期せず終了した後でシステムがクラッシュすることがありました。この問題は修正されました (r. 2540229)。

  • Process Manager はメモリをより効率的に使用するようになり、適切に Multitasking/Multiprocessing ライブラリとの調整をとるようになりました (r. 2005897)。


ページの先頭に戻る



QuickDraw

QuickDraw は Mac OS の一部で、画面やその他のラスタデバイス上でグラフィカル情報の描画と表示を行うために使用されます。

  • CalcCMask は、long 型の rowBytes 値を使用した PixMaps とも適切に動作できるようになりました (r. 2396796)。

  • QuickDraw は、long 型の rowBytes 値を使用した PixMaps を含むピクチャを正しく描画するようになりました (r. 2358107)。

  • CopyBits は、long 型の rowBytes 値を使用した PixMaps をスケールダウンできるようになりました (r. 2407463)。


注意:
Color Manager が変更され、8 ビットデバイスに対するモノクロのリクエストは、白がパレットの先頭のエントリで、黒は最後のエントリであるというマニュアルに記載されている要件を使用するようになりました。このため、アプリケーションがこれらの必要な位置に白と黒を含まないカスタムパレットを持っている場合は問題が発生します。



ページの先頭に戻る



QuickDraw Text

QuickDraw Text は Mac OS の一部で、画面やその他のラスタデバイス上でテキスト情報の描画と表示を行うために使用されます。

  • これまで、QDText アクセラレータが 1 つしか登録されていないと、QuickDraw Text はその存在を認識できず、テキストアクセラレーションは実行されませんでした (r. 2540704)。今後はテキスト描画のハードウェアアクセラレーションが可能になり、ハードウェアアクセラレーションが使用できないときは、それに代わって Velocity Engine ベースのアクセラレーションが使用されるようになります (r. 2447291)。

ページの先頭に戻る



Resource Manager

Resource Manager は、アプリケーションおよびオペレーティングシステムの実行時に使用される情報を格納したり取得したりするためのデータファイル形式を提供します。

  • パフォーマンスを向上させるため、Mac OS 9.1 の Resource Manager のパフォーマンスと、Mac OS 9.1 Resource Manager によって保存されたリソースファイルを使用するアプリケーションのパフォーマンスに影響を与えるいくつかの変更が加えられました。

    特に、Resource Manager は、読み書き可能でオープンされたファイルのリソースタイプと ID をソートするようになりました。その結果、GetIndResource から返されるリソースの順序が Resource Manager の以前のバージョンとは異なる可能性があります。AddResource または RemoveResource を呼び出してあるタイプのリソースの追加または削除を行うとき、GetIndResource を使って、そのリソースタイプ全体の列挙を行うと、同じコードで Resource Manager の以前のバージョンを使用した場合とは矛盾する結果が返される可能性があります。

    また、小さなリソースを複数取得する必要のある File Manager Read リクエストの数は、可能なときには 2 リクエストから 1 リクエストに減少しました。

  • 新しい Gestalt ビットの gestaltRMSupportsFSCalls が gestaltResourceMgrBugFixesAttrs セレクタから返される値に追加されました。このビットは、前述した新しい FSRef 呼び出しの存在を示します。

  • FSSpecs の代わりに FSRefs を使用する新しい API が追加されました。次に、これらの新しい API の概要を示します。

    OpenResFileFSRef

    short OpenResFileFSRef(
            const FSRef *ref,
            SignedByte permission);

    OpenResFileFSRef は FSpOpenResFile と同じオペレーションを実行しますが、呼び出し元が FSSpec の代わりに FSRef を使用してファイルを参照できる点が異なります。



    CreateResFileFSRef

    void CreateResFileFSRef(
            const FSRef *parentRef,
            UniCharCount nameLength,
            const UniChar *name,
            FSCatalogInfoBitmap whichInfo,
            const FSCatalogInfo *catalogInfo, /* NULL でもかまわない */
            FSRef *newRef, /* NULL でもかまわない */
            FSSpec *newSpec) /* NULL でもかまわない */
        
    おそらく NULL
                         

    CreateResFileFSRef は新しいリソースファイルを作成します。対応するルーチンの FSpCreateResFile に類似していますが、この新しいルーチンには、新しい HFS+ API との統合を考慮して、いくつかの追加パラメータが用意されています。

    • parentRef - ファイルが作成されることになるディレクトリ
    • nameLength - ファイルの名前に使用する Unicode 文字の数
    • name - Unicode 名へのポインタ
    • whichInfo - 設定するカタログ情報フィールド
    • catInfo - 設定するカタログ情報フィールドの値 (NULL でもかまわない)
    • newRef - 新しいリソースファイルの FSRef へのポインタ (NULL でもかまわない)
    • newSpec - 新しいリソースファイルの FSSpec へのポインタ (NULL でもかまわない)





    ResourceFileAlreadyOpenFSRef

    Boolean ResourceFileAlreadyOpenFSRef(       
            const FSRef *resourceFileRef,
            Boolean *inChain,
            SInt16 *refNum);    
                         

    resourceFileRef によって参照されるリソースファイルがすでにオープンされている場合、ResourceFileAlreadyOpenFSRef は true を返します。ファイルがオープンされている場合は、inChain および refNum パラメータが設定されます。

    • resourceFileRef - ディスク上のファイルへの参照

    • inChain - ファイルがオープンされていて、そのマップが現在のリソース検索チェーン内にある場合は true に設定される

    • refNum - リソースファイルの参照番号が設定される。この参照番号は、このファイルにアクセスする他の Resource Manager ルーチンでも使用される




ページの先頭に戻る



Script Manager

Script Manager は、数値、日付、時刻、およびその他の情報を言語に依存しない方法で表示したり取得したりする機能を提供します。

  • これまで、StringToExtended と ExtendedToString の動作が完全に対称的ではない場合がありました。この問題は修正されました (r. 2454794)。

  • これまで、現在のスクリプトの morningStr と eveningStr が空のときに InitDateCache を呼び出すと、クラッシュが起きることがありました。この問題は修正されました (r. 2439135)。

  • 地域名の「Flemish」は「Belgian」に変更されました (r. 2519932)。

  • TransliterateText が簡体字中国語の 2 バイトの数値を ASCIIの数値に変換できないという問題が修正されました (r. 2476554)。

  • IntlTokenize ルーチンはこれまで、「<>」というトークンを tokenLessGreat と認識できませんでした。つまり、このトークンは、tokenLess および tokenGreat の連続と見なされていました。この問題は修正され、「<>」は正しく tokenLessGreat と認識されるようになりました (r. 2396920)。


ページの先頭に戻る



StdCLib 3.7

StdCLib は、C 言語を使ってコンパイルされたプログラムにさまざまな機能を提供する共有ライブラリです。Mac OS 9.1 では、System ファイルのデータフォークに StdCLib の新しいバージョンが含まれています。StdCLib 3.7 には次の修正が加えられています。

  • StdCLib for Mac OS 9.1 に加えられた最大の変更は、すべての StdCLib 関数がプリエンプティブタスクから呼び出せるようになったということです (r. 2464965)。この中には、<stdio.h> の I/O オペレーションや <stdlib.h> のメモリ管理が含まれます (たとえば、malloc、calloc、realloc、free)。

    これらの機能を使用するために実行しなければならない初期化の操作は特にありません。ただし、MP タスクから <errno.h> の errno を設定または取得するためには、ソースコードが「-d _POSIX_THREAD_SAFE_FUNCTIONS」とバージョン 3.7 <errno.h> を使ってビルドされていなければなりません (r. 2464965)。これは、errno が、それを要求したタスクの errno 値のアドレスを取得するマクロとして再定義される必要があるためです。つまり、errno はタスク単位のデータであり、それぞれの MP タスクは独自の errno 値を持つということです。

    また、一部のグローバルステートもタスク単位で管理されます。このようなグローバルステートには、<stdlib.h> に含まれる乱数ジェネレータ rand のシード、<string.h> に含まれる strtok のスキャンのステート、<math.h> の ecvt と fcvt、<stdio.h> の tmpnam、および <time.h> の asctime および localtime に対するスタティックデータがあります。

  • 次の関数が <stdio.h> に追加されました (r. 2464965)。


        int getchar_unlocked(void);
        int getc_unlocked(FILE* stream);
        int putchar_unlocked(int c);
        int putc_unlocked(int c, FILE* stream);
        void flockfile(FILE* file);
        int ftrylockfile(FILE* file);
        void funlockfile(FILE* file);
                         
    したがって、次のように書けます ...
                         
        flockfile(stdout);
            for (i = 0 ; i < N ; i++)
                putc_unlocked(buffer[i], stdout);
        funlockfile(stdout);
                         
    ... こうすれば、各呼び出しに対するオーバーヘッドを招くことなく、
    putc をループ内に置いて、出力を直列化することができます。



  • MP 対応を促進するため、バージョン 3.7 <stdio.h> から getc、putc、clearerr、feof、ferror、および fileno の各マクロが削除されました。

ページの先頭に戻る



Text Services Manager (TSM)

Text Services Manager は、アプリケーションが、特殊なテキスト入力方法、スペルチェック、ハイフネーションなどのサービスを提供するさまざまなテキスト処理ユーティリティと情報をやり取りするために必要な機能を提供します。

 

  • Carbon イベントモデルに対するサポートが TSM に組み込まれました (r. 2484817)。この機能のための新しい API は存在しません。すべて TSM によって処理されます。ただし、TSM API のクライアントは、「Inside Macintosh」で概説されている方法に従って既存のルーチンを呼び出す必要があります。

  • SetTSMCursor ルーチンは CarbonLib 1.1 では使用できません。代わりに、Carbon アプリケーションは新しい TSMSetInlineInputRegion を使用し、TSM は Carbon イベント経由でカーソルの設定を自動的に処理します (r. 2483971)。


ページの先頭に戻る



Thread Manager

Thread Manager はオペレーティングシステムの一部で、複数のアプリケーションプログラム内で使用するマルチプログラミングサービスを提供します。

  • Mac OS 9 では、あらかじめ割り当てられているスレッドプール内で割り当てられたスタックを含むスレッドに対して DisposeThread を呼び出すとき、アプリケーションはあらかじめ割り当てられているスレッドプールからスタックに割り当てられたメモリをリークしていました。これは、Thread Manager 内部で行われるスタックブロックの追跡に関連する問題です。この問題は Mac OS 9.1 で修正されました (r. 2410436)。

ページの先頭に戻る



Time Manager

Time Manager は、ミリ秒およびマイクロ秒単位でタイミングをとる機能を Mac OS ベースのコンピュータに提供します。

  • これまで、24 日を超える期間にわたって通常割り込みのスケジューリングに使用されるとき、Extended Time Manager にはタイミングのずれが発生していました。この条件は修正され、この方法で使用されるときにも Extended Time Manager のルーチンでは、ずれが発生しなくなりました (r. 2471974)。

ページの先頭に戻る



Unicode Text Utilities

Unicode Text Utilities は、Unicode テキストと共に動作する API のセットを提供します。これらの API は Unicode テキストのソートや照合を行うためのサービスを提供します。

  • Unicode テクニカルレポートに記載されているように、ソートを行ったときに数字は文字の前に配置されるようになりました (r. 2503166, 2503167)。

ページの先頭に戻る



vDSP 1.0

vDSP はベクタおよびスカラデジタル信号処理関数のグループで、サウンド、MP3、スピーチ、オーディオ、ビデオ、レーダーなどの分野で Velocity Engine を利用します。

  • 詳細については、まもなく公開される「vDSP SDK」を参照してください。関心のあるデベロッパは Velocity Engine の Web ページ (http://developer.apple.com/hardware/ve/index.html) にアクセスしてください。

ページの先頭に戻る



Virtual Memory Manager

Virtual Memory Manager は Mac OS に仮想メモリサービスを提供します。

  • 仮想ファイルマッピングがサポートされました。詳細については、まもなく公開されるテクニカルノートを参照してください。これらのルーチンに関連するマニュアルは、現在、FileMapping.h ヘッダファイルの中に記載されています。

  • MP タスクによって発生したページフォールトは、これまでよりもかなり短い待ち時間で処理されるようになりました。Mac OS 9.1 の場合、MP タスクによるページフォールトは、割り込みの待ち時間を使って処理されます。Mac OS 9.1 以前は、SystemTask が呼び出されるときに処理されていました。

  • マルチプロセッサシステム上で実行される MP タスクと仮想メモリページングオペレーションとの間のレース条件は削除されました。特に、ページアウトされるメモリページはディスクに書き込まれる前に論理メモリから分離されるようになり、ページインされるメモリページは論理メモリにマップされる前に有効な値を含むようになりました。


ページの先頭に戻る



Window Manager

Window Manager は、画面上にウインドウを描画したり、描画したウインドウを管理したりするための機能を提供します。

  • これまで、kWindowDragRgn セレクタが指定されているとき、GetWindowRegion は無効な領域を返すことがありました。この問題は修正されました (r. 2314117)。

  • メニューバーの背後にあるすべての領域を使って作成されたウインドウに対する DisposeWindow で発生することのあったメモリリークが修正されました (r. 2369718)。

  • これまで Window Manager の PowerPC バージョンの場合、Window Manager の 68K 実装とは異なり、CalcVis は不可視ウインドウの visRgn に空の領域を設定していませんでした。この問題は修正され、Window Manager の PowerPC バージョンも、不可視ウインドウの visRgn に空の領域を設定するようになりました (r. 2414578)。

  • アプリケーションがスワップされ、フローティングウインドウが Window Manager によって隠された後で、このアプリケーションがフローティングウインドウに対して HideWindow を呼び出すと、そのアプリケーションが次にフォアグラウンドにスワップされるときに、Window Manager はフローティングウインドウを再表示していました。この問題は修正され、アプリケーションがフォアグラウンドにスワップされても、フローティングウインドウは隠されたままになります (r. 2414728)。

  • CarbonLib ルーチンの MoveStructureWindow は、タイトルバーだけのウインドウに対してこれまで正しく動作していませんでした。この問題は修正されました (r. 2423024)。

  • ユーティリティウインドウのタイトルに使用されるフォントは、GetApplicationScript ルーチンを使って、smSystemScript 定数の代わりに使用するスクリプトを決定するようになりました (r. 2424745)。

  • これまで、IsWindowInStandardState は計算の実行中にウインドウのサイズをチェックしていませんでした。その結果、ZoomWindowIdeal ルーチンは、一部が画面の外に配置されているウインドウを対象に正しく動作しませんでした。この問題は修正されました (r. 2478760)。

  • StandardAlert は smSystemScript 定数を使って、そのウインドウ内のフォントを設定するために使用するスクリプトを選択していました。この動作は変更され、StandardAlert は smCurrentScript を使って、そのウインドウのテキストの表示に使用するフォントを検索するスクリプトを選択するようになりました。この変更に伴い、適切なランゲージキットをインストールした US システムで実行しているとき、ローカライズされたアプリケーションの StandardAlert ウインドウ内には対象となる言語のテキストが正しく表示されるようになりました (r. 2497250)。


ページの先頭に戻る




コントロールパネル

コントロールパネルはシステムのカスタム設定に使用するユーザインタフェース機能を提供します。

コントロールパネルに 'CODE' ID = 0 リソース (68K アプリ) が含まれているか、タイプが「アプリケーション」とマークされたフラグメント記述子を含む 'cfrg' リソースが含まれている場合、Process Manager はそのコントロールパネルをアプリケーションとして起動することを選択します。これらの条件を満たすコントロールパネルには、システムによって呼び出される 'cdev' リソースは含まれません。



重要:
コマンドキーと control キーを押しながらコントロールパネルのアイコンをダブルクリックして、Finder のパーティション内でコントロールパネルを起動することはできなくなりました (r. 2440800)。





アップルメニューオプション

「アップルメニューオプション」コントロールパネルは、アップルメニューのアピアランスと動作を設定するユーザインタフェース機能を提供します。

  • 「アップルメニューオプション」の初期設定ファイルが壊れるという問題が修正されました (r. 2528783)。

  • HFSPlus API を使ってオープンされるとき、「アップルメニューオプション」は書類を追跡するようになりました。また、HFSPlus API が使用されるとき、アップルメニューの階層に加えられた変更が追跡されるようになりました。

ページの先頭に戻る



日付 & 時刻

「日付 & 時刻」コントロールパネルは、システムクロックを設定したり、日付と時刻の表示形式を設定したりするユーザインタフェースを提供します。

  • これまで、30 分以上に及ぶスリープを解除した後で、AirMac 接続を介してクロックを同期させようとすると、Time Synchronizer がハングしてしまうという問題がありました。この問題は修正されました (r. 2497293)。

ページの先頭に戻る



機能拡張マネージャ

「機能拡張マネージャ」コントロールパネルは、機能拡張に対する説明情報を表示したり、関連する機能拡張をセットとしてグループ化したりするための拡張されたユーザインタフェースを提供します。

  • 「Shareway IP」は「Mac OS 9.1 すべて」セットの一部としてリストされなくなりました (r. 2509513)。

ページの先頭に戻る



File Exchange 3.0.4

File Exchange は、ファイル名拡張子を自動的に Mac OS のファイルタイプにマップする機能 (たとえば、ファイル名拡張子「.TXT」は Mac OS のファイルタイプ「TEXT」にマップされます) や、Mac OS 以外のファイルシステムのために作成されたボリュームを使用する機能を提供します。「File Exchange」コントロールパネルを使用すると、ユーザは、この機能で使用される設定の変更、新しいファイルマッピングの追加、DOS の SCSI ディスクおよびドライブコンテナのマウント、ファイル変換初期設定の変更などの操作を行えるようになります。File Exchange のこのバージョンには、次の新機能が追加されています。

  • 「PC SCSI ディスク:起動時にマウント」チェックボックスはデフォルトの設定で切になりました。これにより、起動時間が 1.5 秒から 2 秒短縮されます。

  • これまで、複数の ISO 9660 ディスクを使って作業しているときに、「ディスクを挿入してください」メッセージが頻繁に表示されていました。このメッセージが表示される理由が再検討されて変更されたため、表示回数が少なくなりました (r. 2431666)。

  • これまで、ディスクと同じ名前のフォルダを含む PC DOS フォーマットのボリュームは正しくコピーされませんでした。今後は正しくコピーされます (r. 2475510)。

  • 一部の PC フォーマットのフロッピーディスクを USB ドライブでマウントしようとするときにシステムがハングするという問題が修正されました (r. 2418015)。

  • DOS フォーマットの USB ハードディスクを使用しているとき、ファイルのコピー操作が最後の段階で失敗したり、非常に遅くなったりするという問題が修正されました (rr. 2333267, 2348961)。

  • File Exchange には、システム起動時にスペースを割り当てる 'sysz' リソースが含まれていませんでしたが、今回のバージョンで追加されました (r. 2373137)。

  • これまで、File Exchange は複数の USB MS−DOS フォーマットドライブを正しく管理できませんでした。今後は適切に管理できます (r. 2388092)。

  • 256 のターゲットデバイスをサポートする SCSI バスがインストールされている場合、Mac OS 9 のシステム起動時に File Exchange がハングするという問題が修正されました (r. 2418923)。


ページの先頭に戻る



ファイル共有

「ファイル共有」コントロールパネルを使用すると、エンドユーザは使用中のコンピュータでのファイル共有サービスを設定できるようになります。

  • ファイル共有が開始されているときの PBGetCatInfo のパフォーマンスが向上しました (r. 2532597)。

  • これまで、ボリューム上の空き領域の容量が 4GB の倍数をちょうど超えるとき、File Manager へのファイル共有のパッチがローカルボリューム上でのファイル操作に対してディスクフルエラー (dskFulErr) をレポートすることがありました。この問題は修正されました (r. 2536169)。

  • 新しい HFS+ ルーチンの FSCreateFileUnicode は、ファイル共有が開始されているとき、kFSCatInfoFinderInfo を設定していませんでした。今後は正しく設定するようになりました (r. 2464870)。

  • IP 経由のファイル共有に関連した潜在的な安定性の問題が修正されました (rr. 2488036, 2507440)。


ページの先頭に戻る



ファイル・シンクロナイズ 1.2

「ファイル・シンクロナイズ」は、ディスク間、ボリューム間、フォルダ間などでファイルとフォルダのセットを同期させるためのコントロールパネルです

  • メモリ不足の警告が表示され、その後クラッシュするという問題が修正されました (r. 2245430)。

  • カスタムアイコンを使用したフォルダの同期によりメモリ不足のエラーが発生し、結果的にクラッシュに至るという問題が解決されました (r. 2245430)。

ページの先頭に戻る



一般設定 8.0

「一般設定」コントロールパネルには、挿入ポイントの点滅速度やメニューの点滅回数など、いくつかのシステム設定コマンドが含まれています。

  • 「一般設定」コントロールパネルのこのバージョンは、Mac OS および「マルチユーザ」とのよりよい統合を目的として書き換えられた PowerPC APPC です。

  • メニューの点滅回数と挿入ポイントの点滅速度は、これまでユーザがログインするときに必ずしも適切に設定されているわけではありませんでした。この問題は修正されました (r. 2462891)。

ページの先頭に戻る



インターネット

「インターネット」コントロールパネルは、複数の場所やユーザを処理するための切り替え可能な初期設定を含めて、Internet Config 初期設定の作成と編集に使用するグラフィカルユーザインタフェースを提供します。

  • ポップアップメニューを使ってデフォルトの Web ブラウザを切り替えると、http と http ヘルパーの両方が変更されるようになりました。これまでは http ヘルパーだけが変更されていました。また、デフォルトのニュースリーダを切り替えると、news ヘルパーだけでなく、nntp ヘルパーも変更されるようになりました (r. 2248373)。

  • パッケージとして配信されるヘルパーアプリケーションを選択できるようになりました (r. 2496506)。

ページの先頭に戻る



メモリ

「メモリ」コントロールパネルは、仮想メモリ、RAM ディスク、およびディスクキャッシュのサイズを設定するためのユーザインタフェースを提供します。

  • ディスクキャッシュサイズの最大値が 32,736K (32M - 32K) に増加しました。これまでは 8160K (8M - 32K) に制限されていました。この変更は、以前の 4KB というデフォルトアロケーションブロックサイズを使用して初期化した大容量の HFS Plus ボリューム (200GB 以上) で、サイズの大きなファイルを割り当てるときのパフォーマンスを向上させるために加えられました。

    大容量ボリュームの場合、ボリュームのアロケーションビットマップのサイズがディスクキャッシュのサイズよりも大きくなってしまうことがあり、その結果、1 つのファイルにスペースを割り当てるときにも、File Manager は膨大な量の I/O を実行することになります。ディスクキャッシュのサイズをビットマップのサイズを超える値に設定すると、ビットマップをキャッシュ内に格納することが可能になり、割り当てリクエストの速度が劇的に向上します。

    ボリュームが 4KB のアロケーションブロックを使用しているとき (これは、Mac OS 9.0.4 またはそれ以前で初期化した大容量ボリュームのデフォルトでした)、アロケーションビットマップのサイズは、ボリュームサイズ 1GB 当たり 32KB になります。Mac OS 9.1 で初期化した 220GB を超えるボリュームの場合、アロケーションブロックサイズのデフォルト値は 8KB で、ビットマップサイズのデフォルト値はボリュームサイズ 1GB 当たり 16KB になります。たとえば、200GB のボリュームを使用しているとき、ディスクキャッシュは 6400K を超えるサイズに設定してください。つまり、この値を超える次に大きな値は 6432K ということになります。Mac OS 9.0 で初期化した 400GB のボリュームを使用しているときは、パフォーマンスを向上させるためにディスクキャッシュのサイズを 12832K またはそれ以上に設定してください。

    なお、最大の互換性を得るため、デフォルトのディスクキャッシュサイズは常に 8MB (8192K) 未満に設定されます。

  • ディスクキャッシュサイズをバイト単位で返す gestaltDiskCacheSize ('dcsz') という新しい Gestalt セレクタが追加されました。

  • 上矢印または下矢印ボタンを押し続けると、ディスクキャッシュサイズをすばやく変更できるようになります。

  • 最大のディスクキャッシュサイズの計算値は、ROM-in-RAM、ビルトインビデオ、RAM ディスク、および OS によって必要とされる物理 RAM の容量を考慮して変更されます。このため、起動に必要な物理 RAM が十分でなくなるほど、ディスクキャッシュと RAM ディスク両方のサイズを大きく設定することはかなり難しくなります。仮想メモリを切にしているときよりも、入にしているときの方が最大サイズは大きくなります (仮想メモリが入になっていると、OS が使用する物理 RAM が少なくなるため)。論理 (仮想) RAM のサイズもディスクキャッシュの最大サイズに影響を与えます。一部のシステム構成では、VM を増加させると、最大のディスクキャッシュサイズも増加します。

  • RAM ディスクの設定が大きすぎてシステムを起動できない場合は、起動の初期に SysError が呼び出されます。このような状況は、RAM ディスクのために RAM を取り除いた後で、VM が入になっていると想定していたのに実際には切になっていた場合 (たとえば、shift キーを押しながら起動することで) や、ドライバが大量の物理 RAM を使用している場合などに発生します。この場合、RAM ディスクは切になり、強制的に再起動が行われます。

  • 「仮想メモリ」パネルに正しい空きディスク容量が表示されるようになりました。以前は最大の VM サイズが固定されていました。


ページの先頭に戻る



リモートアクセス

「リモートアクセス」コントロールパネルは、PPP および ARA 接続を設定するためのユーザインタフェース機能を提供します。

  • 「リモートアクセス」では Challenge-Handshake Authentication Protocol がサポートされました。これにより、リモート接続サービスが接続の確立中と接続の確立後の両方で PPP 接続を定期的に検証できるようになります (r. 2297793)。

  • PPPoE タイプの接続をよりよくサポートするため、PPP はその正しい MTU サイズを上位プロトコルレイヤにレポートするようになりました (r. 2483604)。

  • キーをあまりにも速く連続して入力した場合にクラッシュの原因になっていた、リモートアクセスダイアログの入力キー処理コードの問題が修正されました (r. 2536881)。

  • TCP/IP アプリケーションを起動したときに自動的に接続するためのオプションが入になっていて、同時に DialAssist も入になっている場合にモデムが自動的にダイアルを始めないという問題が修正されました (r. 2541002)。

  • アップグレードインストールを行った後で、「モデム」および「リモートアクセス」コントロールパネルがジェネリックアイコンに変わってしまうという問題が修正されました (r. 2532014)。

  • ARA が接続解除しているときにふたを閉じると、パワーブック PB101 がクラッシュするという問題が修正されました (r. 2385200)。

  • 10 桁電話番号を使用する地域で、DialAssist が前置番号の前に長距離電話アクセス番号をダイアルしてしまうという問題が修正されました (r. 2419739)。

  • 長い CCL スクリプトが正しく動作しないという問題が修正されました (r. 2458391)。

重要:
AppleScript の「リモートアクセス命令」は、リモートアクセス 4.0 と互換性がないため、Mac OS 9.1 と共にインストールされません。その結果、「リモートアクセス命令」は Mac OS 9.1 では使用できません。

「リモートアクセス命令」によって提供されているいずれかのコマンドを使用しているスクリプトは、代わりに「ネットワーク設定スクリプト」を使用して書き換えることをお勧めします。そのサンプルは、Web の http://www.apple.com/applescript からダウンロードでき