以下、本発明の情報処理装置、情報処理装置の制御方法、制御プログラム及び記憶媒体の各実施の形態について、図面を参照しながら説明する。
(第1の実施の形態)
まず、本発明の第1の実施の形態を図1乃至図7に基づき説明する。
図1は、本発明の第1の実施の形態に係る情報処理装置の構成を示すブロック図であり、同図において、100は情報処理装置で、CPU(Central Processing Unit:中央演算処理装置)101、ノースブリッジ102、メインメモリ103、グラフィックコントローラ104、ディスプレイ105、サウスブリッジ106、ハードディスク装置107、CD(Compact Disk)/DVD(Digital Video Disk)ドライブ装置108、NIC(Network Interface Card)109、インタフェース制御部110、リムーバブルハードディスクスロット部111、BIOS(Basic Input Output Systems)−ROM(Read Only Memory)112、エンベデッドコントローラ(Embeded Controller:EC)113、キーボード114、排出スイッチ115、挿抜検知部116、モータ制御部117及びロック制御部118を有している。
CPU101は、情報処理装置100全体の制御を行うものである。ノースブリッジ102は、CPUローカルバス119、メモリバス120、AGP(Accelerated Graphics Port)バス121、PCI(Peripheral Component Interconnect)バス122を接続するためのブリッジである。メインメモリ103には、情報処理装置100を制御するための制御プログラム等が格納されており、この制御プログラムはCPU101により読み出されて実行されるものである。グラフィックコントローラ104は、ディスプレイ105の表示を制御するものである。ディスプレイ105は、情報を表示するものである。
サウスブリッジ106は、ATA(AT Attachment)バス123,124、PCIバス125、LPC(low Pin Count)バス126を接続するブリッジである。ハードディスク装置107は、CPU101により実行される各種のプログラム(オペレーティングシステム、デバイスドライバ、アプリケーションプログラム等)や、各種の管理情報を記憶するものである。このハードディスク装置107に記憶されたプログラムは、必要に応じてメインメモリ103に読み出される。CD/DVDドライブ装置108は、CD、或いはDVD等の記憶メディアにアクセスし、各種のプログラムや情報を情報処理装置100にインストール、或いはコピーするのに使用されるものである。
NIC109は、情報処理装置100をネットワーク(例えば、LAN「Local Area Network:域内通信網」)に接続するものである。インタフェース制御部110は、後述するリムーバブルハードディスク装置(記憶装置)128と各種のデータ通信を行うものである。NIC109とインタフェース制御部110は、PCIバス125に接続されている。リムーバブルハードディスクスロット部111は、リムーバブルハードディスク装置128が挿抜されるものであり、このリムーバブルハードディスク装置128は、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に挿入されることにより、ATAバス127に接続されるものである。
BIOS−ROM112は、情報処理装置100内の各種ハードウェアをアクセスするファンクション実行ルーチンを体系化したプログラムを記憶し、情報処理装置100の起動時に読み出されるものである。一般に、BIOSは、情報処理装置100内で不揮発性メモリ(フラッシュROM等)に記憶されている。
EC113は、キーボード114によるキー入力操作を制御すると共に、排出スイッチ115の押下の検知及び挿抜検知部116、モータ制御部117、ロック制御部118をも制御する。
即ち、リムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111への挿入を、EC113が挿抜検知部116経由で検知した場合、リムーバブルハードディスク装置128がATAバス127に接続されるように、EC113は、モータ制御部117に対して読み出しの指示を行い、その読み出しの終了を待って、ロック制御部118に対してリムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111へのメカニカルなロックを指示する。
また、排出スイッチ115の操作によるリムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111からの排出(抜出)時も、同様に、EC113は、ロック制御部118に対して前記ロックの解除を指示した後、モータ制御部117に排出の指示を行い、挿抜検知部116経由でリムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111からの排出処理の完了を検知する。
BIOS−ROM112とEC113は、LPCバス126に接続されている。
キーボード114は、各種の情報を入力するためのものである。排出スイッチ115は、リムーバブルハードディスク装置128をリムーバブルハードディスクスロット部111から排出する場合に操作するものである。
挿抜検知部116は、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に対して挿入されているか、排出されているかを検知するものである。モータ制御部117は、リムーバブルハードディスクスロット部111に対してリムーバブルハードディスク装置128を挿抜動作させるためのモータ(不図示)を制御するものである。ロック制御部118は、リムーバブルハードディスク装置128をリムーバブルハードディスクスロット部111に対してロックしたり、そのロックを解除したりするように制御するものである。
リムーバブルハードディスク装置128は、各種のデータを格納するもので、リムーバブルハードディスクスロット部111に挿入されることにより、ATAバス127と接続されて、インタフェース制御部110と各種のデータ通信を行うものである。
図2は、本実施の形態に係る情報処理装置100上で動作する主なソフトウエア・コンポーネントの概略構成を示す図である。
図2において、100は本実施の形態に係る情報処理装置、128はリムーバブルハードディスク装置である。情報処理装置100の内部には、BIOS200、挿抜制御ドライバ201、OS(オペレーティングシステム)202及びユーティリティ・プログラム(アクセス禁止手段、認証情報供給手段、通知手段、)203が備えられている。
BIOS200は、リムーバブルハードディスク装置128の着脱を検知するための着脱制御ドライバ201とリムーバブルハードディスク装置128との間のコマンドの受け渡し、また、その応答の返送を行い、また、OS202に対してPnPイベントを通知する等の制御を行う。
着脱制御ドライバ201は、リムーバブルハードディスクスロット部111に対するリムーバブルハードディスク装置128の着脱(挿抜)状態を認識すると、BIOS200に対してコマンドの発行や、その結果の取得を依頼する等の制御を行う。
OS202は、BIOS200からリムーバブルハードディスク装置128を含む各種デバイスの情報処理装置本体に対する着脱状態を示す信号を受信すると、その状態に応じて、自身の初期化や着脱制御ドライバ201の読み出し等の制御を行う。
ユーティリティ203は、着脱制御ドライバ201の要求に応じて、ディスプレイ105(図1参照)にパスワード入力画面を表示し、ユーザに対してパスワードの入力を促し、ユーザによって入力されたパスワードを着脱制御ドライバ201に対して供給する等の制御を行う。
図3は、本実施の形態に係る情報処理装置100におけるリムーバブルハードディスク装置128における記憶媒体上のデータレイアウトと、リムーバブルハードディスク装置128と情報処理装置100との論理的な接続関係を示すブロック図である。
図3において、100は本実施の形態に係る情報処理装置、128はリムーバブルハードディスク装置である。リムーバブルハードディスク装置128と情報処理装置100との間は、ATAバス127(図1参照)を介して、論理的に3つの経路314,315,316により接続されている。
リムーバブルハードディスク装置128は、記憶媒体301、フラッシュ(FLASH)メモリ302、RAM(Random Access Memory)303、論理スイッチ310,311,312,313を有している。
記憶媒体301は、ユーザデータ領域304及びリスト領域(所定領域)305の2つの領域を有している。ユーザデータ領域304は、ユーザデータを記憶する領域であって、通常パソコン(パーソナルコンピュータ)等によってディスク装置に保存されるデータは、このユーザデータ領域304に記憶される。リスト領域305は、ユーザデータ領域304とは別に設けられた領域であって、例えば、リムーバブルハードディスク装置128のタイトル情報や所有者情報等、情報処理装置100のオペレーティングシステム(OS)やユーザデータ領域304のフォーマットに依存しない情報を記憶する。情報処理装置100からリスト領域305へのアクセスには、後述する専用のATAコマンドを使用する。
フラッシュメモリ302上には管理領域306が設けられている。この管理領域306は、リムーバブルハードディスク装置128自体の動作を制御するための情報を記憶する領域であって、ATAパスワード307と、アクセスコントロール設定情報308とを記憶する。
ATAパスワード307は、RAM303上に設けられたアクセスコントロール設定レジスタ309とユーザデータ領域304へのアクセスを制限するためのパスワードであって、情報処理装置100より入力されたパスワードと、ATAパスワード307に記憶されているパスワードとが一致した場合にのみ、アクセスコントロール設定レジスタ309とユーザデータ領域304へのアクセスが可能となるように制御される。
アクセスコントロール設定情報308は、ユーザデータ領域304及びリスト領域305へのアクセスを制限するための情報であって、情報処理装置100からアクセスコントロール設定情報308へのアクセスは、アクセスコントロール設定レジスタ309を介して行う。アクセスコントロール設定レジスタ309へのアクセスには、後述する専用のATAコマンドを使用する。情報処理装置100から、ユーザデータ領域304及びリスト領域305へのアクセスの可否は、アクセスコントロール設定レジスタ309の情報を基に制御される。論理スイッチ310、311、312、313は、経路314、315、316のアクセス制御を、スイッチの形で模式的に表したものである。
なお、本実施の形態における説明では、管理領域306がフラッシュメモリ302に設けられている場合を例示したが、この管理領域306は、記憶媒体301に設けても良い。
次に、アクセスコントロール設定情報308と、アクセスコントロール設定レジスタ309について説明する。
上述したように、アクセスコントロール設定レジスタ309は、情報処理装置100からアクセスコントロール設定情報308へのアクセスを行うためのレジスタであり、アクセスコントロール設定情報308とアクセスコントロール設定レジスタ309のデータフォーマットは、互いに同一となる。
図4は、これらのデータフォーマットの構成を示す図である。
図4において、bit6「User Data Write」は、情報処理装置100からユーザデータ領域304へのデータ書き込みを制限するための情報であって、その値が0(Disable)の場合は書き込み不可であることを、また、その値が1(Enable)の場合は書き込み可能であることを、それぞれ表す。
図4において、bit5「User Data Read」は、ユーザデータ領域304からのデータ読み出しを制限するための情報であって、その値が0(Disable)の場合は読み出し不可であることを、また、その値が1(Enable)の場合は読み出し可能であることを、それぞれ表す。
図4において、bit4「List Data Write」は、リスト領域305へのデータ書き込みを制限するための情報であって、その値が0(Disable)の場合は書き込み不可であることを、また、その値が1(Enable)の場合は書き込み可能であることを、それぞれ表す。
図4において、bit3「List Data Read」は、リスト領域305からのデータ読み出しを制限するための情報であって、その値が0(Disable)の場合は読み出し不可であることを、また、その値が1(Enable)の場合は読み出し可能であることを、それぞれ表す。
図4において、bit2「Initial Control」は、電源投入時並びにハードウェアリセット時において、アクセスコントロール設定情報308をアクセスコントロール設定レジスタ309にコピーする際に、上述したbit3〜6の情報に対して制限を設けるための情報であって、その値が0(Disable)の場合は、アクセスコントロール設定情報308のbit3〜6に記憶された値が0または1の何れであっても、アクセスコントロール設定レジスタ309には0をコピーすることを表す。また、bit2の値が1(Hold)の場合は、アクセスコントロール設定情報308のbit3〜6に記憶された値をそのままアクセスコントロール設定レジスタ309にコピーすることを表す。
図4において、bit1「Utility 1」と、bit0「Utility 0」は、情報処理装置100が利用するための情報を記憶しておくためのフラグであって、例えば、リムーバブルハードディスク装置128が起動ドライブである場合に、bit1「Utility 1」を1に設定する等といったように、情報処理装置100によって自由に利用されることを想定している。このbit1、bit0は、リムーバブルハードディスク装置128自体の動作に影響を与えるのもではなく、情報処理装置100によって利用されるものである。
次に、アクセスコンロトール設定レジスタ309及びリスト領域305にアクセスするための専用ATAコマンドについて、図5を用いて説明する。
図5(A)は、情報処理装置100からリムーバブルハードディスク装置128への専用ATAコマンド(コマンド)を、図5(B)は、リムーバブルハードディスク装置128から情報処理装置100への専用ATAコマンド(ステータス)を、それぞれ示す。
専用ATAコマンドは、アクセスコントロール設定レジスタ309に値を書き込むための「Set Access Control」、アクセスコントロール設定レジスタ309の値を読み出すための「Read Access Control」、リスト領域305にデータを書き込むための「Put List Data」、リスト領域305のデータを読み出すための「Get List Data」の4つである。
図5では、「Set Access Controlコマンド」のプロトコルは、PIOデータアウト(PO)であり、ATAレジスタのCommandレジスタにFFh、Featuresレジスタに03h、Sector Countレジスタにアクセスコントロール設定値をセットすることを表している。
また、データアウトフェーズでは、パスワードを送信することを表している。
「Read Access Controlコマンド」のプロトコルは、PIOデータアウト(PO)であり、ATAレジスタのCommandレジスタにFFh、Featuresレジスタに03hをセットすることを表している。また、データアウトフェーズでは、パスワードを送信することを表している。また、コマンドに対するステータスとして、Sector Countレジスタに、読み出されたアクセスコントロール設定値をセットすることを表している。
「Put List Dataコマンド」のプロトコルは、PIOデータアウト(PO)であり、ATAレジスタのCommandレジスタにFFh、Featuresレジスタに05h、Sector Countに書き込むデータのセクタ数、Sector Number、Cylinder High、Cylinder Lowレジスタにリスト領域305内の書き込み先の先頭アドレスをセットすることを表している。また、データアウトフェーズでは、リスト領域305に書き込むデータを送信することを表している。また、コマンドに対するステータスとして、Sector Countには実際に書き込んだセクタ数、Sector Number、Cylinder High、Cylinder Lowレジスタにはリスト領域305内にデータを書き込んだ最終アドレスをセットすることを表している。
「Get List Dataコマンド」のプロトコルは、PIOデータイン(PI)であり、ATAレジスタのCommandレジスタにFFh、Featuresレジスタに06h、Sector Countに読み出すデータのセクタ数、Sector Number、Cylinder High、Cylinder Lowレジスタにリスト領域305内の読み出し先の先頭アドレスをセットすることを表している。また、コマンドに対するステータスとして、Sector Countには実際に読み出したセクタ数、Sector Number、Cylinder High、Cylinder Lowレジスタにはリスト領域305内からデータを読み出した最終アドレスをセットすることを表している。また、データインフェーズでは、リスト領域305から読み出されたデータを送信することを表している。
次に、本実施の形態に係る情報処理装置100において、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に挿入されてから、OS202へ通知されるまでの手順について、図1及び図6を用いて説明する。
図6は、本実施の形態に係る情報処理装置100において、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に挿入されてから、OS202へ通知されるまでの手順について、各種のプログラム間における処理を示すブロック図である。
なお、図6は、その左側から右側に向かって時系列順に記述されている。
リムーバブルハードディスク装置128が情報処理装置100のリムーバブルハードディスクスロット部111に挿入された場合、挿抜検知部116は、その旨をEC113へ通知する。EC113は、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111へ挿入されたことをBIOS200へ通知する(ステップS601)。
リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に挿入されたことを通知する信号を受信したBIOS200は、リムーバブルハードディスク装置128をインタフェース制御部110へ接続するために、リムーバブルハードディスクスロット部111に挿入されたリムーバブルハードディスク装置128の読み出し(ローディング)処理を行うようにEC113に指示する(ステップS602)。BIOS200からのローディング処理の指示を受信したEC113は、モータ制御部117を動作させ、リムーバブルハードディスク装置128のローディング処理を実行する。
次に、BIOS200は、ローディング処理の終了を待って、リムーバブルハードディスクスロット部111からのリムーバブルハードディスク装置128の不用意な抜出が行われないようにするために、ローディング処理されたリムーバブルハードディスク装置128のメカニカルなロック処理を行うようにEC113に指示する(ステップS603)。BIOS200からのメカニカルなロック処理の指示を受信したEC113は、ロック制御部118を動作させ、リムーバブルハードディスク装置128のメカニカルなロック処理を行う。
なお、ローディング処理及びメカニカルなロック処理の終了の検知、或いはエラー終了の検知は、BIOS200が定期的にEC113に問い合わせしても良いし、時間及びその他のセンサー等から判断しても良い。また、前記ステップS602におけるローディング処理の指示及び前記ステップS603におけるメカニカルなロック処理の指示を、一度の指示にて行うようにしても良い。
次に、BIOS200は、メカニカルなロック処理の終了後、リムーバブルハードディスク装置128のインタフェース制御部110への接続を、リムーバブルハードディスク装置128の挿抜の制御を行う挿抜制御ドライバ201へ通知する(ステップS604)。
リムーバブルハードディスク装置128のインタフェース制御部110への接続通知を受信した挿抜制御ドライバ201は、インタフェース制御部110に接続されたリムーバブルハードディスク装置128の状態確認をBIOS200に対して指示する(ステップS605)。
リムーバブルハードディスク装置128の状態確認指示を示す信号を受信したBIOS200は、挿抜制御ドライバ201からの指示に従って、リムーバブルハードディスク装置128の状態確認を行う(ステップS606)。具体的には、インタフェース制御部110及びATAバス127を通じてIdentify Deviceコマンド(コード:ECh)をリムーバブルハードディスク装置128に送信し、その応答により、リムーバブルハードディスク装置128の状態を知ることができる。
なお、Identify Deviceコマンドは、ATA規格で規定されているコマンドである。
Identify Deviceコマンドを受信したリムーバブルハードディスク装置128は、その応答として自己の状態及び性能等の情報をATAバス127及びインタフェース制御部110を通じてBIOS200へ送信する。その返信される情報のワードにリムーバブルハードディスク装置128のセキュリティ機能の情報がセットされており、ビット2の値により、そのリムーバブルハードディスク装置128がパスワードロックされているか否かを表している。即ち、リムーバブルハードディスク装置128の状態として、パスワードロックされているか否かの情報がBIOS200へ返信される(ステップS607)。
Identify Deviceコマンドに対する応答を受信したBIOS200は、その応答を挿抜制御ドライバ201へ通知することにより、リムーバブルハードディスク装置128の状態、即ち、パスワードロックされているか否か等の情報を挿抜制御ドライバ201へ通知する(ステップS608)。
BIOS200からリムーバブルハードディスク装置128の状態、即ち、パスワードロックされているか否か等の情報を受信した挿抜制御ドライバ201は、リムーバブルハードディスク装置128がパスワードロックされているか否かの判断を行う。そして、パスワードロックされていると判断された場合は、ユーティリティ・プログラム203へパスワードの要求を行う(ステップS609)。
挿抜制御ドライバ201からパスワードの要求を受信したユーティリティ203は、ユーザに対してパスワードの入力画面をディスプレイ105に表示する。また、ユーザによってキーボード114を使用して入力されたパスワードを、挿抜制御ドライバ201へ通知する(ステップS610)。
ユーティリティ・プログラム203からのパスワードの通知を受信した挿抜制御ドライバ201は、そのパスワードを用いて、リムーバブルハードディスク装置128のパスワードロックの解除をBIOS200に対して指示する(ステップS611)。
リムーバブルハードディスク装置128に対するパスワードロックの解除指示を示す信号を受信したBIOS200は、挿抜制御ドライバ201から受信したパスワードを用いて、リムーバブルハードディスク装置128のパスワードロックの解除を行う(ステップS612)。具体的には、インタフェース制御部110及びATAバス127を通じてSecurity Unlockコマンド(コード:F2h)に受信したパスワードをセットして、リムーバブルハードディスク装置128に送信する。
なお、Security Unlockコマンドは、ATA規格で規定されているコマンドである。
Security Unlockコマンドを受信したリムーバブルハードディスク装置128は、コマンドにセットされているパスワードが、リムーバブルハードディスク装置128内に記憶されているパスワードロックを解除するパスワードと一致するか否かの判断を行う。そして、コマンドにセットされているパスワードが、リムーバブルハードディスク装置128内に記憶されているパスワードロックを解除するパスワードと一致したと判断された場合は、リムーバブルハードディスク装置128のパスワードロックを解除し、その旨をBIOS200へ返信する(ステップS613)。また、コマンドにセットされているパスワードが、リムーバブルハードディスク装置128内に記憶されているパスワードロックを解除するパスワードと一致しないと判断された場合は、その旨を示す信号をBIOS200へ返信する。
Security Unlockコマンドに対する応答を受信したBIOS200は、リムーバブルハードディスク装置128のパスワードロックの解除が成功したか否かを挿抜制御ドライバ201へ通知する(ステップS614)。
リムーバブルハードディスク装置128のパスワードロックの解除が成功したことを示す信号を受信した挿抜制御ドライバ201は、OS202に対して、リムーバブルハードディスク装置128がリムーバブルスハードディスクロット部111に挿入され且つATAバス127を通じてインタフェース制御部110に接続されたこと、即ち、プラグイン(Plug in)されたことを通知するように、BIOS200に指示する(ステップS615)。
OS202に対して、リムーバブルハードディスク装置128がプラグインされたことを通知するように指示されたBIOS200は、その旨を、OS202に通知する(ステップS616)。そして、リムーバブルハードディスク装置128がプラグインされたことを通知されたOS202は、プラグアンドプレイ(Plug and Play)に必要な処理を行う。その結果、OS202上で動作する各種アプリケーションから、リムーバブルハードディスク装置128内の記憶領域に対してアクセス可能となる。
なお、挿抜制御ドライバ201は、前記ステップS615において、パスワードロックの解除が成功しなかったことを示す信号を受信した場合、その旨をユーティリティ203に表示するように依頼し、ATA規格の許される限りの範囲で、前記ステップS609へ戻り、繰り返し処理を行うことによって、リムーバブルハードディスク装置128に対してパスワードのロック状態の解除が試行される。
また、前記ステップS609において、リムーバブルハードディスク装置128がパスワードロックされていないと判断された場合、ユーティリティ203へのパスワードのリクエストを行わず、以降のステップS610からステップS614までを省略し、挿抜制御ドライバ201は、OS202に対して、リムーバブルハードディスク装置128が、リムーバブルハードディスクスロット部111に挿入され、ATAバス127を通じてインタフェース制御部110に接続されたこと、即ち、プラグインされたことを通知するように、BIOS200に指示した後、ステップS616へ移行する。
次に、本実施の形態に係る情報処理装置100において、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に挿入されてからOS202に通知されるまでのCPU101における処理手順について、図1及び図7を用いて説明する。
図7は、本実施の形態に係る情報処理装置100において、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に挿入されてからOS202に通知されるまでのCPU101における処理手順を示すフローチャートである。
なお、リムーバブルハードディスク装置128が情報処理装置100のリムーバブルハードディスクスロット部111に挿入された場合、挿抜検知部116は、その旨をEC113へ通知し、更に、EC113がBIOS200へ通知することにより、リムーバブルハードディスク装置128が情報処理装置100のリムーバブルハードディスクスロット部111に挿入されたことが検知される。
リムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111への挿入を検知したBIOS200は、リムーバブルハードディスク装置128のローディング処理を行う(ステップS701)。即ち、BIOS200は、リムーバブルハードディスク装置128をインタフェース制御部110へ接続するために、リムーバブルハードディスクスロット部111へ挿入されたリムーバブルハードディスク装置128のローディング処理を行うようにEC113へ指示する。ローディング処理の指示を示す信号を受信したEC113は、モータ制御部117を動作させ、リムーバブルハードディスク装置128のローディング処理を行う。
次に、BIOS200は、ローディング処理の終了を待って、リムーバブルハードディスクスロット部111からのリムーバブルハードディスク装置128の不用意な抜出が行われないようにするために、リムーバブルハードディスク装置128のメカニカルなロック処理を行う(ステップS702)。即ち、BIOS200は、ローディング処理されたリムーバブルハードディスク装置128のメカニカルなロック処理を行うようにEC113へ指示する。メカニカルなロック処理の指示を示す信号を受信したEC113は、ロック制御部118を動作させ、リムーバブルハードディスク装置128のメカニカルなロック処理を行う。
次に、BIOS200は、メカニカルなロック処理の終了後、リムーバブルハードディスク装置128のインタフェース制御部110への接続を挿抜制御ドライバ201へ通知する(ステップS703)。
リムーバブルハードディスク装置128のインタフェース制御部110への接続通知を示す信号を受信した挿抜制御ドライバ201は、接続されたリムーバブルハードディスク装置128の状態確認を行う(ステップS704)。即ち、挿抜制御ドライバ201は、BIOS200に対して状態確認を指示し、BIOS200は、リムーバブルハードディスク装置128の状態確認を行う。具体的には、インタフェース制御部110及びATAバス127を通じてIdentify Deviceコマンド(コード:ECh)をリムーバブルハードディスク装置128に送信し、その応答によりリムーバブルハードディスク装置128の状態を知ることができる。
Identify Deviceコマンドを受信したリムーバブルハードディスク装置128は、その応答として自己の状態及び性能等の情報をATAバス127及びインタフェース制御部110を通じてBIOS200へ送信する。その返信される情報のワードにリムーバブルハードディスク装置128のセキュリティ機能の情報がセットされており、ビット2の値により、そのリムーバブルハードディスク装置128がパスワードロックされているか否かを判断することが可能である。即ち、リムーバブルハードディスク装置128の状態として、パスワードロックされているか否かを示す信号がBIOS200へ返信され、BIOS200は、その応答を挿抜制御ドライバ201へ通知することにより、リムーバブルハードディスク装置128の状態、即ち、パスワードロックされているか否かを挿抜制御ドライバ201へ通知する。
BIOS200からリムーバブルハードディスク装置128の状態、即ち、パスワードロックされているか否か等の情報を受信した挿抜制御ドライバ201は、リムーバブルハードディスク装置128がパスワードロックされているか否かの判断を行う(ステップS705)。そして、リムーバブルハードディスク装置128がパスワードロックされていると判断された場合はステップS706へ、また、パスワードロックされていないと判断された場合はステップS708へ、それぞれ移行する。
ステップS706では、リムーバブルハードディスク装置128に対してパスワードロックの解除処理を行う。即ち、ユーティリティ203へパスワードのリクエストを行い、ユーティリティ203は、ユーザに対してパスワードの入力画面をディスプレイ105に表示してパスワードの入力を促す。そして、ユーザにより入力されたパスワードは、挿抜制御ドライバ201へ通知され、そのパスワードを使用して挿抜制御ドライバ201は、BIOS200経由でリムーバブルハードディスク装置128のパスワードロックの解除を行う。具体的には、インタフェース制御部110及びATAバス127を通じて、Security Unlockコマンド(コード:F2h)に受信したパスワードをセットして、リムーバブルハードディスク装置128に送信する。
Security Unlockコマンドを受信したリムーバブルハードディスク装置128は、そのコマンドにセットされているパスワードが、リムーバブルハードディスク装置128内に記憶されているパスワードロックを解除するパスワードと一致するか否かの判断を行う。そして、コマンドにセットされているパスワードが、リムーバブルハードディスク装置128内に記憶されているパスワードロックを解除するパスワードと一致すると判断された場合は、リムーバブルハードディスク装置128のパスワードロックを解除し、その旨をBIOS200経由で挿抜制御ドライバ201へ通知する。
なお、パスワードロックの解除が成功しなかった場合、その旨をユーティリティ・プログラム203に表示するように依頼し、ATA規格の許される限り、繰り返しユーザによるパスワード入力及び当該入力されたパスワードを用いたパスワードロックの解除の試行が行われる。
次に、前記ステップS706におけるパスワードロック解除処理の結果、リムーバブルハードディスク装置128のパスワードロックの解除が成功したか否かを判断する(ステップS707)。即ち、ATA規格にて許される回数内の試行でパスワードロックの解除が成功したか否かを判断する。そして、パスワードロックの解除が成功したと判断された場合はステップS708へ、また、パスワードロックの解除が成功しなかったと判断された場合はステップS709へ、それぞれ移行する。
ステップS708では、OS202に対してリムーバブルハードディスク装置128がプラグインされたことを通知する。即ち、挿抜制御ドライバ201は、リムーバブルハードディスク装置128が、リムーバブルハードディスクスロット部111に挿入され、ATAバス127を通じてインタフェース制御部110に接続されたこと、即ち、プラグインされたことをOS202に通知するように、BIOS200に指示する。BIOS200は、挿抜制御ドライバ201からの指示に従って、その旨をOS202に通知する。その後、BIOS200からの通知を受けたOS202は、プラグアンドプレイに必要な処理を行う。その結果、OS202上で動作する各種アプリケーションから、リムーバブルハードディスク装置128内の記憶領域に対してアクセス可能となる。
また、ステップS709では、ATA規格にて許される回数内の試行でパスワードロックの解除が成功せず、リムーバブルハードディスク装置128がOS202上で動作する各種アプリケーションから使用可能にならない旨をユーティリティ・プログラム203に表示させ、エラー処理を行う。また、必要であるならば、ロック制御部118を動作させて、メカニカルなロックの解除を行い、モータ制御部117を動作させて、リムーバブルハードディスク装置1をリムーバブルハードディスクスロット部111から抜出させても良い。
前記ステップS708、ステップS709の処理が終了後は、いずれも本処理動作を終了する。
以上説明したように、本実施の形態では、リムーバブルハードディスク装置128がプラグインされた旨をOS202へ通知する前に、リムーバブルハードディスク装置128を確実にインタフェース制御部110へ接続できるようにローディングし、メカニカルなロックを行う。更に、セキュリティ機能によりパスワードロックされていれば、その解除を行った後に、OS202へプラグインされたことを通知することにより、OS202からのプラグイン処理をより安全に行える情報処理装置100を提供することができる。
なお、本実施の形態では、セキュリティ機能を有するリムーバブルハードディスク装置128を例にして説明したが、予めセキュリティ機能を有さないと判明している可搬型記憶媒体であるならば、セキュリティ機能の確認及びパスワードロックの解除に関する処理を省略しても良い。
また、リムーバブルハードディスク装置128に対してメカニカルなロック機能を有さない情報処理装置或いはリムーバブルハードディスク装置128のローディング機能を有さない情報処理装置であるならば、それらの処理を省略しても良い。
また、情報処理装置100に接続する記憶装置として、リムーバブルハードディスク装置128を例示したが、本発明は、リムーバブルハードディスク装置以外の記憶装置を情報処理装置100に接続するようにしても良い。
(第2の実施の形態)
次に、本発明の第2の実施の形態について、図8乃至図10に基づき説明する。
なお、本実施の形態に係る情報処理装置の基本的な構成は、上述した第1の実施の形態の図1と同一であるから、同図を流用して説明する。また、本実施の形態に係る情報処理装置とリムーバブルハードディスク装置との論理的な接続関係は、上述した第1の実施の形態の図3と同一であるから、同図を流用して説明する。
本実施の形態では、情報処理装置100にリムーバブルハードディスク装置128が接続された後、OS202以外のプログラム(本実施の形態におけるユーティリティ・プログラム203)がBIOS200を介して、リムーバブルハードディスク装置128のリスト領域(所定領域)305から所定情報を読み出し、当該読み出し後にリスト領域305のアクセスを禁止し、その後、OS202に対してリムーバブルハードディスク装置128の接続を通知するようにしたものである。従って、ユーティリティ・プログラム203は、アクセス禁止手段及び通知手段を構成する。
本実施の形態では、所定情報は、リムーバブルハードディスク装置128へのアクセスを許可する認証情報として説明する。
OS202が接続されたリムーバブルハードディスク装置128を認識する前に、該リムーバブルハードディスク装置128から認証情報を読み出して、該リムーバブルハードディスク装置128にアクセスする際のユーザ認証を司る認証制御コンポーネントに供給する。
図8は、本実施の形態に係る情報処理装置100上で動作するソフトウエア・コンポーネントの構成例を示す図であり、同図において、上述した第1の実施の形態の図2と同一部分には、同一符号が付してある。
図8において図2と異なる点は、図2の構成に、アプリケーション(ソフトウエア・コンポーネント)801及びアクセス制御ドライバ802を付加したことである。
アプリケーション801は、リムーバブルハードディスク装置128に記憶されている情報をローカルユーザ、または、リモートユーザにアクセスさせるためのソフトウェア・コンポーネントである。また、アクセス制御ドライバ802は、ユーザからのリムーバブルハードディスク装置128へのアクセス要求に介在し、ユーティリティ・プログラム203と連携して当該アクセス要求の正当性を判断し、それが正当であると判断した場合に、当該アクセス要求に対して許可を与えるソフトウェア・コンポーネントである。
ユーティリティ・プログラム203は、挿抜制御ドライバ201を介してBIOS200と通信し、リムーバブルハードディスク装置128が情報処理装置100に接続されたことを検出する処理、リムーバブルハードディスク装置128にディスクコマンドを発行して所望の制御を実行する処理及びリムーバブルハードディスク装置128が情報処理装置100に接続されたことをOS202に対して通知する処理を、それぞれ行う。
また、ユーティリティ・プログラム203は、情報処理装置100に接続されたリムーバブルハードディスク装置128のリスト領域305からアクセス許可リストを読み出す。そして、該アクセス許可リストに記録されている認証情報をリムーバブルハードディスク装置128へのアクセスの際の認証処理を司る認証制御コンポーネントに供給し、リムーバブルハードディスク装置128へアクセスする際の認証情報として利用できるようにする。これにより、リムーバブルハードディスク装置128に格納された当該リムーバブルハードディスク装置128固有の認証情報を、接続先の情報処理装置100に反映させることができる。
図9は、本実施の形態におけるアクセス許可リストのデータフォーマットの構成を示す図であり、同図に示すように、ユーザID901、パスワード902、フォルダ情報903及びアクセス権904が関連付けられて記憶されている。ここで、フォルダ情報903は、フォルダ単位でアクセス権904を設定する場合に用いる。
ここで、ユーティリティ・プログラム203とアクセス制御ドライバ802とによるリムーバブルハードディスク装置128へのアクセス要求の正当性判断の手順を説明する。
まず、ユーティリティ・プログラム203は、現在接続されているリムーバブルハードディスク装置128へアクセスするための許可を与えるユーザのユーザID(識別子)とパスワードの組からなる情報(以下、アクセス許可リストと記述する)を保持している。このアクセス許可リストは、リムーバブルハードディスク装置128のリスト領域305に格納されている。
アクセス制御ドライバ802は、リムーバブルハードディスク装置128へのアクセス要求を検知すると、当該アクセス要求を一時留め置き、アクセス要求があった旨をユーティリティ・プログラム203へ通知する。
ユーティリティ・プログラム203は、当該通知に応じてユーザIDとパスワードを要求するための画面をディスプレイ105に表示する。
キーボード114からユーザIDとパスワードが入力されると、予め保持しているアクセス情報に設定されているユーザIDとパスワードの組のいずれかと一致するか否かを判断し、その判断結果をアクセス制御ドライバ802に通知する。
アクセス制御ドライバ802は、通知された判断結果が肯定であれば、一時留め置いたアクセス要求を下位レイヤのソフトウエア・コンポーネント(不図示)に渡すことでアクセスを許可する。また、通知された判断結果が否定であれば、一時留め置いたアクセス要求を下位レイヤのソフトウエア・コンポーネントに渡すことなく、キャンセルすることでアクセスを禁止する。
以上のような手順により、リムーバブルハードディスク装置128へのアクセス要求の正当性が判断される。
次に、リムーバブルハードディスク装置128が情報処理装置100に接続された場合のユーティリティ・プログラム203の動作を、図10に基づき説明する。
図10は、本実施の形態に係る情報処理装置100にリムーバブルハードディスク装置128が接続された場合のユーティリティ・プログラム203の動作の流れを示すフローチャートである。
ユーティリティ・プログラム203は、BIOS200及び挿抜制御ドライバ201と連携しながら、図10の各処理ステップを実行する。
図10において、まず、ステップS1001では、BIOS200がリムーバブルハードディスク装置128の接続を検知したか否かを、検知するまで判断する。そして、リムーバブルハードディスク装置128の接続を検知した場合はステップS1002へ進み、以降、当該接続されたリムーバブルハードディスク装置128を対象とした処理を実行する。
ステップS1002では、リムーバブルハードディスク装置128がロック状態である場合にユーザにパスワードの入力を促し、ユーザにより入力されたパスワードによりロックの解除を行う。次に、ステップS1003で、アクセスコントロール設定レジスタ309を設定することにより、ユーザデータ領域304のアクセスを許可状態に設定する。次に、ステップS1004で、アクセスコントロール設定レジスタ309を設定することにより、リスト領域305のアクセスを許可状態に設定する。次に、ステップS1005で、リスト領域305に格納されているアクセス許可リストを読み出す(ロードする)。
次に、ステップS1006で、前記ステップS1005において読み出したアクセス許可リストに設定されているユーザIDとパスワードの組から成る認証情報を、リムーバブルハードディスク装置128にアクセスする際の認証情報として使用されるように、対応するソフトウエア・コンポーネント(認証制御コンポーネント)に供給する。
本実施の形態では、ユーティリティ・プログラム203とアクセス制御ドライバ802がアクセス許可リストから認証情報を取得し、リムーバブルハードディスク装置128へのアクセス要求に対して許可または禁止を行う。
次に、ステップS1007で、アクセスコントロール設定レジスタ309を設定することにより、リスト領域305のアクセスを禁止状態に設定する。次に、ステップS1008で、BIOS200に対して、リムーバブルハードディスク装置128が接続された旨をOS202に通知するように指示を行う。BIOS200は、当該指示に応じてOS202にPnPイベントを発行し、リムーバブルハードディスク装置128が接続された旨をOS202に通知する。
以降、OS202は、リムーバブルハードディスク装置128の存在を認識するので、ローカルユーザ、または、リモートユーザが、そのユーザデータ領域304をアクセスできるように設定する。その際は、アクセス制御ドライバ802がリムーバブルハードディスク装置128へのアクセス要求に介在し、該リムーバブルハードディスク装置128から読み出したアクセス許可リストに基づいてアクセスの許可または禁止を行う。
Webサーバによりネットワーク上のリモートユーザに、リムーバブルハードディスク装置128に記憶されている情報を公開する場合には、該リムーバブルハードディスク装置128のリスト領域305から読み出したアクセス情報リストに設定されているユーザID情報とパスワードとを、Webサーバで使用するユーザ認証情報として供給するようにすれば良い。
以上説明したように、本実施の形態によれば、情報処理装置100にリムーバブルハードディスク装置128が接続された後、OS202以外のプログラム(本実施の形態におけるユーティリティ・プログラム203)がBIOS200を介してリムーバブルハードディスク装置128のリスト領域305からリムーバブルハードディスク装置128へのアクセスを許可する認証情報を読み出し、当該読み出し後に、リスト領域305へのアクセスを禁止し、その後、OS202に対してリムーバブルハードディスク装置128の接続を通知する。
即ち、リムーバブルハードディスク装置128がOS202に認識される前に、該リムーバブルハードディスク装置128から認証情報を読み出し、該リムーバブルハードディスク装置128にアクセスする際のユーザ認証を司る認証制御コンポーネントに認証情報を供給した後、OS202がリムーバブルハードディスク装置128を認識するように制御する。
これにより、OS202が認識したリムーバブルハードディスク装置128をローカルユーザ、または、リモートユーザの利用に供する時点では、情報処理装置100に接続されたリムーバブルハードディスク装置128毎に設定されている認証情報に基づく認証制御を稼動状態にさせておくことが可能となる。
また、リムーバブルハードディスク装置128がOS202に認識される前に、該リムーバブルハードディスク装置128の所定領域(リスト領域305)から情報を読み出し、該所定領域へのアクセスを禁止状態に設定した後、OS202がリムーバブルハードディスク装置128を認識するように制御するので、該所定領域が悪意のユーザやプログラムから不当にアクセスされるのを防止することができる。即ち、認証制御コンポーネントが使用する認証情報を格納するための秘匿領域をアクセス禁止状態に戻してから、OS202に、リムーバブルハードディスク装置128がリムーバブルハードディスクスロット部111に挿入されたことを通知するようにしたから、当該秘匿領域をOS202も含めて、不正アクセスを防止することができる。
(第3の実施の形態)
次に、本発明の第3の実施の形態を、図11乃至図14に基づき説明する。
なお、本実施の形態に係る情報処理装置の基本的な構成は、上述した第1の実施の形態の図1乃至図3と同一であるから、これら各図を流用して説明する。
本実施の形態は、情報処理装置100のハードディスク装置107を、図3に示すリムーバブルハードディスク装置128と同一構成にしたものである。
図11は、ハードディスク装置107が図3に示すリムーバブルハードディスク装置128同一構成である場合の、ブートシーケンスとデータの位置関係を示す図である。
記憶媒体301は、マスターブートレコード(MBR)1101、ユーザデータ領域304、リスト領域(所定領域)305とから構成される。MBR1101は、記憶媒体301の先頭セクタに配置され、通常BIOS200によって実行される起動プログラムであるブートローダ1102、パーティション構造を定義するためのパーティションテーブル(図示せず)、ブートシグニチャ(図示せず)を含んでいる。
BIOS200は、ブート時、POST(Power On Self Test)処理と呼ばれる自己診断処理の後、リスト領域305に格納された認証プログラム1104をメインメモリ105に読み込み、認証プログラム1104を実行する。認証プログラム1104は、認証データ1105を参照し、リムーバブルハードディスク装置128が認証データ1105に登録されていれば、認証データ1105に登録されているパスワードを使用してリムーバブルハードディスク装置128のセキュリティロック解除を行う。認証プログラム1104は、リムーバブルハードディスク装置128のセキュリティロック解除を行った後、MBR1101に格納されたブートローダ1102をメインメモリ105に読み込み、ブートローダ1102を実行する。ブートローダ1102には、従来の装置と同様にオペレーティングシステム(OS)を起動するためのプログラムが書き込まれており、ブートローダ1102は、IPL1103に制御を渡し、BIOSによって実行されるブート処理を終了する。
ここで、認証データ1105について、図12を用いて説明する。
認証データ1105には、情報処理装置100に接続されるリムーバブルハードディスク装置128の型名1201、シリアル番号1202、ATAパスワード1203が記述されている。認証データ1105には、複数のリムーバブルハードディスク装置128の情報を記述することが可能である。図12の例では、型名「AAAAA」、シリアル番号「11111」のリムーバブルハードディスク装置に設定されているATAパスワードが「XXXXXXXX」であって、型名「BBBBB」、シリアル番号「22222」のリムーバブルハードディスク装置に設定されているATAパスワードが「YYYYYYYY」であることを表している。
認証プログラム1104による認証は、認証データ1105に記述されている型名、シリアル番号と、リムーバブルハードディスク装置128のIdentify Device Informationから得られる型名、シリアル番号とを比較することにより行う。
次に、ATAの標準的なコマンドであるIdentify Deviceについて説明する。
Identify Deviceは、ハードディスク装置107に関する詳細な情報を得るためのコマンドであって、コマンドに応答してハードディスク装置107より上位装置(ここではBIOS200)に返送される情報(データ)をIdentify Device Informationと呼ぶ。
Identify Device Informationには、図13に示すように、ハードディスク装置107の型名(Model number)、シリアル番号(Serial number)、セキュリティ状態(Security status)を示す情報等が格納されている。
本実施の形態に係る情報処理装置100におけるハードディスク装置107の場合は、上記のデータに加えて図13のword156に示す付加情報を格納することが可能である。このword156は、従来Vendor Specificな領域として割り当てられている領域であり、本実施の形態では、この領域を用いて、以下に挙げる情報を格納している。
図13において、bit15からbit8と、bit6からbit3は、Reserved領域であり、これは使用しない。bit7は、ハードディスク装置が本実施の形態に係る情報処理装置100におけるハードディスク装置107であることを示すビットであり、常に1がセットされる。bit2は、Initial Controlであって、図4で説明したアクセスコントロール情報のbit2と同一の情報が格納される。bit1は、Utility 1であって、図4で説明したアクセスコントロール情報のbit1と同一の情報が格納される。bit0は、Utility 0であって、図4で説明したアクセスコントロール情報のbit0と同一の情報が格納される。
次に、本実施の形態に係る情報処理装置100のブート時におけるBIOS200のプログラム処理について、図14のフローチャートを用いて説明する。
まず、BIOS200は、POST処理を行った後(ステップS1401)、起動ディスクであるハードディスク装置107に対してIdentify Deviceコマンドを送信し、ハードディスク装置107から返送されるIdentify Device Informationを受信する(ステップS1402)。Identify Device Informationを解析し、Security lockedの状態であるか否かを判断する(ステップS1403)。そして、Security lockedの状態であるあると判断された場合は、ユーザ(操作者)によるパスワード入力によって(ステップS1404)、Security lockの解除を行う(ステップS1405)。一方、前記ステップS1403において、Security lockedの状態でないと判断された場合は、ブートローダ1102に制御を渡し(ステップS1415)、その後、BIOS200によって実行されるブート処理を終了する。
ここで、前記ステップS1403において実行されるSecurity lockedの状態か否かの判断については、Identify Device Informationのword128のbit2を解析することにより行い、当該ビットが「1」であればSecurity lockedの状態であると判断し、「0」であればSecurity lockedの状態でないと判断する。
Identify Device Informationのword128の構成を図13に示す。
また、Security lockの解除については、ステップS1404においてユーザにより入力されたパスワードを伴うSecurity UnlockコマンドをBIOS200からハードディスク装置107に対して送信することにより行う。
再び図14のフローチャートに戻って説明を続ける。
前記ステップS1405においてSecurity lockの解除を行った後、Indentify Device Informationのword156のbit7を解析し、当該ディスク装置が本発明のディスク装置であるか否かを判断する(ステップS1406)。そして、当該ビットが「1」であれば、ステップS1407へ進む。また、当該ビットが「0」であれば、ブートローダ1102に制御を渡し(ステップS1415)、その後、BIOS200によって実行されるブート処理を終了する。
ここで、当該ビットが「1」であるということは、このハードディスク装置が本実施の形態に係る情報処理装置におけるハードディスク装置107であること、即ち、図3に示すリスト領域305と同様の「リスト領域」を持つリムーバブルハードディスク装置であることを意味している。また、当該ビットが「0」であるということは、このハードディスク装置が本実施の形態に係る情報処理装置におけるハードディスク装置107でないこと、即ち、図3に示すリスト領域305と同様の「リスト領域」を持つリムーバブルハードディスク装置でないことを意味している。
ステップS1407では、前述したSet Access Controlコマンドによってリスト領域305の読み出しをEnableに設定し、読み出し可能となったリスト領域305から認証プログラム1104を読み出す(ステップS1408)。
ここで、ステップS1409以降の処理は、ステップS1408で読み出された認証プログラムを実行することによって行われる処理となる。
ステップS1409では、情報処理装置100に接続されているリムーバブルハードディスク装置128に対しIdentify Deviceコマンドを送信し、リムーバブルハードディスク装置128から返送されるIdentify Device Informationを受信する。次に、認証データ1105に記憶しているリムーバブルハードディスク装置の型名(Model number)、シリアル番号(Serial number)と、前記ステップS1409において受信したIdentify Device Informationに含まれるMedel number、Serial numberとの照合を行い、認証データ1105と合致したか否かを判断する(ステップS1410)。
そして、認証データ1105と合致したと判断された場合は(ステップS1410)、当該リムーバブルハードディスク装置がSecurity lockedの状態であるか否かを判断する(ステップS1411)。そして、当該リムーバブルハードディスク装置がSecurity lockedの状態であると判断された場合は(ステップS1411)、認証データ1105に記憶しているパスワードを伴うSecurity Unlockコマンドを送信し、Security lockの解除を行う(ステップS1412)。
本実施の形態では、リムーバブルハードディスク装置128が複数接続されている場合に対応しており、前記ステップS1412においてSecurity lockの解除を行った後に加えて、前記ステップS1410において認証データが合致しないと判断された場合と、前記ステップS1411においてSecurity locked状態でないと判断された場合に、情報処理装置100に接続されているリムーバブルハードディスク装置の全てに対して処理が終了したか否かを判断する(ステップS1413)。
そして、全てのリムーバブルハードディスク装置に対する処理が完了していないと判断された場合は(ステップS1413)、前記ステップS1409へ戻る。また、全てのリムーバブルハードディスク装置に対する処理が完了していると判断された場合は(ステップS1413)、Set Access Controlコマンドによってハードディスク装置107のリスト領域の読み出しをDisableに設定し(ステップS1414)、ハードディスク装置107のブートローダ1102に制御を渡し(ステップS1415)、BIOS200によって実行されるブート処理を終了する。
(第4の実施形態)
次に、本発明の第4の実施形態を図15及び図16に基づき説明する。
なお、本実施の形態に係る情報処理装置の基本的な構成は、上述した第1の実施の形態の図1乃至図3と同一であるから、これら各図を流用して説明する。
図15は、本発明の第4の実施形態に係る情報処理装置100において、リムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111からの抜出を要求してから、ユーティリティ・プログラム203及び挿抜制御ドライバ201、BIOS200を通じてリムーバブルハードディスク装置128をリムーバブルハードディスクスロット部111から抜出し、その旨をOS202に通知するまでの手順について、各種のプログラム間における処理を示すブロック図である。
ここで、リムーバブルハードディスク装置128は、リムーバブルハードディスクスロット部111に挿入されており、ATAバス131及びインタフェース制御部123を介して記憶媒体としてOS202上で動作しているアプリケーションプログラムからアクセスされている。
なお、図15は、左側から右側に向かって時系列順に記述されている。
ユーザがリムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111からの抜出(排出)を要求する方法としては、排出スイッチ115を押下する、或いはユーティリティ・プログラム203が提供するUI(User Interface)から抜出操作を行う方法が挙げられる。
前者の場合、排出スイッチ115が押下されたことをEC113が検知し、その旨をユーティリティ・プログラム203へ通知する。また、後者の場合はーティリティ・プログラム203がユーザからのUIを通じた抜出操作により、抜出指示の要求を受信する。
抜出指示要求を受信したユーティリティ・プログラム203は、リムーバブルハードディスク装置128の挿抜の制御を行う挿抜制御ドライバ201に対して抜出指示を行う(ステップS1501)。
或いは後述するように、挿抜制御ドライバ201がユーティリティ・プログラム203に対して周期的に問い合わせを行い、抜出指示があったか否かを検知するようにしても良い。
抜出指示を受信した挿抜制御ドライバ201は、ユーザ、即ちアプリケーションプログラムからのアクセスを切断する処理や、BIOS200に対してATA規格で規定されているATAコマンドを用いてリムーバブルハードディスク装置128のキャッシュの掃き出し処理等の終端処理を要求して、リムーバブルハードディスク装置128に対する更なるアクセスを禁止し、且つデータの損失を防ぎ、安全にリムーバブルハードディスク装置128をリムーバブルハードディスクスロット部111から抜出するための終端処理要求を行う(ステップS1502)。また、その他、リムーバブルハードディスク装置128に関する固有の設定等を要求することも可能である。
リムーバブルハードディスク装置128に対する終端処理要求を受信したBIOS200は、リムーバブルハードディスク装置128の終端処理を行う(ステップS1503)。具体的には、インタフェース制御部123及びATAバス131を通じてATAコマンドをリムーバブルハードディスク装置128に送信する。
終端処理が終了すると、BIOS200は、リムーバブルハードディスク装置128をリムーバブルハードディスクスロット部111から抜出するために、メカニカルなアンロック処理を行うようEC113に指示する(ステップS1504)。メカニカルなアンロック処理の指示を受信したEC113は、ロック制御部118を動作させ、リムーバブルハードディスク装置128のメカニカルなアンロック処理を行う。
更にBIOS200は、メカニカルなアンロック処理を終了した後、リムーバブルハードディスク装置128とATAバス127との接続を切断するために、リムーバブルハードディスク装置128の抜出処理を行うようにEC113に指示する(ステップS1505)。
抜出処理の指示を受信したEC113は、モータ制御部117を動作させ、リムーバブルハードディスク装置128の抜出処理を行う。EC113は、挿抜検知部116経由でリムーバブルハードディスク装置128の抜出処理の完了を検知し、その旨をBIOS200に通知する。
なお、メカニカルなアンロック処理完了の検知及び抜出処理完了の検知、或いはエラー終了の検知は、BIOS200が定期的にEC113に問い合わせしても良いし、時間及びその他のセンサー等から判断しても良い。
リムーバブルハードディスク装置128の抜出処理完了の通知を受信したBIOS200は、その旨をユーティリティ・プログラム203に通知する(ステップS1506)。
リムーバブルハードディスク装置128の抜出処理完了の通知を受信したユーティリティ・プログラム203は、BIOS200を通じてOS202に対して、リムーバブルハードディスク装置128がATAバス127から切断、即ちプラグアウト(Plug out)されたことを通知するように、挿抜制御ドライバ201に指示する(ステップS1507)。
プラグアウト通知の指示を受信した挿抜制御ドライバ201は、OS202に対して、リムーバブルハードディスク装置128がプラグアウトされたことを通知するように、BIOS200に指示する(ステップS1508)。
OS202に対してリムーバブルハードディスク装置128がプラグアウトされたことを通知するように指示されたBIOS200は、その旨をOS202に通知する(ステップS1509)。BIOS200からの通知を受信したOS202は、プラグアンドプレイ(Plug and Play)に必要な処理を行う。その結果、リムーバブルハードディスク装置128は、OS202からデバイスとして認識されず、OS202上で動作する各種アプリケーションからアクセスすることが不可能となる。
次に、本実施の形態に係る情報処理装置100において、ユーザがユーティリティ・プログラム203を通じて、リムーバブルハードディスクスロット部111に接続されているリムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111からの抜出を要求してから、OS202においてプラグアンドプレイに必要な処理が行われるまでの、CPU101における処理動作について、図16を用いて説明する。
図16は、本実施の形態に係る情報処理装置100において、ユーザがユーティリティ・プログラム203を通じて、リムーバブルハードディスクスロット部111に接続されているリムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111からの抜出を要求してから、OS202においてプラグアンドプレイに必要な処理が行われるまでの、CPU101における処理動作の流れを示すフローチャートである。
なお、リムーバブルハードディスク装置128の抜出指示は、ユーザが排出スイッチ115を押下する、或いはユーティリティ・プログラム203が提供するUIからの抜出操作によって行われる。
挿抜制御ドライバ201は、ユーティリティ・プログラム203を周期的にポーリングすることによって、リムーバブルハードディスク装置128の抜出指示があったことを検知する(ステップS1601)。
リムーバブルハードディスク装置128の抜出指示を検知した挿抜制御ドライバ201は、リムーバブルハードディスク装置128をリムーバブルハードディスクスロット部111から安全に抜出できるようにするべく、BIOS200に対して、リムーバブルハードディスク装置128の終端処理を要求する。終端処理要求を受信したBIOS200は、リムーバブルハードディスク装置128に対して、キャッシュの掃き出しを行う等の終端処理を行う(ステップS1602)。また、ユーザに対して、リムーバブルハードディスク装置128へのアクセスを切断するといった処理も行う。
以上のようにして終端処理を行うことにより、データの損失を防ぎ、リムーバブルハードディスク装置128をリムーバブルハードディスクスロット部111から安全に抜出することが可能となる。また、その他、リムーバブルハードディスク装置128に関する固有の設定等を行うことも可能である。
次に、リムーバブルハードディスク装置128を抜出するために、メカニカルなアンロック処理を行う(ステップS1603)。具体的には、BIOS200がEC113に対してメカニカルなアンロック処理を行うように指示し、その旨を受信したEC113は、ロック制御部118を動作させ、リムーバブルハードディスク装置128のメカニカルなアンロック処理を行う。
次に、リムーバブルハードディスク装置128のリムーバブルハードディスクスロット部111からの抜出処理を行い、リムーバブルハードディスク装置128を情報処理装置100の外部に取り出す(ステップS1604)。具体的には、BIOS200がEC113に対して抜出処理を行うように指示し、その旨を受信したEC113は、モータ制御部117を動作させ、リムーバブルハードディスク装置128の抜出処理を行う。そして、BIOS200は、挿抜検知部116により、リムーバブルハードディスク装置128の抜出処理の完了を検知する。
最後に、リムーバブルハードディスク装置128がプラグアウトされたことをOS202に対して通知し(ステップS1605)、その後、本処理動作を終了する。
以上説明したように、本実施の形態においては、リムーバブルハードディスク装置128の抜出要求をOS202が検出する前に、リムーバブルハードディスク装置128の終端処理や固有の設定を行うことが可能となり、また、メカニカルなアンロック処理、抜出処理を行うことによって、OS202からのプラグアウト処理をより確実に且つ安全に行える情報処理装置を提供することができる。
(その他の実施の形態)
以上が本発明の実施の形態の説明であるが、本発明は、これら実施の形態に限られるものではなく、特許請求の範囲で示した機能、または実施の形態の構成が持つ機能を達成できる構成であれば、どのようなものであっても適用可能である。
また、本発明の目的は、前述した実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体及びプログラムは本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。