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



NW 45 - クライアント/サーバシステムをスリープ状態にする

(97 年 1 月 9 日)

Q: 現在、ファックスクライアント/サーバシステムを開発しているのですが、サーバをスリープ状態にした後で問題が発生します。スリープを解除するとき、サーバソフトウェアがネットワーク上で再登録を行うことができません (RegisterMyName を使って)。

クライアント側では、sleepDemand リクエストを受信したとき、ネットワークアクティビティがなくなるのを待って、制御をシステムに返します。クライアントでは、問題なくスリープの解除とサーバへの再接続を行うことができます。

この問題を解決するには、どのような対処を行えばいいのでしょうか。

A: 一般に、サーバの自動スリープ機能を無効にしたい場合は、AutoSleepControl(false) を使って Power Manager に通知を行います。そうでないと、クライアントはサーバがスリープ中であることを正しく認識できず、結果的に接続することができません。一方、自動スリープ機能をサポートしたい場合は、Power Manager の SleepQInstall を使ってスリーププロシージャをインストールする必要があります。

サーバが sleepRequest/SleepDemand をどのように処理すべきかについては、『Inside Macintosh: Devices』の 6-10 ページにある表 6-1 で詳しく説明されています。結局のところ、サーバをクローズしてネットワークから登録を解除し、その後、sleepWakeUp を受信したときに再オープンと再登録を行うことになります。

Q: スリーププロシージャをインストールしました。しかし、ユーザが“特別”メニューの“スリープ”を選択しても、Power Manager は sleepDemand を発行しません。AutoSleepControl(false)sleepRequest を無効にするはずですが、SleepDemand も無効にしてしまうのでしょうか。

A:Inside Macintosh: Devices』の 6-11 ページに書かれているように、アプリケーションは sleepDemand を拒否できません (また、そうすべきでもありません)。 sleepDemand を受け取るとき、スリーププロシージャでは、それが条件付きの sleepDemand であるか 無条件の sleepDemand であるかを判断できません。このため、sleepDemand を受け取ったとき、デバイスドライバとアプリケーションは、スリープ状態の準備を行い、制御を迅速に Power Manager に返す必要があります。

AutoSleepControl については、『Inside Macintosh: Devices』の 6-44 ページも参照してください。

enableSleepfalse が設定されていると、ユーザの操作 (たとえば、Finder の“特別”メニューから“スリープ”を選ぶなど) あるいはバッテリ不足による無条件の要求でないかぎり、コンピュータがスリープモードに入ることはありません。

--Vinnie Moscaritolo
devsupport@apple.com

[ Technical Q&A's : Communications & Collaboration : Networking : NW45 ]