JP2001051858A - 基本入出力システム(bios)サービスを安全に使用するためのシステムおよび方法 - Google Patents
基本入出力システム(bios)サービスを安全に使用するためのシステムおよび方法Info
- Publication number
- JP2001051858A JP2001051858A JP2000180317A JP2000180317A JP2001051858A JP 2001051858 A JP2001051858 A JP 2001051858A JP 2000180317 A JP2000180317 A JP 2000180317A JP 2000180317 A JP2000180317 A JP 2000180317A JP 2001051858 A JP2001051858 A JP 2001051858A
- Authority
- JP
- Japan
- Prior art keywords
- bios
- memory
- service
- virtual memory
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 基本入出力システム(BIOS)サービスを
安全に使用するためのシステムおよび方法を提供する。 【解決手段】 本システムは、プロセッサ・ベースのシ
ステムを処理する命令シーケンスを記憶するメモリを含
む。システムは、記憶された命令シーケンスを実行する
プロセッサも含む。記憶された命令シーケンスは、プロ
セッサに、複数の所定命令シーケンスを物理メモリから
仮想メモリにマップし、仮想メモリ内の複数の所定命令
シーケンスのうちの1つの命令シーケンスまでのオフセ
ットを判断し、命令を受け取って複数の所定命令シーケ
ンスのうちの1つの命令シーケンスを実行し、複数の所
定命令シーケンスのうちの1つの命令シーケンスに制御
を渡し、仮想メモリからの複数の所定命令シーケンスの
うちの1つの命令シーケンスを処理することを実行させ
るプロセス処置を含む。
安全に使用するためのシステムおよび方法を提供する。 【解決手段】 本システムは、プロセッサ・ベースのシ
ステムを処理する命令シーケンスを記憶するメモリを含
む。システムは、記憶された命令シーケンスを実行する
プロセッサも含む。記憶された命令シーケンスは、プロ
セッサに、複数の所定命令シーケンスを物理メモリから
仮想メモリにマップし、仮想メモリ内の複数の所定命令
シーケンスのうちの1つの命令シーケンスまでのオフセ
ットを判断し、命令を受け取って複数の所定命令シーケ
ンスのうちの1つの命令シーケンスを実行し、複数の所
定命令シーケンスのうちの1つの命令シーケンスに制御
を渡し、仮想メモリからの複数の所定命令シーケンスの
うちの1つの命令シーケンスを処理することを実行させ
るプロセス処置を含む。
Description
【0001】
【発明の属する技術分野】本発明は、基本入出力システ
ム(BIOS)サービスを安全に使用するためのシステ
ムおよび方法に関する。
ム(BIOS)サービスを安全に使用するためのシステ
ムおよび方法に関する。
【0002】
【従来の技術】仮想メモリ・サブシステムでは、ソフト
ウェア・プログラムで使用されるメモリ・アドレスが物
理メモリ内の記憶場所に間接的にマップされる「仮想」
メモリ・アドレッシングが使用されている。物理アドレ
スへの変換は、一般に、プロセッサによって行われ、こ
のような物理アドレスにはユーザ・モード・ソフトウェ
アおよび基本入出力システム(BIOS)はアクセスす
ることができない。
ウェア・プログラムで使用されるメモリ・アドレスが物
理メモリ内の記憶場所に間接的にマップされる「仮想」
メモリ・アドレッシングが使用されている。物理アドレ
スへの変換は、一般に、プロセッサによって行われ、こ
のような物理アドレスにはユーザ・モード・ソフトウェ
アおよび基本入出力システム(BIOS)はアクセスす
ることができない。
【0003】このような仮想メモリ・サブシステムの一
例は、マイクロソフト社が製造販売するWindows
NTによって使用されているものである。具体的に
は、Windows NTは、要求時ページング仮想メ
モリ・サブシステムを組み込んでいる。Windows
NTオペレーティング・システム上で実行されるプロ
グラムに供給されるメモリ・アドレスは、他のユーザ・
モード・プログラムに対して保護され、それと同様に、
他のプログラムもそれに対して保護されている。これに
よってユーザ・モード・サービスとアプリケーション
は、互いのメモリを上書きしたり、互いの命令を実行し
ないように保証される。カーネル・モード・サービスお
よびアプリケーションも同様の方法で保護される。プロ
グラムに割り振られた仮想空間の外部のメモリにアクセ
スが試みられた場合、プログラムを終了させ、ユーザに
通知する。仮想メモリ・サブシステムは、ユーザ・モー
ド・ソフトウェアによる物理メモリ・アドレスへの直接
アクセスと、コンピュータ・システムの一部である入出
力装置へのアクセスも防止する。
例は、マイクロソフト社が製造販売するWindows
NTによって使用されているものである。具体的に
は、Windows NTは、要求時ページング仮想メ
モリ・サブシステムを組み込んでいる。Windows
NTオペレーティング・システム上で実行されるプロ
グラムに供給されるメモリ・アドレスは、他のユーザ・
モード・プログラムに対して保護され、それと同様に、
他のプログラムもそれに対して保護されている。これに
よってユーザ・モード・サービスとアプリケーション
は、互いのメモリを上書きしたり、互いの命令を実行し
ないように保証される。カーネル・モード・サービスお
よびアプリケーションも同様の方法で保護される。プロ
グラムに割り振られた仮想空間の外部のメモリにアクセ
スが試みられた場合、プログラムを終了させ、ユーザに
通知する。仮想メモリ・サブシステムは、ユーザ・モー
ド・ソフトウェアによる物理メモリ・アドレスへの直接
アクセスと、コンピュータ・システムの一部である入出
力装置へのアクセスも防止する。
【0004】コンピュータ・システム上では、仮想メモ
リ・サブシステムを使用してオペレーティング・システ
ムを実行することができる入出力装置が使用される傾向
が増している。このようなシステムでは、BIOS機能
などプログラムの仮想メモリ空間の外部のメモリにアク
セスする手段がない。この問題に対処する1つの手法
は、装置のための命令が入ったファイルを読み取る装置
・ドライバをインストールすることである。ドライバ
は、このファイルを読み取って、これらの命令を装置の
メモリに書き込む(またはダウンロードする)。しか
し、このタイプの装置・ドライバは、限られたメモリの
アドレッシングおよび入出力操作しかできない。さら
に、このタイプの装置・ドライバでは、物理メモリ空間
内のシステムのプロセッサ命令の実行もできない。
リ・サブシステムを使用してオペレーティング・システ
ムを実行することができる入出力装置が使用される傾向
が増している。このようなシステムでは、BIOS機能
などプログラムの仮想メモリ空間の外部のメモリにアク
セスする手段がない。この問題に対処する1つの手法
は、装置のための命令が入ったファイルを読み取る装置
・ドライバをインストールすることである。ドライバ
は、このファイルを読み取って、これらの命令を装置の
メモリに書き込む(またはダウンロードする)。しか
し、このタイプの装置・ドライバは、限られたメモリの
アドレッシングおよび入出力操作しかできない。さら
に、このタイプの装置・ドライバでは、物理メモリ空間
内のシステムのプロセッサ命令の実行もできない。
【0005】
【発明が解決しようとする課題】したがって、当技術分
野では、仮想メモリ・サブシステムから物理メモリの内
容にアクセスし、実行するシステムおよび方法が必要で
ある。それにより、メモリのアドレッシング機能および
入出力操作の向上を促すとともに、物理メモリから直
接、プロセッサ命令を実行できるようにする。
野では、仮想メモリ・サブシステムから物理メモリの内
容にアクセスし、実行するシステムおよび方法が必要で
ある。それにより、メモリのアドレッシング機能および
入出力操作の向上を促すとともに、物理メモリから直
接、プロセッサ命令を実行できるようにする。
【0006】さらに、コンピュータ・システムまたはプ
ラットフォームに記憶されたデータは、更新または設定
することができる。場合によっては、このデータはきわ
めて機密性が高いことがある。設定可能な機密データの
好例は、コンピュータ・システムの基本入出力システム
(BIOS)である。BIOSは、一般には何らかの形
態の不揮発性メモリに記憶され、マシン・コード、通常
はオペレーティング・システム(OS)の一部であり、
これによって、中央処理装置(CPU)は、大容量記憶
装置からのオペレーティング・システム・カーネルのロ
ード、初期設定、診断、ルーチン入出力(「I/O」)
機能などのタスクを実行することができる。電源投入
時、CPUは、BIOSに常駐する命令コードをフェッ
チすることによって「ブート・アップ」する。セキュリ
ティ保護がない状態では、BIOSは、BIOSが備え
る機能を呼び出すためのサービス要求を受けて、実施す
ることを通しての攻撃に対して無防備である。これらの
攻撃によって、BIOSが破壊され、コンピュータ・シ
ステムが使用不能になることがある。
ラットフォームに記憶されたデータは、更新または設定
することができる。場合によっては、このデータはきわ
めて機密性が高いことがある。設定可能な機密データの
好例は、コンピュータ・システムの基本入出力システム
(BIOS)である。BIOSは、一般には何らかの形
態の不揮発性メモリに記憶され、マシン・コード、通常
はオペレーティング・システム(OS)の一部であり、
これによって、中央処理装置(CPU)は、大容量記憶
装置からのオペレーティング・システム・カーネルのロ
ード、初期設定、診断、ルーチン入出力(「I/O」)
機能などのタスクを実行することができる。電源投入
時、CPUは、BIOSに常駐する命令コードをフェッ
チすることによって「ブート・アップ」する。セキュリ
ティ保護がない状態では、BIOSは、BIOSが備え
る機能を呼び出すためのサービス要求を受けて、実施す
ることを通しての攻撃に対して無防備である。これらの
攻撃によって、BIOSが破壊され、コンピュータ・シ
ステムが使用不能になることがある。
【0007】したがって、BIOS内のデータのアクセ
スまたは変更を行うサービス要求の保全性を検証し、そ
れらのリモート要求メッセージの適切な許可制限を強制
するシステムおよび方法を提供する必要もある。
スまたは変更を行うサービス要求の保全性を検証し、そ
れらのリモート要求メッセージの適切な許可制限を強制
するシステムおよび方法を提供する必要もある。
【0008】
【課題を解決するための手段】本発明は、基本入出力シ
ステム(BIOS)サービスを安全に使用するためのシ
ステムおよび方法を提供する。
ステム(BIOS)サービスを安全に使用するためのシ
ステムおよび方法を提供する。
【0009】本発明の一態様によると、システムは、プ
ロセッサ・ベースのシステムを処理する命令シーケンス
を記憶するメモリを含む。そのメモリは物理メモリと仮
想メモリとを含む。システムは、記憶された命令シーケ
ンスを実行するプロセッサも含む。記憶された命令シー
ケンスは、プロセッサに、複数の所定命令シーケンスを
物理メモリから仮想メモリにマップするステップと、仮
想メモリ内の複数の所定命令シーケンスのうちの1つの
命令シーケンスまでのオフセットを判断するステップ
と、命令を受け取って複数の所定命令シーケンスのうち
の1つの命令シーケンスを実行するステップと、複数の
所定命令シーケンスのうちの1つの命令シーケンスに制
御を渡すステップと、仮想メモリからの複数の所定命令
シーケンスのうちの1つの命令シーケンスを処理するス
テップとを実行させるプロセッサを含む。
ロセッサ・ベースのシステムを処理する命令シーケンス
を記憶するメモリを含む。そのメモリは物理メモリと仮
想メモリとを含む。システムは、記憶された命令シーケ
ンスを実行するプロセッサも含む。記憶された命令シー
ケンスは、プロセッサに、複数の所定命令シーケンスを
物理メモリから仮想メモリにマップするステップと、仮
想メモリ内の複数の所定命令シーケンスのうちの1つの
命令シーケンスまでのオフセットを判断するステップ
と、命令を受け取って複数の所定命令シーケンスのうち
の1つの命令シーケンスを実行するステップと、複数の
所定命令シーケンスのうちの1つの命令シーケンスに制
御を渡すステップと、仮想メモリからの複数の所定命令
シーケンスのうちの1つの命令シーケンスを処理するス
テップとを実行させるプロセッサを含む。
【0010】このシステムの他の態様は、サービス要求
が暗号鍵の対における秘密鍵を使用して作成されたサー
ビス要求署名を含むようにして、BIOSサービスを使
用するサービス要求を生成するためのアクセス・ドライ
バを含む。システムは、暗号鍵対における公開鍵を使用
してサービス要求署名を検証し、サービス要求の保全性
を保証するためのインタフェースも含む。
が暗号鍵の対における秘密鍵を使用して作成されたサー
ビス要求署名を含むようにして、BIOSサービスを使
用するサービス要求を生成するためのアクセス・ドライ
バを含む。システムは、暗号鍵対における公開鍵を使用
してサービス要求署名を検証し、サービス要求の保全性
を保証するためのインタフェースも含む。
【0011】
【発明の実施の形態】定義 本明細書に記載の「コンピュータ・システム」とは、デ
ータを処理することができる回路を含む製品である。コ
ンピュータ・システムは、たとえば、汎用コンピュータ
・システム(たとえば、サーバ、ラップトップ、デスク
トップ、パームトップ、パーソナル電子装置など)、パ
ーソナル・コンピュータ(PC)、ハード・コピー装置
(たとえば、プリンタ、プロッタ、ファクシミリ機な
ど)、銀行業務装置(たとえば自動預払機など)、およ
び同様のものを含むが、これらには限定されない。イン
フォメディアリ(infomediary)とは、製品およびサー
ビスの製作者のために情報を提供し、提供者およびその
他の事業者によって提供される製品および/またはサー
ビスに関する関連情報を事業者に供給するウェブ・サイ
トである。コンテンツとは、アプリケーション・プログ
ラム、ドライバ・プログラム、ユーティリティ・プログ
ラム、ペイロードなどおよびこれらの組合せと、グラフ
ィックス、情報資料(論文、株式相場など)および同様
のものを単独でまたは任意の組合せとして指す。さら
に、「通信リンク」は、通信の媒介またはチャネルを指
す。通信リンクは、たとえば、電話回線、モデム接続、
インターネット接続、統合サービス・ディジタル網
(「ISDN」)接続、非同期転送モード(ATM)接
続、フレーム・リレー接続、イーサネット(登録商標)
接続、同軸ケーブル接続、光ファイバ接続、衛星接続
(たとえばディジタル衛星サービスなど)、ワイヤレス
接続、無線周波(RF)リンク、電磁リンク、双方向ペ
ージング接続など、およびこれらの組合せを含むが、こ
れらには限定されない。パワー・オン・セルフ・テスト
(POST)とは、OSをロードする前にシステム・ハ
ードウェアの構成とテストを行うために実行される命令
を指す。
ータを処理することができる回路を含む製品である。コ
ンピュータ・システムは、たとえば、汎用コンピュータ
・システム(たとえば、サーバ、ラップトップ、デスク
トップ、パームトップ、パーソナル電子装置など)、パ
ーソナル・コンピュータ(PC)、ハード・コピー装置
(たとえば、プリンタ、プロッタ、ファクシミリ機な
ど)、銀行業務装置(たとえば自動預払機など)、およ
び同様のものを含むが、これらには限定されない。イン
フォメディアリ(infomediary)とは、製品およびサー
ビスの製作者のために情報を提供し、提供者およびその
他の事業者によって提供される製品および/またはサー
ビスに関する関連情報を事業者に供給するウェブ・サイ
トである。コンテンツとは、アプリケーション・プログ
ラム、ドライバ・プログラム、ユーティリティ・プログ
ラム、ペイロードなどおよびこれらの組合せと、グラフ
ィックス、情報資料(論文、株式相場など)および同様
のものを単独でまたは任意の組合せとして指す。さら
に、「通信リンク」は、通信の媒介またはチャネルを指
す。通信リンクは、たとえば、電話回線、モデム接続、
インターネット接続、統合サービス・ディジタル網
(「ISDN」)接続、非同期転送モード(ATM)接
続、フレーム・リレー接続、イーサネット(登録商標)
接続、同軸ケーブル接続、光ファイバ接続、衛星接続
(たとえばディジタル衛星サービスなど)、ワイヤレス
接続、無線周波(RF)リンク、電磁リンク、双方向ペ
ージング接続など、およびこれらの組合せを含むが、こ
れらには限定されない。パワー・オン・セルフ・テスト
(POST)とは、OSをロードする前にシステム・ハ
ードウェアの構成とテストを行うために実行される命令
を指す。
【0012】システムの概要 本発明の実施形態を組み込んだシステムの一例について
以下に説明する。
以下に説明する。
【0013】図1に、本発明のシステムおよび方法が使
用される情報配信システム10の一実施形態のシステム
・ブロック図を示す。このシステム10は、インフォメ
ディアリの提供に関係する。これは、インターネット・
ユーザおよびシステムのプロファイルの安全な専用リポ
ジトリの構築とメンテナンスを必要とする。最初に、情
報を使用して、購入ハードウェア製品およびソフトウェ
ア製品の製造業者や、オンライン・サービスまたはその
他のサービスの提供者にユーザが登録される。時間の経
過と共に、このユーザ・データを使用してユーザ・プロ
ファイルが作成され、ユーザに関連ソフトウェアの更新
が通知されて、関連製品のオンライン購入を促し、一対
一のカスタマイズされた販売サービスおよびその他のサ
ービスを可能にする。
用される情報配信システム10の一実施形態のシステム
・ブロック図を示す。このシステム10は、インフォメ
ディアリの提供に関係する。これは、インターネット・
ユーザおよびシステムのプロファイルの安全な専用リポ
ジトリの構築とメンテナンスを必要とする。最初に、情
報を使用して、購入ハードウェア製品およびソフトウェ
ア製品の製造業者や、オンライン・サービスまたはその
他のサービスの提供者にユーザが登録される。時間の経
過と共に、このユーザ・データを使用してユーザ・プロ
ファイルが作成され、ユーザに関連ソフトウェアの更新
が通知されて、関連製品のオンライン購入を促し、一対
一のカスタマイズされた販売サービスおよびその他のサ
ービスを可能にする。
【0014】一実施形態では、2つのソフトウェア・モ
ジュールを使用して、本発明の様々な実施形態を実施す
る。ソフトウェア・モジュールの1つはユーザのシステ
ムに置かれ、所定のウェブ・サイトにアクセスするため
に使用される。たとえば、一実施形態では、オペレーテ
ィング・システムと基本入出力(BIOS)はコンピュ
ータ・システムにプリインストールされ、その後、コン
ピュータ・システムが最初に電源投入されると、説明の
ために第1のソフトウェア・モジュールと呼ぶアプリケ
ーション(一実施形態では、第1のソフトウェア・モジ
ュールは、後述する初期スタートアップ・アプリケーシ
ョン(ISUA)である)によって、プリブート環境に
おける1つまたは複数の実行可能プログラムの始動(立
ち上げ)を可能にする。一実施形態では、第1のソフト
ウェア・モジュールは、OSのロード、ブート、実行お
よび/または稼働の前に、1つまたは複数の実行可能プ
ログラムの始動を促す。一実施形態では、ユーザはこの
ようなプログラムの使用(すなわち第1のソフトウェア
・モジュールの使用)を選択するように促され、他の実
施形態では、このプログラムは自動的に始動される。第
1のソフトウェア・モジュールに含まれるプログラム
は、ツールおよびユーティリティを適切な時点で適切な
ユーザ許可により実行することができるようにすると共
に、ユーザが、ドライバ、アプリケーション、および追
加ペイロードを含む第2のソフトウェア・モジュール
を、インターネット接続を介してPCにダウンロードす
ることができるようにする。これらのプログラムによっ
て、OSを正常に始動することができない場合にシステ
ムの遠隔管理を可能にすることもできる。
ジュールを使用して、本発明の様々な実施形態を実施す
る。ソフトウェア・モジュールの1つはユーザのシステ
ムに置かれ、所定のウェブ・サイトにアクセスするため
に使用される。たとえば、一実施形態では、オペレーテ
ィング・システムと基本入出力(BIOS)はコンピュ
ータ・システムにプリインストールされ、その後、コン
ピュータ・システムが最初に電源投入されると、説明の
ために第1のソフトウェア・モジュールと呼ぶアプリケ
ーション(一実施形態では、第1のソフトウェア・モジ
ュールは、後述する初期スタートアップ・アプリケーシ
ョン(ISUA)である)によって、プリブート環境に
おける1つまたは複数の実行可能プログラムの始動(立
ち上げ)を可能にする。一実施形態では、第1のソフト
ウェア・モジュールは、OSのロード、ブート、実行お
よび/または稼働の前に、1つまたは複数の実行可能プ
ログラムの始動を促す。一実施形態では、ユーザはこの
ようなプログラムの使用(すなわち第1のソフトウェア
・モジュールの使用)を選択するように促され、他の実
施形態では、このプログラムは自動的に始動される。第
1のソフトウェア・モジュールに含まれるプログラム
は、ツールおよびユーティリティを適切な時点で適切な
ユーザ許可により実行することができるようにすると共
に、ユーザが、ドライバ、アプリケーション、および追
加ペイロードを含む第2のソフトウェア・モジュール
を、インターネット接続を介してPCにダウンロードす
ることができるようにする。これらのプログラムによっ
て、OSを正常に始動することができない場合にシステ
ムの遠隔管理を可能にすることもできる。
【0015】第2のソフトウェア・モジュールが配布さ
れると、メモリ常駐になることができ、第1のソフトウ
ェア・モジュールの転送済みコピーを使用不能にするこ
とができる。システムの不揮発性メモリ内にそのまま常
駐している第1のソフトウェア・モジュールのオリジナ
ル・コピーは、第2のソフトウェア・モジュールが機能
することができなくなるか、破壊状態にあるか、または
削除されるまでアイドル状態のままになっており、機能
不能になるか、破壊または削除されると、オリジナルの
第1のソフトウェア・モジュールのコピーが、再び前述
のように転送される。第2のソフトウェア・モジュール
は、ユーザをインターネット上の特定のサーバに接続
し、他の申込み材料をダウンロードする許可を求めるた
めの所定のウェブ・サイトをユーザに指示するアプリケ
ーションを含むことができる。第2のソフトウェア・モ
ジュールは、第1のソフトウェア・モジュールの内容と
同じかまたは類似した内容を含むこともできる。
れると、メモリ常駐になることができ、第1のソフトウ
ェア・モジュールの転送済みコピーを使用不能にするこ
とができる。システムの不揮発性メモリ内にそのまま常
駐している第1のソフトウェア・モジュールのオリジナ
ル・コピーは、第2のソフトウェア・モジュールが機能
することができなくなるか、破壊状態にあるか、または
削除されるまでアイドル状態のままになっており、機能
不能になるか、破壊または削除されると、オリジナルの
第1のソフトウェア・モジュールのコピーが、再び前述
のように転送される。第2のソフトウェア・モジュール
は、ユーザをインターネット上の特定のサーバに接続
し、他の申込み材料をダウンロードする許可を求めるた
めの所定のウェブ・サイトをユーザに指示するアプリケ
ーションを含むことができる。第2のソフトウェア・モ
ジュールは、第1のソフトウェア・モジュールの内容と
同じかまたは類似した内容を含むこともできる。
【0016】一実施形態では、システムは、読取り専用
メモリBIOS(ROM BIOS)に記憶されている
初期ペイロードを含む。一実施形態では、この初期ペイ
ロードは、第1のソフトウェア・モジュール(たとえば
ISUA)の一部である。他の実施形態では、初期ペイ
ロードは、ROM BIOS内に第1のソフトウェア・
モジュールとは別個のモジュールとして記憶される。一
実施形態では、初期ペイロードは、パワー・オン・セル
フ・テスト(POST)の後、OSのブート、ロード、
および/または実行の前に、ROM BIOSから始動
され、画面に表示される。これは、システムを製造し、
組み立て、テストするるときや、エンド・ユーザがシス
テムを最初に起動したときなどの所定の時点で行うこと
ができる。他の実施形態では、この初期ペイロードは、
システムを製造し、組み立て、テストするときや、エン
ド・ユーザがシステムを最初に起動したときなどの所定
の時点に、所定の場所(システムのハード・ディスクな
ど)にコピーされる。ペイロードがコピーされると、ペ
イロードは、POSTの後、OSの動作の前に実行さ
れ、グラフィックス、広告、動画、ジョイント・フォト
グラフィック・エキスパート・グループ(JPEG)/
ムービング・ピクチャ・エキスパート・グループ(MP
EG)形式の材料を画面に表示することができる。(イ
ンターネットまたはその他の外部接続を介して)追加の
プログラムおよび/またはペイロードを配布する場合、
OSのブートの前、またはブート中に、表示画面を使用
して、メッセージまたはグラフィックスの形のカスタマ
イズされた画面を提示することができる。さらに、第1
のソフトウェア・モジュールで配布される実行可能プロ
グラムと、ウェブ・サイトからダウンロードされた後続
のプログラム(第2のソフトウェア・モジュールなど)
を使用して、PCを調べ、インストールされている様々
なタイプの装置、ドライバ、およびアプリケーションを
判断することができる。一実施形態では、1999年6
月18日に出願され、Phoenix Technol
ogies Ltd.に譲渡され、その内容が参照によ
り本明細書に組み込まれる「Method and A
pparatus for Automaticall
y Installing And Cofiguri
ngSoftware on a Computer」
という名称の同時係属出願の米国特許出願第
号に記載されているように、第1のソフトウェ
ア・モジュールを使用して、ユーザのためのショートカ
ットおよび/またはブックマークの識別と、自動作成を
行う。ウェブ・サイトからダウンロードされたプログラ
ムは、ユーザの選好に基づくユーザ・プロファイルの収
集と維持を行うソフトウェアを含むことがある。このよ
うな情報は、インフォメディアリに供給することがで
き、続いてインフォメディアリは、その情報および/ま
たはその情報に基づく編集データの一部を、供給者また
はその他の事業者に転送し、供給者またはその他の事業
者によって提供される情報の更新版または改訂版を入手
することができる。
メモリBIOS(ROM BIOS)に記憶されている
初期ペイロードを含む。一実施形態では、この初期ペイ
ロードは、第1のソフトウェア・モジュール(たとえば
ISUA)の一部である。他の実施形態では、初期ペイ
ロードは、ROM BIOS内に第1のソフトウェア・
モジュールとは別個のモジュールとして記憶される。一
実施形態では、初期ペイロードは、パワー・オン・セル
フ・テスト(POST)の後、OSのブート、ロード、
および/または実行の前に、ROM BIOSから始動
され、画面に表示される。これは、システムを製造し、
組み立て、テストするるときや、エンド・ユーザがシス
テムを最初に起動したときなどの所定の時点で行うこと
ができる。他の実施形態では、この初期ペイロードは、
システムを製造し、組み立て、テストするときや、エン
ド・ユーザがシステムを最初に起動したときなどの所定
の時点に、所定の場所(システムのハード・ディスクな
ど)にコピーされる。ペイロードがコピーされると、ペ
イロードは、POSTの後、OSの動作の前に実行さ
れ、グラフィックス、広告、動画、ジョイント・フォト
グラフィック・エキスパート・グループ(JPEG)/
ムービング・ピクチャ・エキスパート・グループ(MP
EG)形式の材料を画面に表示することができる。(イ
ンターネットまたはその他の外部接続を介して)追加の
プログラムおよび/またはペイロードを配布する場合、
OSのブートの前、またはブート中に、表示画面を使用
して、メッセージまたはグラフィックスの形のカスタマ
イズされた画面を提示することができる。さらに、第1
のソフトウェア・モジュールで配布される実行可能プロ
グラムと、ウェブ・サイトからダウンロードされた後続
のプログラム(第2のソフトウェア・モジュールなど)
を使用して、PCを調べ、インストールされている様々
なタイプの装置、ドライバ、およびアプリケーションを
判断することができる。一実施形態では、1999年6
月18日に出願され、Phoenix Technol
ogies Ltd.に譲渡され、その内容が参照によ
り本明細書に組み込まれる「Method and A
pparatus for Automaticall
y Installing And Cofiguri
ngSoftware on a Computer」
という名称の同時係属出願の米国特許出願第
号に記載されているように、第1のソフトウェ
ア・モジュールを使用して、ユーザのためのショートカ
ットおよび/またはブックマークの識別と、自動作成を
行う。ウェブ・サイトからダウンロードされたプログラ
ムは、ユーザの選好に基づくユーザ・プロファイルの収
集と維持を行うソフトウェアを含むことがある。このよ
うな情報は、インフォメディアリに供給することがで
き、続いてインフォメディアリは、その情報および/ま
たはその情報に基づく編集データの一部を、供給者また
はその他の事業者に転送し、供給者またはその他の事業
者によって提供される情報の更新版または改訂版を入手
することができる。
【0017】図1を参照すると、情報配信システム10
は、1つまたは複数の通信リンク301〜30Nを介して
1つまたは複数のユーザ・コンピュータ・システム40
1〜40N(「40」)に接続されたサービス・センター
20を含む。サービス・センター20は、1つまたは複
数のサーバ22と、1つまたは複数のデータベース24
と、1つまたは複数のコンピュータ261〜26Mとを含
む。1つまたは複数のコンピュータ261〜26Mは、複
数のユーザ・コンピュータ・システム401〜40Nによ
る同時アクセスを行うことができる。複数のコンピュー
タを使用する場合、コンピュータ261〜26Mは、ロー
カル・エリア・ネットワーク(LAN)またはその他の
任意の同様の接続技法によって接続することができる。
しかし、サービス・センター20は他の構成を有するこ
とも可能である。たとえば、より少ない数のより大型の
コンピュータ(すなわち少数のメインフレーム、ミニ・
コンピュータなど)を備え、ユーザ・コンピュータとの
通信リンクを確立することができる大型コンピュータで
複数の内部プログラムまたはプロセスを実行することも
できる。
は、1つまたは複数の通信リンク301〜30Nを介して
1つまたは複数のユーザ・コンピュータ・システム40
1〜40N(「40」)に接続されたサービス・センター
20を含む。サービス・センター20は、1つまたは複
数のサーバ22と、1つまたは複数のデータベース24
と、1つまたは複数のコンピュータ261〜26Mとを含
む。1つまたは複数のコンピュータ261〜26Mは、複
数のユーザ・コンピュータ・システム401〜40Nによ
る同時アクセスを行うことができる。複数のコンピュー
タを使用する場合、コンピュータ261〜26Mは、ロー
カル・エリア・ネットワーク(LAN)またはその他の
任意の同様の接続技法によって接続することができる。
しかし、サービス・センター20は他の構成を有するこ
とも可能である。たとえば、より少ない数のより大型の
コンピュータ(すなわち少数のメインフレーム、ミニ・
コンピュータなど)を備え、ユーザ・コンピュータとの
通信リンクを確立することができる大型コンピュータで
複数の内部プログラムまたはプロセスを実行することも
できる。
【0018】サービス・センター20は、リモート・ネ
ットワーク50(たとえばインターネット)またはリモ
ート・サイト(たとえば、図1に図示されていないサテ
ライト)に接続することもできる。リモート・ネットワ
ーク50またはリモート・サイトによって、サービス・
センター20は、サービス・センター20で記憶するこ
とが可能な、より多様なコンピュータ・ソフトウェア、
コンテンツなどを提供することができる。サービス・セ
ンター・コンピュータ、たとえばコンピュータ261に
接続された1つまたは複数のデータベース24を使用し
て、コンピュータ26上で使用可能なコンピュータ・ソ
フトウェアから成るデータベース項目が記憶される。一
実施形態では、各ユーザ・コンピュータ401〜40
Nは、他のどのコンピュータもアクセスすることができ
ないそれ自体のセキュア・データベース(図示せず)を
有する。通信リンク301〜30Nによって、1つまたは
複数のユーザ・コンピュータ・システム401〜40Nは
コンピュータ261〜26Mに同時に接続することができ
る。これらの接続はサーバ22によって管理される。
ットワーク50(たとえばインターネット)またはリモ
ート・サイト(たとえば、図1に図示されていないサテ
ライト)に接続することもできる。リモート・ネットワ
ーク50またはリモート・サイトによって、サービス・
センター20は、サービス・センター20で記憶するこ
とが可能な、より多様なコンピュータ・ソフトウェア、
コンテンツなどを提供することができる。サービス・セ
ンター・コンピュータ、たとえばコンピュータ261に
接続された1つまたは複数のデータベース24を使用し
て、コンピュータ26上で使用可能なコンピュータ・ソ
フトウェアから成るデータベース項目が記憶される。一
実施形態では、各ユーザ・コンピュータ401〜40
Nは、他のどのコンピュータもアクセスすることができ
ないそれ自体のセキュア・データベース(図示せず)を
有する。通信リンク301〜30Nによって、1つまたは
複数のユーザ・コンピュータ・システム401〜40Nは
コンピュータ261〜26Mに同時に接続することができ
る。これらの接続はサーバ22によって管理される。
【0019】ユーザ・コンピュータ・システム40が情
報サービス・コンピュータ26との双方向通信を確立し
た後、後述する方式でコンテンツがユーザ・コンピュー
タ・システム40に送られる。ダウンロードされるコン
テンツには、ユーザおよび/またはユーザ・コンピュー
タ・システムのハードウェアおよび/またはソフトウェ
アを調べて、ユーザ・プロファイルと、ユーザのシステ
ムのプロファイルとを作成するアプリケーションが含ま
れる。ユーザおよび/またはユーザのコンピュータ・シ
ステムから収集された情報は、その後サービス・センタ
ー20に供給され、サービス・センター20はユーザお
よびシステム・プロファイルに基づいてユーザ・コンピ
ュータ40に追加のコンテンツを供給する。サービス・
コンピュータ26に接続されたデータベースからのデー
タベース項目には、ユーザが利用することができるコン
ピュータ・ソフトウェア、ハードウェア、および第三者
サービスおよび製品に関する情報が含まれる。ユーザお
よび/またはシステム・プロファイルに基づいて、この
コンテンツはさらに、表示のためにユーザ・コンピュー
タに送られる。コンテンツは、既存コンピュータ・ソフ
トウェアのパッチおよび修正、既存コンピュータ・ソフ
トウェアの新バージョン、新品のコンピュータ・ソフト
ウェア、新しいヘルプ・ファイルなどの入手可能性な
ど、情報の一覧も含むことができる。コンテンツはさら
に、ユーザにとって関心のあるハードウェアおよび第三
者製品およびサービスの入手可能性に関する情報も含む
ことができる。その場合、ユーザは、入手可能な製品お
よびサービスの一覧から1つまたは複数の選択を行うこ
とができ、その製品をサービス・コンピュータ26から
ユーザ・コンピュータに転送するように要求することが
できる。あるいは、ユーザは、入手可能な製品およびサ
ービスの一覧から所望の製品またはサービスを購入する
ことができる。
報サービス・コンピュータ26との双方向通信を確立し
た後、後述する方式でコンテンツがユーザ・コンピュー
タ・システム40に送られる。ダウンロードされるコン
テンツには、ユーザおよび/またはユーザ・コンピュー
タ・システムのハードウェアおよび/またはソフトウェ
アを調べて、ユーザ・プロファイルと、ユーザのシステ
ムのプロファイルとを作成するアプリケーションが含ま
れる。ユーザおよび/またはユーザのコンピュータ・シ
ステムから収集された情報は、その後サービス・センタ
ー20に供給され、サービス・センター20はユーザお
よびシステム・プロファイルに基づいてユーザ・コンピ
ュータ40に追加のコンテンツを供給する。サービス・
コンピュータ26に接続されたデータベースからのデー
タベース項目には、ユーザが利用することができるコン
ピュータ・ソフトウェア、ハードウェア、および第三者
サービスおよび製品に関する情報が含まれる。ユーザお
よび/またはシステム・プロファイルに基づいて、この
コンテンツはさらに、表示のためにユーザ・コンピュー
タに送られる。コンテンツは、既存コンピュータ・ソフ
トウェアのパッチおよび修正、既存コンピュータ・ソフ
トウェアの新バージョン、新品のコンピュータ・ソフト
ウェア、新しいヘルプ・ファイルなどの入手可能性な
ど、情報の一覧も含むことができる。コンテンツはさら
に、ユーザにとって関心のあるハードウェアおよび第三
者製品およびサービスの入手可能性に関する情報も含む
ことができる。その場合、ユーザは、入手可能な製品お
よびサービスの一覧から1つまたは複数の選択を行うこ
とができ、その製品をサービス・コンピュータ26から
ユーザ・コンピュータに転送するように要求することが
できる。あるいは、ユーザは、入手可能な製品およびサ
ービスの一覧から所望の製品またはサービスを購入する
ことができる。
【0020】図2に、本発明の実施形態を実施する例示
のコンピュータ・システム100を示す。このコンピュ
ータ・システム100は、ユーザ・コンピュータ・シス
テム401〜40Nおよび/またはコンピュータ261〜
26M(図1)の一実施形態を例示するものであるが、
他の実施形態も容易に使用可能である。
のコンピュータ・システム100を示す。このコンピュ
ータ・システム100は、ユーザ・コンピュータ・シス
テム401〜40Nおよび/またはコンピュータ261〜
26M(図1)の一実施形態を例示するものであるが、
他の実施形態も容易に使用可能である。
【0021】図2を参照すると、コンピュータ・システ
ム100はプロセッサすなわち中央処理装置(CPU)
104を含む。図のCPU104は、演算を行う演算論
理ユニット(ALU)と、データおよび命令の一時記憶
のためのレジスタの集合と、システム100の動作を制
御する制御ユニットとを含む。一実施形態では、CPU
104は、IntelTMCorporationが販売
する×86、PentiumTM、PentiumI
ITM、およびPentium ProTMマイクロプロセ
ッサ、AMDTMが販売するK−6マイクロプロセッサ、
CyrixTMCorp.が販売する6×86MXマイク
ロプロセッサのうちのいずれか1つを含む。他の例とし
て、Digital Equipment Corpo
ration TMが販売するAlphaTMプロセッサ、M
otorolaTMが販売する680×0プロセッサ、ま
たはIBMTMが販売するPower PCTMプロセッサ
などがある。さらに、Sun Microsystem
s、MIPS、IBM、Motorola、NEC、C
yrix、AMD、Nexgen、およびその他の会社
のものを含めて、他の様々なプロセッサのいずれかを使
用してCPU104を実現することもできる。CPU1
40は、マイクロプロセッサには限定されず、マイクロ
コントローラ、ディジタル信号プロセッサ、縮小命令セ
ット・コンピュータ(RISC)、特定用途向け集積回
路、および同様のものなど、他の形態をとることもでき
る。1つのCPU104が図示されているが、コンピュ
ータ・システム100は別法として複数の処理装置を含
むこともできる。
ム100はプロセッサすなわち中央処理装置(CPU)
104を含む。図のCPU104は、演算を行う演算論
理ユニット(ALU)と、データおよび命令の一時記憶
のためのレジスタの集合と、システム100の動作を制
御する制御ユニットとを含む。一実施形態では、CPU
104は、IntelTMCorporationが販売
する×86、PentiumTM、PentiumI
ITM、およびPentium ProTMマイクロプロセ
ッサ、AMDTMが販売するK−6マイクロプロセッサ、
CyrixTMCorp.が販売する6×86MXマイク
ロプロセッサのうちのいずれか1つを含む。他の例とし
て、Digital Equipment Corpo
ration TMが販売するAlphaTMプロセッサ、M
otorolaTMが販売する680×0プロセッサ、ま
たはIBMTMが販売するPower PCTMプロセッサ
などがある。さらに、Sun Microsystem
s、MIPS、IBM、Motorola、NEC、C
yrix、AMD、Nexgen、およびその他の会社
のものを含めて、他の様々なプロセッサのいずれかを使
用してCPU104を実現することもできる。CPU1
40は、マイクロプロセッサには限定されず、マイクロ
コントローラ、ディジタル信号プロセッサ、縮小命令セ
ット・コンピュータ(RISC)、特定用途向け集積回
路、および同様のものなど、他の形態をとることもでき
る。1つのCPU104が図示されているが、コンピュ
ータ・システム100は別法として複数の処理装置を含
むこともできる。
【0022】CPU104は、CPUバス108を介し
てバス・コントローラ112に結合されている。バス・
コントローラ112は、その中に組み込まれたメモリ・
コントローラ116を含むが、メモリ・コントローラ1
16はバス・コントローラ112の外部に置くこともで
きる。メモリ・コントローラ116は、CPU104ま
たはその他の装置によるメモリ・バス120を介したシ
ステム・メモリ124へのアクセスのためのインタフェ
ースである。一実施形態では、システム・メモリ124
は、シンクロナス・ダイナミック・ランダム・アクセス
・メモリ(SDRAM)を含む。システム・メモリ12
4は、任意選択として任意の追加または代替の高速メモ
リ装置またはメモリ回路を含むこともできる。バス・コ
ントローラ112は、たとえばペリフェラル・コンポー
ネント・インターコネクト(PCI)バス、業界標準ア
ーキテクチャ(ISA)バスなどとすることができるシ
ステム・バス128に結合されている。システム・バス
128には、グラフィックス・コントローラ、グラフィ
ックス・エンジンまたはビデオ・コントローラ132、
大容量記憶装置152、通信インタフェース装置15
6、1つまたは複数の入出力(I/O)装置1681〜
168N、および拡張バス・コントローラ172が結合
されている。ビデオ・コントローラ132は、ビデオ・
メモリ136(たとえば8メガバイト)およびビデオB
IOS140に結合され、これらはすべて、番号144
で示されているように単一のカードまたは装置上に集積
することができる。ビデオ・メモリ136は、表示画面
148上に情報を表示するための表示データを入れるた
めに使用され、ビデオBIOS140は、ビデオ・コン
トローラ132を制御するコードおよびビデオ・サービ
スを含む。他の実施形態では、ビデオ・コントローラ1
32は、アドバンスド・グラフィックス・ポート(AG
P)バスを介してCPU104に結合される。
てバス・コントローラ112に結合されている。バス・
コントローラ112は、その中に組み込まれたメモリ・
コントローラ116を含むが、メモリ・コントローラ1
16はバス・コントローラ112の外部に置くこともで
きる。メモリ・コントローラ116は、CPU104ま
たはその他の装置によるメモリ・バス120を介したシ
ステム・メモリ124へのアクセスのためのインタフェ
ースである。一実施形態では、システム・メモリ124
は、シンクロナス・ダイナミック・ランダム・アクセス
・メモリ(SDRAM)を含む。システム・メモリ12
4は、任意選択として任意の追加または代替の高速メモ
リ装置またはメモリ回路を含むこともできる。バス・コ
ントローラ112は、たとえばペリフェラル・コンポー
ネント・インターコネクト(PCI)バス、業界標準ア
ーキテクチャ(ISA)バスなどとすることができるシ
ステム・バス128に結合されている。システム・バス
128には、グラフィックス・コントローラ、グラフィ
ックス・エンジンまたはビデオ・コントローラ132、
大容量記憶装置152、通信インタフェース装置15
6、1つまたは複数の入出力(I/O)装置1681〜
168N、および拡張バス・コントローラ172が結合
されている。ビデオ・コントローラ132は、ビデオ・
メモリ136(たとえば8メガバイト)およびビデオB
IOS140に結合され、これらはすべて、番号144
で示されているように単一のカードまたは装置上に集積
することができる。ビデオ・メモリ136は、表示画面
148上に情報を表示するための表示データを入れるた
めに使用され、ビデオBIOS140は、ビデオ・コン
トローラ132を制御するコードおよびビデオ・サービ
スを含む。他の実施形態では、ビデオ・コントローラ1
32は、アドバンスド・グラフィックス・ポート(AG
P)バスを介してCPU104に結合される。
【0023】大容量記憶装置152として、ハード・デ
ィスク、フロッピィ・ディスク、CD−ROM、DVD
−ROM、テープ、高密度フロッピィ、高容量取外し可
能媒体、低容量取外し可能媒体、半導体メモリ装置(s
olid state memory device)
など、およびこれらの組合せが含まれる(ただしこれら
には限定されない)。大容量記憶装置152は、他の任
意の大容量記憶媒体を含むことができる。通信インタフ
ェース装置156としては、通信リンク160を介して
ネットワーク164にアクセスするためのネットワーク
・カード、モデム・インタフェースなどがある。I/O
装置1681〜168Nには、キーボード、マウス、オー
ディオ/サウンド・カード、プリンタ、および同様のも
のが含まれる。I/O装置1681〜168Nは、コンパ
クト・ディスク・ドライブ、ディジタル・ディスク・ド
ライブ、テープ・ドライブ、ジップ・ドライブ、ジャズ
・ドライブ、ディジタル・ビデオ・ディスク(DVD)
ドライブ、半導体メモリ装置、光磁気ディスク・ドライ
ブ、高密度フロッピィ・ドライブ、高容量取外し可能媒
体ドライブ、低容量媒体装置、および/またはこれらの
任意の組合せなどのディスク・ドライブとすることがで
きる。拡張バス・コントローラ172は、システム・フ
ァームウェア176を含む不揮発性メモリ175に結合
されている。システム・ファームウェア176は、特に
コンピュータ・システム100内のハードウェア装置を
制御する、システムBIOS82を含む。システム・フ
ァームウェア176は、ROM180およびフラッシュ
(またはEEPROM)184も含む。拡張バス・コン
トローラ172は、RAM、ROM、および/またはフ
ラッシュ・メモリ(図示せず)を有する拡張メモリ18
8にも結合されている。システム1100は、さらに、
バス・コントローラ112に結合されたメモリ・モジュ
ール190も含むことができる。一実施形態では、メモ
リ・モジュール190はROM192およびフラッシュ
(またはEEPROM)194を含む。
ィスク、フロッピィ・ディスク、CD−ROM、DVD
−ROM、テープ、高密度フロッピィ、高容量取外し可
能媒体、低容量取外し可能媒体、半導体メモリ装置(s
olid state memory device)
など、およびこれらの組合せが含まれる(ただしこれら
には限定されない)。大容量記憶装置152は、他の任
意の大容量記憶媒体を含むことができる。通信インタフ
ェース装置156としては、通信リンク160を介して
ネットワーク164にアクセスするためのネットワーク
・カード、モデム・インタフェースなどがある。I/O
装置1681〜168Nには、キーボード、マウス、オー
ディオ/サウンド・カード、プリンタ、および同様のも
のが含まれる。I/O装置1681〜168Nは、コンパ
クト・ディスク・ドライブ、ディジタル・ディスク・ド
ライブ、テープ・ドライブ、ジップ・ドライブ、ジャズ
・ドライブ、ディジタル・ビデオ・ディスク(DVD)
ドライブ、半導体メモリ装置、光磁気ディスク・ドライ
ブ、高密度フロッピィ・ドライブ、高容量取外し可能媒
体ドライブ、低容量媒体装置、および/またはこれらの
任意の組合せなどのディスク・ドライブとすることがで
きる。拡張バス・コントローラ172は、システム・フ
ァームウェア176を含む不揮発性メモリ175に結合
されている。システム・ファームウェア176は、特に
コンピュータ・システム100内のハードウェア装置を
制御する、システムBIOS82を含む。システム・フ
ァームウェア176は、ROM180およびフラッシュ
(またはEEPROM)184も含む。拡張バス・コン
トローラ172は、RAM、ROM、および/またはフ
ラッシュ・メモリ(図示せず)を有する拡張メモリ18
8にも結合されている。システム1100は、さらに、
バス・コントローラ112に結合されたメモリ・モジュ
ール190も含むことができる。一実施形態では、メモ
リ・モジュール190はROM192およびフラッシュ
(またはEEPROM)194を含む。
【0024】当業者には周知のように、コンピュータ・
システム100はさらにオペレーティング・システム
(OS)と少なくとも1つのアプリケーション・プログ
ラムとを含み、これらは、一実施形態ではPOST後に
大容量記憶装置152からシステム・メモリ124にロ
ードされ、始動される。OSとしては、たとえば、DO
S、WindowsTM(たとえばWindows9
5TM、Windows98TM、Windows N
TTM)、Unix、Linux、OS/2、OS/9、
Xenixなどを含めて、任意のタイプのOSがある。
オペレーティング・システムは、コンピュータ・システ
ムの動作と資源の割り振りを制御する1つまたは複数の
プログラムのセットである。アプリケーション・プログ
ラムは、ユーザが希望するタスクを実行する1つまたは
複数のソフトウェア・プログラムのセットである。
システム100はさらにオペレーティング・システム
(OS)と少なくとも1つのアプリケーション・プログ
ラムとを含み、これらは、一実施形態ではPOST後に
大容量記憶装置152からシステム・メモリ124にロ
ードされ、始動される。OSとしては、たとえば、DO
S、WindowsTM(たとえばWindows9
5TM、Windows98TM、Windows N
TTM)、Unix、Linux、OS/2、OS/9、
Xenixなどを含めて、任意のタイプのOSがある。
オペレーティング・システムは、コンピュータ・システ
ムの動作と資源の割り振りを制御する1つまたは複数の
プログラムのセットである。アプリケーション・プログ
ラムは、ユーザが希望するタスクを実行する1つまたは
複数のソフトウェア・プログラムのセットである。
【0025】コンピュータ・プログラミングの業者の慣
行に従って、特に明記しない限り、コンピュータ・シス
テム100によって実行される動作のシンボリック表現
に言及しながら本発明について以下に説明する。このよ
うな動作は、コンピュータにより実行されるものとして
記載する場合がある。シンボリックに表現される動作に
は、データ・ビットを表す電気信号のCPU104によ
る操作およびシステム・メモリ124内の記憶場所にお
けるデータ・ビットの維持と、信号のその他の処理が含
まれることがわかるであろう。データ・ビットが維持さ
れる記憶場所は、データ・ビットに対応する特定の電
気、磁気、光学、または有機特性を有する物理的な場所
である。
行に従って、特に明記しない限り、コンピュータ・シス
テム100によって実行される動作のシンボリック表現
に言及しながら本発明について以下に説明する。このよ
うな動作は、コンピュータにより実行されるものとして
記載する場合がある。シンボリックに表現される動作に
は、データ・ビットを表す電気信号のCPU104によ
る操作およびシステム・メモリ124内の記憶場所にお
けるデータ・ビットの維持と、信号のその他の処理が含
まれることがわかるであろう。データ・ビットが維持さ
れる記憶場所は、データ・ビットに対応する特定の電
気、磁気、光学、または有機特性を有する物理的な場所
である。
【0026】ソフトウェアに実装される場合、本発明の
各要素は、本質的に、必要なタスクを実行するためのコ
ード・セグメントである。プログラムまたはコード・セ
グメントは、プロセッサ可読媒体に記憶するか、または
伝送媒体または通信リンクを介して、搬送波で実施され
たコンピュータ・データ信号によって伝送することがで
きる。「プロセッサ可読媒体」には、情報を記憶または
伝送することができる任意の媒体を含めることができ
る。プロセッサ可読媒体の例としては、電子回路、半導
体メモリ装置、ROM、フラッシュ・メモリ、消去可能
ROM(EROM)、フロッピィ・ディスケット、CD
−ROM、光ディスク、ハード・ディスク、光ファイバ
媒体、無線周波(RF)リンクなどがある。コンピュー
タ・データ信号には、電子ネットワーク・チャネル、光
ファイバ、空気、電磁気、RFリンクなどの伝送媒体を
介して伝播可能な任意の信号が含まれる。コード・セグ
メントは、インターネット、イントラネットなどのコン
ピュータ・ネットワークを介してダウンロードすること
ができる。
各要素は、本質的に、必要なタスクを実行するためのコ
ード・セグメントである。プログラムまたはコード・セ
グメントは、プロセッサ可読媒体に記憶するか、または
伝送媒体または通信リンクを介して、搬送波で実施され
たコンピュータ・データ信号によって伝送することがで
きる。「プロセッサ可読媒体」には、情報を記憶または
伝送することができる任意の媒体を含めることができ
る。プロセッサ可読媒体の例としては、電子回路、半導
体メモリ装置、ROM、フラッシュ・メモリ、消去可能
ROM(EROM)、フロッピィ・ディスケット、CD
−ROM、光ディスク、ハード・ディスク、光ファイバ
媒体、無線周波(RF)リンクなどがある。コンピュー
タ・データ信号には、電子ネットワーク・チャネル、光
ファイバ、空気、電磁気、RFリンクなどの伝送媒体を
介して伝播可能な任意の信号が含まれる。コード・セグ
メントは、インターネット、イントラネットなどのコン
ピュータ・ネットワークを介してダウンロードすること
ができる。
【0027】図3に、コンピュータ・システム100の
論理図を示す。図2および図3を参照すると、システム
・ファームウェア176は、POST中にシステム・メ
モリ124にロードされ、その後プロセッサ104によ
って実行される、ソフトウェア・モジュールおよびデー
タを含む。一実施形態では、システム・ファームウェア
176は、システムBIOSハンドラ、ハードウェア・
ルーチンなどを有するシステムBIOSモジュール82
と、ROMアプリケーション・プログラム・インタフェ
ース(RAPI)モジュール84と、初期スタートアッ
プ・アプリケーション(ISUA)モジュール86と、
初期ペイロード88aと、暗号鍵90と、暗号エンジン
92と、表示エンジン94とを含む。システム・ファー
ムウェア176の上記各モジュールおよび部分は、RO
M180および/またはフラッシュ184に入れること
ができる。あるいは、システム・ファームウェア176
の上記モジュールおよび部分は、ROM190および/
またはフラッシュ194に入れることができる。RAP
I84、ISUA86、および初期ペイロード88a
は、それぞれ別々に作成し、コンピュータ・システム1
00の最初の使用の前にシステム・ファームウェア17
6に記憶することができる。一実施形態では、RAPI
84、ISUA86、および初期ペイロード88aは、
それぞれ、Phoenix Tehnologies,
Ltd.によって開発されたプロプライエタリ・ソフト
ウェアを含む。
論理図を示す。図2および図3を参照すると、システム
・ファームウェア176は、POST中にシステム・メ
モリ124にロードされ、その後プロセッサ104によ
って実行される、ソフトウェア・モジュールおよびデー
タを含む。一実施形態では、システム・ファームウェア
176は、システムBIOSハンドラ、ハードウェア・
ルーチンなどを有するシステムBIOSモジュール82
と、ROMアプリケーション・プログラム・インタフェ
ース(RAPI)モジュール84と、初期スタートアッ
プ・アプリケーション(ISUA)モジュール86と、
初期ペイロード88aと、暗号鍵90と、暗号エンジン
92と、表示エンジン94とを含む。システム・ファー
ムウェア176の上記各モジュールおよび部分は、RO
M180および/またはフラッシュ184に入れること
ができる。あるいは、システム・ファームウェア176
の上記モジュールおよび部分は、ROM190および/
またはフラッシュ194に入れることができる。RAP
I84、ISUA86、および初期ペイロード88a
は、それぞれ別々に作成し、コンピュータ・システム1
00の最初の使用の前にシステム・ファームウェア17
6に記憶することができる。一実施形態では、RAPI
84、ISUA86、および初期ペイロード88aは、
それぞれ、Phoenix Tehnologies,
Ltd.によって開発されたプロプライエタリ・ソフト
ウェアを含む。
【0028】RAPI84は一般に、ROMアプリケー
ション・プログラムとシステムBIOS82との間の安
全保護されたインタフェースを実現する。RAPI84
の一実施形態については、以下で図8から図18および
それに付随する本文で説明する。ISUA86について
は、1999年6月18日に出願され、Phoenix
Technologies,Ltd.に譲渡され、参
照により本明細書に組み込まれる「Method an
d Apparatus for Automatic
ally Installing and Confi
guringSoftware on a Compu
ter」という名称の同時係属出願の米国特許出願第
号に記載されている。
ション・プログラムとシステムBIOS82との間の安
全保護されたインタフェースを実現する。RAPI84
の一実施形態については、以下で図8から図18および
それに付随する本文で説明する。ISUA86について
は、1999年6月18日に出願され、Phoenix
Technologies,Ltd.に譲渡され、参
照により本明細書に組み込まれる「Method an
d Apparatus for Automatic
ally Installing and Confi
guringSoftware on a Compu
ter」という名称の同時係属出願の米国特許出願第
号に記載されている。
【0029】仮想メモリから物理メモリの内容にアクセ
スして実行する本発明の1つの局面は、図2に示され
る、処理システム100にインストールされたオペレー
ティング・システムに関連して説明される。図4は、本
発明のシステムと方法を利用する処理システムのアーキ
テクチャを示す総合的な機能ブロック図である。処理シ
ステム100は、アプリケーション・プログラム232
とサービス234をサポートするオペレーティング・シ
ステム230、基本入力/出力システム(「BIO
S」)236、およびシステム・ハードウェア238か
ら成る。BIOS 236は、コンソール(キーボード
とディスプレイ)、汎用プリンタ、補助装置(シリアル
・ポート)、コンピュータのクロック、および起動ディ
スク装置などのハードウェア装置用の、ドライバまたは
ソフトウェア・インタフェースを集めたものである。B
IOS 236は、一般にプログラム可能な読み出し専
用メモリ(ROM)に組み込まれる。しばしば、BIO
S関数自体は、物理メモリのより高速なアクセス時間を
利用して、実際にROMから物理メモリにコピーされ
る。これはBIOS 236の「シャドーイング」とし
て知られる。その理由は、BIOS 236には結果と
して2つのコピーがあるからである(1つはROM(こ
れ以上使用されない)にあり、もう1つは物理メモリに
ある)。BIOS 236を格納する物理メモリの部分
は、BIOSシャドー空間として知られる。Windo
ws NTのようなオペレーティング・システムは、オ
ペレーティング・システムの起動後および実行中にBI
OS 236を使用しない。Windows NTオペ
レーティング・システムにあるカーネル・レベルのドラ
イバは、システム・ハードウェアと直接インタフェース
をとる。本発明は、システム・ハードウェア238とオ
ペレーティング・システム232との間のインタフェー
スとしてBIOS 236の使用を容易にする。
スして実行する本発明の1つの局面は、図2に示され
る、処理システム100にインストールされたオペレー
ティング・システムに関連して説明される。図4は、本
発明のシステムと方法を利用する処理システムのアーキ
テクチャを示す総合的な機能ブロック図である。処理シ
ステム100は、アプリケーション・プログラム232
とサービス234をサポートするオペレーティング・シ
ステム230、基本入力/出力システム(「BIO
S」)236、およびシステム・ハードウェア238か
ら成る。BIOS 236は、コンソール(キーボード
とディスプレイ)、汎用プリンタ、補助装置(シリアル
・ポート)、コンピュータのクロック、および起動ディ
スク装置などのハードウェア装置用の、ドライバまたは
ソフトウェア・インタフェースを集めたものである。B
IOS 236は、一般にプログラム可能な読み出し専
用メモリ(ROM)に組み込まれる。しばしば、BIO
S関数自体は、物理メモリのより高速なアクセス時間を
利用して、実際にROMから物理メモリにコピーされ
る。これはBIOS 236の「シャドーイング」とし
て知られる。その理由は、BIOS 236には結果と
して2つのコピーがあるからである(1つはROM(こ
れ以上使用されない)にあり、もう1つは物理メモリに
ある)。BIOS 236を格納する物理メモリの部分
は、BIOSシャドー空間として知られる。Windo
ws NTのようなオペレーティング・システムは、オ
ペレーティング・システムの起動後および実行中にBI
OS 236を使用しない。Windows NTオペ
レーティング・システムにあるカーネル・レベルのドラ
イバは、システム・ハードウェアと直接インタフェース
をとる。本発明は、システム・ハードウェア238とオ
ペレーティング・システム232との間のインタフェー
スとしてBIOS 236の使用を容易にする。
【0030】オペレーティング・システム230には、
アプリケーション・プログラム232およびサービス2
34とインタフェースをとるクラス・ドライバ240、
およびI/Oマネージャ242が含まれる。I/Oマネ
ージャ242は、アプリケーション・プログラム232
とサービス234からのI/O要求(クラス・ドライバ
240を通じて作成される)を、カーネル244内に位
置する様々なドライバ・ルーチンに対して適切に順序付
けした呼び出しに変換する。特に、入出力要求を受信し
たとき、I/Oマネージャ242は要求の関数コードを
使用して、カーネル244に位置するドライバ内にある
いくつかのディスパッチ・ルーチンの1つを呼び出す。
カーネル244は、システム関数と呼ばれる、ハードウ
ェアから独立した関数を提供する。これらの関数は、ソ
フトウェア割り込みによってアクセスされる。カーネル
244によって提供される関数には、特に、ファイルと
ディレクトリの管理、メモリ管理、キャラクタ装置入力
/出力、および時刻と日付のサポートなどが含まれる。
1つの実施形態では、オペレーティング・システムはW
indows NTオペレーティング・システムであ
る。代替の実施形態では、オペレーティング・システム
230には、Solarisオペレーティング・システ
ムもしくはAIXオペレーティング・システム、または
要求時ページング仮想メモリ・サブシステムに基づくそ
の他のオペレーティング・システムなどが含まれる。
アプリケーション・プログラム232およびサービス2
34とインタフェースをとるクラス・ドライバ240、
およびI/Oマネージャ242が含まれる。I/Oマネ
ージャ242は、アプリケーション・プログラム232
とサービス234からのI/O要求(クラス・ドライバ
240を通じて作成される)を、カーネル244内に位
置する様々なドライバ・ルーチンに対して適切に順序付
けした呼び出しに変換する。特に、入出力要求を受信し
たとき、I/Oマネージャ242は要求の関数コードを
使用して、カーネル244に位置するドライバ内にある
いくつかのディスパッチ・ルーチンの1つを呼び出す。
カーネル244は、システム関数と呼ばれる、ハードウ
ェアから独立した関数を提供する。これらの関数は、ソ
フトウェア割り込みによってアクセスされる。カーネル
244によって提供される関数には、特に、ファイルと
ディレクトリの管理、メモリ管理、キャラクタ装置入力
/出力、および時刻と日付のサポートなどが含まれる。
1つの実施形態では、オペレーティング・システムはW
indows NTオペレーティング・システムであ
る。代替の実施形態では、オペレーティング・システム
230には、Solarisオペレーティング・システ
ムもしくはAIXオペレーティング・システム、または
要求時ページング仮想メモリ・サブシステムに基づくそ
の他のオペレーティング・システムなどが含まれる。
【0031】本発明では、カーネル244内に配置され
るアクセス・ドライバ246が提供される。アクセス・
ドライバ246は、BIOS 236に位置するBIO
Sデータにアクセスする役割を果たす。または、BIO
S 236を通じてシステム・ハードウェア238のデ
ータにアクセスする役割を果たす。アクセス・ドライバ
246は、関連するBIOS関数を実行するだけではな
く、BIOS関数アドレスのロケーションにアクセスす
る役割も果たす。1つの好ましい実施形態では、アクセ
ス・ドライバ244はC言語で記述されたソース・コー
ドから成る。その他のアセンブリ言語も、アクセス・ド
ライバ244の関数の実装に利用できることが理解され
る。BIOSのデータとアドレスは、一般に物理メモリ
250に配置され、アクセス・ドライバ246によって
BIOSインタフェース248を通じてアクセスされ
る。1つの実施形態では、アクセス・ドライバ246
は、BIOSシャドー空間内の、一般に物理アドレス0
x000E0000から0x000FFFFFまでのコ
ードを実行する。
るアクセス・ドライバ246が提供される。アクセス・
ドライバ246は、BIOS 236に位置するBIO
Sデータにアクセスする役割を果たす。または、BIO
S 236を通じてシステム・ハードウェア238のデ
ータにアクセスする役割を果たす。アクセス・ドライバ
246は、関連するBIOS関数を実行するだけではな
く、BIOS関数アドレスのロケーションにアクセスす
る役割も果たす。1つの好ましい実施形態では、アクセ
ス・ドライバ244はC言語で記述されたソース・コー
ドから成る。その他のアセンブリ言語も、アクセス・ド
ライバ244の関数の実装に利用できることが理解され
る。BIOSのデータとアドレスは、一般に物理メモリ
250に配置され、アクセス・ドライバ246によって
BIOSインタフェース248を通じてアクセスされ
る。1つの実施形態では、アクセス・ドライバ246
は、BIOSシャドー空間内の、一般に物理アドレス0
x000E0000から0x000FFFFFまでのコ
ードを実行する。
【0032】例として、アクセス・ドライバ246が物
理メモリのアドレス0x00000000に位置するB
IOS関数に対してアクセスが必要な場合を考える。ア
クセス・ドライバ246は、I/Oマネージャ242に
対して呼び出しを行い、物理アドレス0x000000
00から0x00000FFFまでのメモリ空間をその
仮想メモリ空間にマップするように要求する。次に、I
/Oマネージャ242は、アクセス・ドライバ246の
仮想メモリ空間にポインタを返す(たとえば、0xfd
268000)。アクセス・ドライバは、この時点で物
理アドレス0x00000000のアドレス空間を、そ
の仮想アドレス0xfd268000に基づいてまたは
基準にすることによって参照することができる。したが
って、物理アドレス0x2400に位置する関数にアク
セスする場合、使用される仮想アドレスは0xfd26
82400となる。
理メモリのアドレス0x00000000に位置するB
IOS関数に対してアクセスが必要な場合を考える。ア
クセス・ドライバ246は、I/Oマネージャ242に
対して呼び出しを行い、物理アドレス0x000000
00から0x00000FFFまでのメモリ空間をその
仮想メモリ空間にマップするように要求する。次に、I
/Oマネージャ242は、アクセス・ドライバ246の
仮想メモリ空間にポインタを返す(たとえば、0xfd
268000)。アクセス・ドライバは、この時点で物
理アドレス0x00000000のアドレス空間を、そ
の仮想アドレス0xfd268000に基づいてまたは
基準にすることによって参照することができる。したが
って、物理アドレス0x2400に位置する関数にアク
セスする場合、使用される仮想アドレスは0xfd26
82400となる。
【0033】1つの好ましい実施形態では、一連のエン
トリ・ポイントまたは関数呼び出しは、アクセス・ドラ
イバ246を利用する、アプリケーション・プログラム
230、サービス232、またはクラス・ドライバ24
0に対して利用可能である。アクセス・ドライバ246
は、オープンやクローズが可能であるとともに、これら
のエントリ・ポイントを通じて入力/出力(「I/
O」)制御コード(「IOCTL」)を受信することが
できる。表1は、アクセス・ドライバ246の構造、エ
ントリ・ポイント、およびアプリケーションを示す。
トリ・ポイントまたは関数呼び出しは、アクセス・ドラ
イバ246を利用する、アプリケーション・プログラム
230、サービス232、またはクラス・ドライバ24
0に対して利用可能である。アクセス・ドライバ246
は、オープンやクローズが可能であるとともに、これら
のエントリ・ポイントを通じて入力/出力(「I/
O」)制御コード(「IOCTL」)を受信することが
できる。表1は、アクセス・ドライバ246の構造、エ
ントリ・ポイント、およびアプリケーションを示す。
【0034】図5は、本発明の原理に従って提供される
アクセス・ドライバ246の初期化プロセスを示すブロ
ック図である。一般に、アクセス・ドライバ246が最
初にロードされるとき、そのDriverEntry関
数(表1を参照)が実行される。この関数ではいくつか
の他の初期化が行われるが(アクセス・ドライバ246
の正常な動作を目的とした様々なリソースまたはオブジ
ェクトの割り当てなど)、特に重要な初期化は次の2箇
所で行われる。(a)物理メモリ250に位置するBI
OSシャドー・エリア260(BIOSサービス・ディ
レクトリ62を含む)、および(b)同じく物理メモリ
250に位置するBIOSデータ・エリア264であ
り、両方とも仮想メモリにマップされる(アクセス・ド
ライバ246のBIOSシャドー・エリア270(BI
OSサービス・ディレクトリ272とBIOSデータ・
エリア74を含む)として図5に示される)。その結
果、アプリケーション・プログラム232またはサービ
ス2234は、クラス・ドライバ240を通じて、仮想
アドレッシングを使用してBIOS関数にアクセスした
りまたは実行したりすることができる。BIOS 23
6の物理アドレス空間はアクセス・ドライバ246のみ
にマップされるため、BIOS関数はアクセス・ドライ
バ246から実行されなければならないことに注意しな
ければならない。加えて、アクセス・ドライバ246
は、AppendixAに詳細に説明される32ビット
BIOS電源管理サービス・インタフェースの実装によ
って利用することができる。BIOS電源管理サービス
・インタフェースが64ビット、128ビット、および
256ビットのコンフィギュレーションでも実装できる
ことは、当該技術に熟練した人々にとって明白である。
アクセス・ドライバ246も、64ビット、128ビッ
ト、および256ビットのコンフィギュレーションによ
る動作が可能である。
アクセス・ドライバ246の初期化プロセスを示すブロ
ック図である。一般に、アクセス・ドライバ246が最
初にロードされるとき、そのDriverEntry関
数(表1を参照)が実行される。この関数ではいくつか
の他の初期化が行われるが(アクセス・ドライバ246
の正常な動作を目的とした様々なリソースまたはオブジ
ェクトの割り当てなど)、特に重要な初期化は次の2箇
所で行われる。(a)物理メモリ250に位置するBI
OSシャドー・エリア260(BIOSサービス・ディ
レクトリ62を含む)、および(b)同じく物理メモリ
250に位置するBIOSデータ・エリア264であ
り、両方とも仮想メモリにマップされる(アクセス・ド
ライバ246のBIOSシャドー・エリア270(BI
OSサービス・ディレクトリ272とBIOSデータ・
エリア74を含む)として図5に示される)。その結
果、アプリケーション・プログラム232またはサービ
ス2234は、クラス・ドライバ240を通じて、仮想
アドレッシングを使用してBIOS関数にアクセスした
りまたは実行したりすることができる。BIOS 23
6の物理アドレス空間はアクセス・ドライバ246のみ
にマップされるため、BIOS関数はアクセス・ドライ
バ246から実行されなければならないことに注意しな
ければならない。加えて、アクセス・ドライバ246
は、AppendixAに詳細に説明される32ビット
BIOS電源管理サービス・インタフェースの実装によ
って利用することができる。BIOS電源管理サービス
・インタフェースが64ビット、128ビット、および
256ビットのコンフィギュレーションでも実装できる
ことは、当該技術に熟練した人々にとって明白である。
アクセス・ドライバ246も、64ビット、128ビッ
ト、および256ビットのコンフィギュレーションによ
る動作が可能である。
【0035】特に、アクセス・ドライバ246は、初期
設定中、物理メモリ250に位置するBIOSシャドー
・エリア260とBIOSデータ・エリア264のある
位置を特定する。BIOSシャドー・エリア260とB
IOSデータ・エリア264は、アクセス・ドライバ2
46の仮想アドレス空間にマップされる。次に、アクセ
ス・ドライバ246は、BIOSサービス・ディレクト
リ272のヘッダーに対する検索を実行する。BIOS
サービス・ディレクトリ272を見付けて検証したら、
アクセス・ドライバ246はBIOSサービス・ディレ
クトリ272のヘッダーの仮想アドレスを取得する。こ
の仮想アドレスによって、BIOSシャドー・エリア2
70の基底仮想アドレスからの、BIOSサービス・デ
ィレクトリ272のヘッダーが有する仮想アドレスのオ
フセットが提供される。
設定中、物理メモリ250に位置するBIOSシャドー
・エリア260とBIOSデータ・エリア264のある
位置を特定する。BIOSシャドー・エリア260とB
IOSデータ・エリア264は、アクセス・ドライバ2
46の仮想アドレス空間にマップされる。次に、アクセ
ス・ドライバ246は、BIOSサービス・ディレクト
リ272のヘッダーに対する検索を実行する。BIOS
サービス・ディレクトリ272を見付けて検証したら、
アクセス・ドライバ246はBIOSサービス・ディレ
クトリ272のヘッダーの仮想アドレスを取得する。こ
の仮想アドレスによって、BIOSシャドー・エリア2
70の基底仮想アドレスからの、BIOSサービス・デ
ィレクトリ272のヘッダーが有する仮想アドレスのオ
フセットが提供される。
【0036】代替の実施形態では、アクセス・ドライバ
は、初期設定中、物理メモリ250に位置する、BIO
Sシャドー・エリア260、BIOSデータ・エリア2
64、およびBIOS ROMエリアのある位置を特定
する。BIOSシャドー・エリア260、BIOSデー
タ・エリア264、およびBIOS ROMエリアは、
アクセス・ドライバ246の仮想アドレス空間にマップ
される。次に、アクセス・ドライバ246は、BIOS
サービス・ディレクトリ272のヘッダーに対する検索
を実行する。BIOSサービス・ディレクトリ272を
見付けて検証したら、アクセス・ドライバ246はBI
OSサービス・ディレクトリ272のヘッダーの仮想ア
ドレスを取得する。この代替の実施形態では、アクセス
・ドライバ246の仮想メモリ空間内におけるBIOS
ROMエリアの可用性によって、アクセス・ドライバ
246はフラッシュROM内のデータの読み取りおよび
/または書き込みを行うことができる。その結果、BI
OS ROMの再フラッシュまたは書き換えが可能とな
る。さらに、ハードウェアとインタフェースをとる外部
のアプリケーション・プログラムは、Appendix
Bに示されるPhoenixPhlash NT仕様に
説明されるようなソフトウェア機構を通じてBIOS
ROMエリアにアクセスすることができる。
は、初期設定中、物理メモリ250に位置する、BIO
Sシャドー・エリア260、BIOSデータ・エリア2
64、およびBIOS ROMエリアのある位置を特定
する。BIOSシャドー・エリア260、BIOSデー
タ・エリア264、およびBIOS ROMエリアは、
アクセス・ドライバ246の仮想アドレス空間にマップ
される。次に、アクセス・ドライバ246は、BIOS
サービス・ディレクトリ272のヘッダーに対する検索
を実行する。BIOSサービス・ディレクトリ272を
見付けて検証したら、アクセス・ドライバ246はBI
OSサービス・ディレクトリ272のヘッダーの仮想ア
ドレスを取得する。この代替の実施形態では、アクセス
・ドライバ246の仮想メモリ空間内におけるBIOS
ROMエリアの可用性によって、アクセス・ドライバ
246はフラッシュROM内のデータの読み取りおよび
/または書き込みを行うことができる。その結果、BI
OS ROMの再フラッシュまたは書き換えが可能とな
る。さらに、ハードウェアとインタフェースをとる外部
のアプリケーション・プログラムは、Appendix
Bに示されるPhoenixPhlash NT仕様に
説明されるようなソフトウェア機構を通じてBIOS
ROMエリアにアクセスすることができる。
【0037】後に、アクセス・ドライバ246内の実行
関数に対する呼び出しは、BIOS自体の要求されるエ
ントリ・ポイントを呼び出すための、BIOSシャドー
・エリア270の基底仮想アドレスとオフセットを利用
する。アプリケーション・プログラム232またはサー
ビス234は、BIOSサービス・ディレクトリ272
を通じてのみでなく、BIOSの仮想アドレス空間のい
ずれにおいてもBIOS関数を実行できることに注意す
る必要がある。
関数に対する呼び出しは、BIOS自体の要求されるエ
ントリ・ポイントを呼び出すための、BIOSシャドー
・エリア270の基底仮想アドレスとオフセットを利用
する。アプリケーション・プログラム232またはサー
ビス234は、BIOSサービス・ディレクトリ272
を通じてのみでなく、BIOSの仮想アドレス空間のい
ずれにおいてもBIOS関数を実行できることに注意す
る必要がある。
【0038】1つの実施形態では、BIOS内の要求さ
れるエントリ・ポイントを呼び出す目的で呼び出される
実行関数は、IOCTL_BIOS_EXEC関数であ
る(表1に説明される)。IOCTL_BIOS_EX
EC関数は、主メモリまたはDRAMに位置するバッフ
ァ(アプリケーション・プログラム232またはサービ
ス234を呼び出すことによって指定される)の中にレ
ジスタ・スタックを作成する。BIOS関数が呼び出さ
れるとき、スタックの内容は所望のレジスタ値である。
アクセス・ドライバ246は、呼び出すアプリケーショ
ン・プログラム232またはサービス234からレジス
タ・スタックを渡す。プロシージャの呼び出し自体は、
BIOSサービス・ディレクトリ272に指定された関
数へのポインタを使用して実行される。1つの実施形態
では、IOCTL_BIOS_EXECによって呼び出
されたBIOS関数は、4バイトの署名を引数として受
け入れ、署名と関連付けられたBIOS関数のある位置
を特定する。呼び出すアプリケーション・プログラム2
32またはサービス234に返す値には、BIOS関数
の基底仮想アドレス、およびサービスのエントリ・ポイ
ントの基底アドレスからのオフセットが含まれる。
れるエントリ・ポイントを呼び出す目的で呼び出される
実行関数は、IOCTL_BIOS_EXEC関数であ
る(表1に説明される)。IOCTL_BIOS_EX
EC関数は、主メモリまたはDRAMに位置するバッフ
ァ(アプリケーション・プログラム232またはサービ
ス234を呼び出すことによって指定される)の中にレ
ジスタ・スタックを作成する。BIOS関数が呼び出さ
れるとき、スタックの内容は所望のレジスタ値である。
アクセス・ドライバ246は、呼び出すアプリケーショ
ン・プログラム232またはサービス234からレジス
タ・スタックを渡す。プロシージャの呼び出し自体は、
BIOSサービス・ディレクトリ272に指定された関
数へのポインタを使用して実行される。1つの実施形態
では、IOCTL_BIOS_EXECによって呼び出
されたBIOS関数は、4バイトの署名を引数として受
け入れ、署名と関連付けられたBIOS関数のある位置
を特定する。呼び出すアプリケーション・プログラム2
32またはサービス234に返す値には、BIOS関数
の基底仮想アドレス、およびサービスのエントリ・ポイ
ントの基底アドレスからのオフセットが含まれる。
【0039】ここで、アクセス・ドライバ246の構
造、エントリ関数、およびアプリケーションに関する一
般的な考察を行う。
造、エントリ関数、およびアプリケーションに関する一
般的な考察を行う。
【表1】
【表2】
【0040】A.アクセス・ドライバ246の関数の詳
細な説明 1.「DriverEntrv」関数 このエントリ・ポイントによって、ドライバは、その正
常な動作のために、その変数を初期化してBIOSシャ
ドーとデータ・エリア内にマップするとともに、リソー
スを割り当てる。リソースまたはオブジェクトがそれぞ
れ割り当てられるとき、それらは可変の「phResA
ndFlags」内に作表される。これによって、単一
の関数(「freeResources」)は、ドライ
バがアンロードされる理由にかかわらずドライバによっ
て使用されるリソースを解放することができる。割り当
てられるまたは接続されるリソースを以下に示す。 a.装置・オブジェクトを作成する − システムによ
って装置・オブジェクトと名前を確立する。 b.エラーロギングを初期化する − イベント・ログ
・サービスに対するリンクを作成する。 c.主要な関数のエントリ・ポイントを設定する。 d.シンボリック・リンクを作成する − サービス層
またはアプリケーション層による使用が目的である。 e.BIOSシャドー内にマップする − ドライバに
対して、このメモリ空間を仮想メモリ内でアクセス可能
にする。 f.BIOS ROM内にマップする − ROMエリ
アを仮想メモリ・アドレス空間内でアクセス可能にす
る。 g.BIOSデータ内にマップする − ドライバに対
して、このメモリ空間を仮想メモリ内でアクセス可能に
する。 h.このドライバによる使用を目的に、BIOS 23
2−bitのエントリ・ポイントのある位置を特定す
る。
細な説明 1.「DriverEntrv」関数 このエントリ・ポイントによって、ドライバは、その正
常な動作のために、その変数を初期化してBIOSシャ
ドーとデータ・エリア内にマップするとともに、リソー
スを割り当てる。リソースまたはオブジェクトがそれぞ
れ割り当てられるとき、それらは可変の「phResA
ndFlags」内に作表される。これによって、単一
の関数(「freeResources」)は、ドライ
バがアンロードされる理由にかかわらずドライバによっ
て使用されるリソースを解放することができる。割り当
てられるまたは接続されるリソースを以下に示す。 a.装置・オブジェクトを作成する − システムによ
って装置・オブジェクトと名前を確立する。 b.エラーロギングを初期化する − イベント・ログ
・サービスに対するリンクを作成する。 c.主要な関数のエントリ・ポイントを設定する。 d.シンボリック・リンクを作成する − サービス層
またはアプリケーション層による使用が目的である。 e.BIOSシャドー内にマップする − ドライバに
対して、このメモリ空間を仮想メモリ内でアクセス可能
にする。 f.BIOS ROM内にマップする − ROMエリ
アを仮想メモリ・アドレス空間内でアクセス可能にす
る。 g.BIOSデータ内にマップする − ドライバに対
して、このメモリ空間を仮想メモリ内でアクセス可能に
する。 h.このドライバによる使用を目的に、BIOS 23
2−bitのエントリ・ポイントのある位置を特定す
る。
【0041】1つの実施形態では、装置・オブジェクト
名は「Laptop」である。この装置・オブジェクト
名は、Microsoft OEM Adaptati
onKit(OAK)によって要求されるネクサス機能
をサービスするために必要である。対応するシンボリッ
ク・リンク名は、「PhoenixAD」である。
名は「Laptop」である。この装置・オブジェクト
名は、Microsoft OEM Adaptati
onKit(OAK)によって要求されるネクサス機能
をサービスするために必要である。対応するシンボリッ
ク・リンク名は、「PhoenixAD」である。
【0042】2.AccessDriverCreat
eClose この関数の用途は、アプリケーション・プログラム23
2またはサービス234が、システムに対して装置・ハ
ンドルの要求をいつ行うか、またはすでに取得したハン
ドルをいつ閉じるかをドライバ246に知らせることで
ある。アクセス・ドライバ246は、要求を正常に完了
することによって(ただし、ドライバ246の他のいず
れの状態変数も変更しない)、このディスパッチ・エン
トリ・ポイントに応答する。
eClose この関数の用途は、アプリケーション・プログラム23
2またはサービス234が、システムに対して装置・ハ
ンドルの要求をいつ行うか、またはすでに取得したハン
ドルをいつ閉じるかをドライバ246に知らせることで
ある。アクセス・ドライバ246は、要求を正常に完了
することによって(ただし、ドライバ246の他のいず
れの状態変数も変更しない)、このディスパッチ・エン
トリ・ポイントに応答する。
【0043】3.AccessDriverUnloa
d このディスパッチ・エントリ・ポイントは、システムか
らドライバを削除することが必要な場合((SCM)か
ら装置をクローズする)、サービス制御マネージャ(S
CM)または他のアプリケーションの代理をするカーネ
ルによって呼び出される。この関数呼び出しの結果、
「phResAndFlags」に作表されているすべ
てのリソースがシステムに解放され、要求が正常に完了
する。
d このディスパッチ・エントリ・ポイントは、システムか
らドライバを削除することが必要な場合((SCM)か
ら装置をクローズする)、サービス制御マネージャ(S
CM)または他のアプリケーションの代理をするカーネ
ルによって呼び出される。この関数呼び出しの結果、
「phResAndFlags」に作表されているすべ
てのリソースがシステムに解放され、要求が正常に完了
する。
【0044】4.AccessDriverReg アクセス・ドライバ246は、OEM Adaptat
ion Kit(OAK)の一部として提供される電源
管理モデル用の「ネクサス処理」を実行する関数を有す
る。この関数は、OAK制御方式を使用するための知識
と要件を備えたOEMおよび標準の装置を対象としてお
り、電源管理のエミュレーションにとって不可欠であ
る。AccessDriverReg関数は、リンクさ
れたリストに装置を登録する。この関数は、要求次第で
選択的に装置の「登録解除」も行う。一般にOAKに準
拠した装置・ドライバは、それらのDriverEnt
ry関数が実行されるとき(それらが最初にロードされ
るとき)、登録のための呼び出しを行う。さらに、Dr
iverUnload関数の一部として、登録された各
装置は、アクセス・ドライバ246の、電源管理サービ
スを必要とする装置に関するリンク済みリストからそれ
自体を削除するために呼び出しを行わなければならな
い。
ion Kit(OAK)の一部として提供される電源
管理モデル用の「ネクサス処理」を実行する関数を有す
る。この関数は、OAK制御方式を使用するための知識
と要件を備えたOEMおよび標準の装置を対象としてお
り、電源管理のエミュレーションにとって不可欠であ
る。AccessDriverReg関数は、リンクさ
れたリストに装置を登録する。この関数は、要求次第で
選択的に装置の「登録解除」も行う。一般にOAKに準
拠した装置・ドライバは、それらのDriverEnt
ry関数が実行されるとき(それらが最初にロードされ
るとき)、登録のための呼び出しを行う。さらに、Dr
iverUnload関数の一部として、登録された各
装置は、アクセス・ドライバ246の、電源管理サービ
スを必要とする装置に関するリンク済みリストからそれ
自体を削除するために呼び出しを行わなければならな
い。
【0045】5.IOCTL関数 サービス層またはアプリケーション層とBIOSとの間
にあるすべてのインタフェースは、アクセス・ドライバ
246のドライバ内のIOCTL関数によって処理され
る。それぞれのIOCTL転送はバッファド・モードで
実行されるため、ドライバへの入力データとその出力デ
ータは共通のシステム・バッファを通じて転送される。
このバッファ空間へのポインタは、Irp>Assoc
iatedIrp.SystemBufferとして、
入力/出力(I/O)要求パケットに含めて与えられ
る。所与の制御が行われているとき、IOCTL(ドラ
イバ内の)は、システム・バッファ・アドレスを取得し
てから、その内容を使用して要求を実行する。IOCT
L関数の実行結果は、入力で使用されたのと同じシステ
ム・バッファ内に置かれる。
にあるすべてのインタフェースは、アクセス・ドライバ
246のドライバ内のIOCTL関数によって処理され
る。それぞれのIOCTL転送はバッファド・モードで
実行されるため、ドライバへの入力データとその出力デ
ータは共通のシステム・バッファを通じて転送される。
このバッファ空間へのポインタは、Irp>Assoc
iatedIrp.SystemBufferとして、
入力/出力(I/O)要求パケットに含めて与えられ
る。所与の制御が行われているとき、IOCTL(ドラ
イバ内の)は、システム・バッファ・アドレスを取得し
てから、その内容を使用して要求を実行する。IOCT
L関数の実行結果は、入力で使用されたのと同じシステ
ム・バッファ内に置かれる。
【0046】アクセス・ドライバ246のドライバ内に
実装される各IOCTLは、IOCTL入力データとそ
の出力データに使用する固有のデータ・フォーマットを
有する。以下に関数について説明されるとき、それらの
データ・バッファ・フォーマットと各フィールドの説明
が与えられる。バッファのオフセットはバイトで与えら
れる。関数ごとに与えられる最小バッファ・サイズは、
アプリケーション・プログラムのユーザ・バッファに使
用するための推奨malloc()サイズである。シス
テム・バッファ・サイズは、ユーザ・バッファから自動
的に導き出される。
実装される各IOCTLは、IOCTL入力データとそ
の出力データに使用する固有のデータ・フォーマットを
有する。以下に関数について説明されるとき、それらの
データ・バッファ・フォーマットと各フィールドの説明
が与えられる。バッファのオフセットはバイトで与えら
れる。関数ごとに与えられる最小バッファ・サイズは、
アプリケーション・プログラムのユーザ・バッファに使
用するための推奨malloc()サイズである。シス
テム・バッファ・サイズは、ユーザ・バッファから自動
的に導き出される。
【0047】6.IOCTL_Locate IOCTL_Locate関数は、ドライバ246の初
期化後にアプリケーション・プログラム232またはサ
ービス234によって呼び出される最初のディスパッチ
・エントリ・ポイントである。関数は、BIOS232
サービス・インタフェースのアドレス、BIOSシャド
ー・エリアの基底アドレス、およびBIOSデータ・エ
リアの基底アドレスを、フラット・モデル仮想アドレス
・フォーマット(232ビット・アドレス)で返す。B
IOS232サービス・インタフェースは、ドライバ・
レベルまたはカーネル・スレッドから実行されるすべて
のBIOS関数に対する単一のエントリ・ポイントであ
ることに注意する必要がある(AppendixAを参
照)。BIOS232サービス・インタフェースは、ド
ライバ・レベルまたはカーネル・スレッドから実行され
るすべてのBIOS関数に対する単一のエントリ・ポイ
ントである(AppendixAを参照)。これらのア
ドレス空間は、アクセス・ドライバ246のドライバが
ロードされる間(のみ)このドライバに対してアクセス
可能であることが保証される。 入力データ: なし。バッファの内容には依存しない。 出力データ: オフセット0: PUCHAR − シャドーに対する
BIOSサービス・ディレクトリのオフセット オフセット4: PUCHAR − BIOSシャドー
・エリアの基底仮想アドレス オフセット8: PUCHAR − BIOSデータ・
エリアの基底仮想アドレス オフセット8: PUCHAR − BIOSデータ・
エリアの基底仮想アドレス オフセット12: PUCHAR − BIOS RO
Mエリアの基底仮想アドレス 最小バッファ・サイズ: 16バイト
期化後にアプリケーション・プログラム232またはサ
ービス234によって呼び出される最初のディスパッチ
・エントリ・ポイントである。関数は、BIOS232
サービス・インタフェースのアドレス、BIOSシャド
ー・エリアの基底アドレス、およびBIOSデータ・エ
リアの基底アドレスを、フラット・モデル仮想アドレス
・フォーマット(232ビット・アドレス)で返す。B
IOS232サービス・インタフェースは、ドライバ・
レベルまたはカーネル・スレッドから実行されるすべて
のBIOS関数に対する単一のエントリ・ポイントであ
ることに注意する必要がある(AppendixAを参
照)。BIOS232サービス・インタフェースは、ド
ライバ・レベルまたはカーネル・スレッドから実行され
るすべてのBIOS関数に対する単一のエントリ・ポイ
ントである(AppendixAを参照)。これらのア
ドレス空間は、アクセス・ドライバ246のドライバが
ロードされる間(のみ)このドライバに対してアクセス
可能であることが保証される。 入力データ: なし。バッファの内容には依存しない。 出力データ: オフセット0: PUCHAR − シャドーに対する
BIOSサービス・ディレクトリのオフセット オフセット4: PUCHAR − BIOSシャドー
・エリアの基底仮想アドレス オフセット8: PUCHAR − BIOSデータ・
エリアの基底仮想アドレス オフセット8: PUCHAR − BIOSデータ・
エリアの基底仮想アドレス オフセット12: PUCHAR − BIOS RO
Mエリアの基底仮想アドレス 最小バッファ・サイズ: 16バイト
【0048】7.IOCTL BIOS_Read IOCTL BIOS_Read関数は、BIOS R
OM、シャドー・エリア、またはデータ・エリアのいず
れかの汎用リーダーである。 入力データ: オフセット0: ULONG− モード・フラグ ビット0: 1 = シャドー・エリア、0=データ・エリア ビット2: 1 = ROMエリア(ビット0を無効にする) オフセット4: PUCHAR− 読み取りを開始するためのBIOSエリア に対するオフセット オフセット8: ULONG− 読み取り長(単位:バイト) 出力データ: オフセット0: ULONG− 実際の読み取り長 オフセット4: UCHARアレイ− 実際のデータ読み取り 最小バッファ・サイズ: 16バイト 注:BIOSエリアに対するオフセットが、マップされたBIOSメモリの終 端とオーバーラップするように指定されたことが原因で「ショート・リード」が 発生した場合、エラーは返されない。代わりに、「実際のデータ読み取り」フィ ールドは、システム・バッファ内で有効なデータの量を正確に示す。
OM、シャドー・エリア、またはデータ・エリアのいず
れかの汎用リーダーである。 入力データ: オフセット0: ULONG− モード・フラグ ビット0: 1 = シャドー・エリア、0=データ・エリア ビット2: 1 = ROMエリア(ビット0を無効にする) オフセット4: PUCHAR− 読み取りを開始するためのBIOSエリア に対するオフセット オフセット8: ULONG− 読み取り長(単位:バイト) 出力データ: オフセット0: ULONG− 実際の読み取り長 オフセット4: UCHARアレイ− 実際のデータ読み取り 最小バッファ・サイズ: 16バイト 注:BIOSエリアに対するオフセットが、マップされたBIOSメモリの終 端とオーバーラップするように指定されたことが原因で「ショート・リード」が 発生した場合、エラーは返されない。代わりに、「実際のデータ読み取り」フィ ールドは、システム・バッファ内で有効なデータの量を正確に示す。
【0049】8.IOCTL_BIOS_Write IOCTL_BIOS_Write関数は、BIOS
ROM、シャドー、またはデータ・エリアのいずれかの
汎用ライターである。 入力データ: オフセット0: ULONG− モード・フラグ ビット0: 1 = シャドー・エリア、0 = データ・エリア ビット2: 1 = ROMエリア(ビット0を無効にする) オフセット4: PUCHAR− 書き込みを開始するためのBIOSエリア に対するオフセット オフセット8: ULONG− 書き込み長(単位:バイト) 出力データ: オフセット0: ULONG − 実際の書き込み長(ゼロ 、または要求サイズ) オフセット4: UCHARアレイ− 実際のデータ読み取り 最小バッファ・サイズ: 16バイト 注:ショート・ライトは、データが壊れる可能性があるため許容されない。
ROM、シャドー、またはデータ・エリアのいずれかの
汎用ライターである。 入力データ: オフセット0: ULONG− モード・フラグ ビット0: 1 = シャドー・エリア、0 = データ・エリア ビット2: 1 = ROMエリア(ビット0を無効にする) オフセット4: PUCHAR− 書き込みを開始するためのBIOSエリア に対するオフセット オフセット8: ULONG− 書き込み長(単位:バイト) 出力データ: オフセット0: ULONG − 実際の書き込み長(ゼロ 、または要求サイズ) オフセット4: UCHARアレイ− 実際のデータ読み取り 最小バッファ・サイズ: 16バイト 注:ショート・ライトは、データが壊れる可能性があるため許容されない。
【0050】9.IOCTL_BIOS_Exec IOCTL_BIOS_Exec関数の用途は、BIO
S232サービス・インタフェースによってBIOS関
数を実行することである。起動レコードは、システム・
バッファ内の値によって渡される。ARは、BIOSに
対するエントリ・ポイントの呼び出し時に基底アーキテ
クチャ・レジスタの内容を確認する。正常に完了したと
き、ARには通常ではBIOSの呼び出し元に返された
基底アーキテクチャのコンテキストが含まれる。 入力データ: オフセット0:ULONG − 関数の
エントリ・ポイントの仮想アドレス オフセット4:ULONG− フラグ・レジスタ オフセット8:ULONG− 未使用 オフセット12:ULONG− 未使用 オフセット16:ULONG− 未使用 オフセット20:ULONG− 未使用 オフセット24:ULONG− 未使用 オフセット28:ULONG− 未使用 オフセット232:ULONG− 未使用 オフセット236:ULONG− 未使用 オフセット240:ULONG− 未使用 オフセット244:ULONG− EBPレジスタ オフセット48:ULONG− EDIレジスタ オフセット52:ULONG− ESIレジスタ オフセット56:ULONG− EDXレジスタ オフセット260:ULONG− ECXレジスタ オフセット64:ULONG− EBXレジスタ オフセット68:ULONG− EAXレジスタ 出力データ: システム・バッファの内容は構造内で同
一である。レジスタの内容は、要求されるBIOS関数
による影響を受ける可能性がある。 最小バッファ・サイズ: 80バイト
S232サービス・インタフェースによってBIOS関
数を実行することである。起動レコードは、システム・
バッファ内の値によって渡される。ARは、BIOSに
対するエントリ・ポイントの呼び出し時に基底アーキテ
クチャ・レジスタの内容を確認する。正常に完了したと
き、ARには通常ではBIOSの呼び出し元に返された
基底アーキテクチャのコンテキストが含まれる。 入力データ: オフセット0:ULONG − 関数の
エントリ・ポイントの仮想アドレス オフセット4:ULONG− フラグ・レジスタ オフセット8:ULONG− 未使用 オフセット12:ULONG− 未使用 オフセット16:ULONG− 未使用 オフセット20:ULONG− 未使用 オフセット24:ULONG− 未使用 オフセット28:ULONG− 未使用 オフセット232:ULONG− 未使用 オフセット236:ULONG− 未使用 オフセット240:ULONG− 未使用 オフセット244:ULONG− EBPレジスタ オフセット48:ULONG− EDIレジスタ オフセット52:ULONG− ESIレジスタ オフセット56:ULONG− EDXレジスタ オフセット260:ULONG− ECXレジスタ オフセット64:ULONG− EBXレジスタ オフセット68:ULONG− EAXレジスタ 出力データ: システム・バッファの内容は構造内で同
一である。レジスタの内容は、要求されるBIOS関数
による影響を受ける可能性がある。 最小バッファ・サイズ: 80バイト
【0051】10.IOCTL_RTC_Read IOCTL_RTC_Read関数の用途は、CMOS
RAM内のRTCレジスタの内容を読み取ることであ
る。この原子的な読み取りからのデータは、同様にSY
STEMTIME構造にフォーマットされ、システム・
バッファ内のユーザに返される。 入力データ: なし。バッファの内容には依存しない。 出力データ: <以下に示すSYSTEMTIMEテンプレートを使用する> オフセット0: WORD 現在の年 オフセット2: WORD 現在の月(1月=1) オフセット4: WORD 現在の曜日(日曜=0) オフセット6: WORD 現在の日(カレンダー) オフセット8: WORD 現在の時 オフセット10: WORD 現在の分 オフセット12: WORD 現在の秒 オフセット14: WORD 現在のミリ秒 最小バッファ・サイズ: 32バイト
RAM内のRTCレジスタの内容を読み取ることであ
る。この原子的な読み取りからのデータは、同様にSY
STEMTIME構造にフォーマットされ、システム・
バッファ内のユーザに返される。 入力データ: なし。バッファの内容には依存しない。 出力データ: <以下に示すSYSTEMTIMEテンプレートを使用する> オフセット0: WORD 現在の年 オフセット2: WORD 現在の月(1月=1) オフセット4: WORD 現在の曜日(日曜=0) オフセット6: WORD 現在の日(カレンダー) オフセット8: WORD 現在の時 オフセット10: WORD 現在の分 オフセット12: WORD 現在の秒 オフセット14: WORD 現在のミリ秒 最小バッファ・サイズ: 32バイト
【0052】RTCのYearフィールドは8ビット長
であることに注意する必要がある。RTCのYearフ
ィールドの内容は、現在の年の全体値(西暦)を含むS
YSTEMTIME.Year(16ビット・フィール
ド)の値に再計算される。例:RTC=OOの場合、Y
ear=1980。RTC=23の場合、Year=
2003。さらに、従来のRTC装置は、レジスタ・セ
ット内でミリ秒フィールドを提供しないことに注意する
必要がある。そのため、この関数の出力データ内におけ
る現在のミリ秒フィールドは常に0に設定される。
であることに注意する必要がある。RTCのYearフ
ィールドの内容は、現在の年の全体値(西暦)を含むS
YSTEMTIME.Year(16ビット・フィール
ド)の値に再計算される。例:RTC=OOの場合、Y
ear=1980。RTC=23の場合、Year=
2003。さらに、従来のRTC装置は、レジスタ・セ
ット内でミリ秒フィールドを提供しないことに注意する
必要がある。そのため、この関数の出力データ内におけ
る現在のミリ秒フィールドは常に0に設定される。
【0053】11.IOCTL_VERSION IOCTL_Version関数は、呼び出し元にアク
セス・ドライバ246のドライバの大きい方と小さい方
のバージョンを返す。加えて、ドライバのこのバージョ
ンによって実装される関数がビットマップ内に列挙され
る。ビットマップの目的は、サービスまたはより高レベ
ルのドライバに関して、目的達成のためにこのバージョ
ンのドライバを使用できるかどうかを評価することであ
る(一般に、インストール時に)。 入力データ: なし。バッファの内容には依存しない。 出力データ: オフセット0: WORD 大きい方のバージョン(X.) オフセット2: WORD 小さい方のバージョン(.x) オフセット4: ULONG 実装された関数のビットマップ(以下を参照) ビット31: IOCTL_Locateが実装された場合、1 ビット230: IOCTL_BIOS_Rradが実装された場合、1 ビット29: IOCTL_BIOS_Writeが実装された場合、1 ビット28: IOCTL_BIOS_Execが実装された場合、1 ビット27: 未使用 ビット26: 未使用 ビット25: 未使用 ビット24: IOCTL_RTC_Readが実装された場合、1 ビット23: 未使用 ビット22: Phlashインターロック用の予備 ビット21: オンライン・セットアップ(NVRAM書き込み)用の予備 ビット20 − 0: 将来の拡張用の予備 ビット230: IOCTL_BIOS_Rradが実装された場合、1 最小バッファ・サイズ: 16バイト
セス・ドライバ246のドライバの大きい方と小さい方
のバージョンを返す。加えて、ドライバのこのバージョ
ンによって実装される関数がビットマップ内に列挙され
る。ビットマップの目的は、サービスまたはより高レベ
ルのドライバに関して、目的達成のためにこのバージョ
ンのドライバを使用できるかどうかを評価することであ
る(一般に、インストール時に)。 入力データ: なし。バッファの内容には依存しない。 出力データ: オフセット0: WORD 大きい方のバージョン(X.) オフセット2: WORD 小さい方のバージョン(.x) オフセット4: ULONG 実装された関数のビットマップ(以下を参照) ビット31: IOCTL_Locateが実装された場合、1 ビット230: IOCTL_BIOS_Rradが実装された場合、1 ビット29: IOCTL_BIOS_Writeが実装された場合、1 ビット28: IOCTL_BIOS_Execが実装された場合、1 ビット27: 未使用 ビット26: 未使用 ビット25: 未使用 ビット24: IOCTL_RTC_Readが実装された場合、1 ビット23: 未使用 ビット22: Phlashインターロック用の予備 ビット21: オンライン・セットアップ(NVRAM書き込み)用の予備 ビット20 − 0: 将来の拡張用の予備 ビット230: IOCTL_BIOS_Rradが実装された場合、1 最小バッファ・サイズ: 16バイト
【0054】12.IOCTL_PM_Suspend IOCTL_PM_Suspend関数は、IRP_M
J_PNP_POWERとIRP_MN_LT_SUS
PEND IRPが、アクセス・ドライバのDrive
rRegエントリ・ポイントを使用してそれ自体を登録
した各装置に送信されるようにする。 入力データ: なし。バッファの内容には依存しない。 出力データ: なし。バッファの内容には依存しない。
J_PNP_POWERとIRP_MN_LT_SUS
PEND IRPが、アクセス・ドライバのDrive
rRegエントリ・ポイントを使用してそれ自体を登録
した各装置に送信されるようにする。 入力データ: なし。バッファの内容には依存しない。 出力データ: なし。バッファの内容には依存しない。
【0055】13.IOCTL_PM_Resume IOCTL_PM_Resume関数は、IRP_MJ
_PNP_POWERとIRP_MN_LT_RESU
ME IRPが、アクセス・ドライバのDriverR
egエントリ・ポイントを使用してそれ自体を登録した
各装置に送信されるようにする。 入力データ:なし。バッファの内容には依存しない。 出力データ:なし。バッファの内容には依存しない。
_PNP_POWERとIRP_MN_LT_RESU
ME IRPが、アクセス・ドライバのDriverR
egエントリ・ポイントを使用してそれ自体を登録した
各装置に送信されるようにする。 入力データ:なし。バッファの内容には依存しない。 出力データ:なし。バッファの内容には依存しない。
【0056】B.アクセス・ドライバ246によって返
されるエラー・コード 以下の表に、IRPが正常に完了しなかったりまたは部
分的にのみ完了したときに返されるエラー・ステータス
を定義する。関数の終了状態についても説明する。この
表が必要な理由は、オペレーティング・システムによっ
て知られるNTSTATUS値とアクセス・ドライバ2
46装置・ドライバによって使用される値とは必ずしも
1対1に対応しないためである。コードをアプリケーシ
ョンの作成者またはエンド・ユーザに使用可能な文字列
に逆向きに変換するために、NTSTATUSエラー・
コードのみを強制的に使用しなければならない。
されるエラー・コード 以下の表に、IRPが正常に完了しなかったりまたは部
分的にのみ完了したときに返されるエラー・ステータス
を定義する。関数の終了状態についても説明する。この
表が必要な理由は、オペレーティング・システムによっ
て知られるNTSTATUS値とアクセス・ドライバ2
46装置・ドライバによって使用される値とは必ずしも
1対1に対応しないためである。コードをアプリケーシ
ョンの作成者またはエンド・ユーザに使用可能な文字列
に逆向きに変換するために、NTSTATUSエラー・
コードのみを強制的に使用しなければならない。
【表3】
【0057】C.BIOS 232bitエントリ・ポ
イントの仕様 IOCTL_LocateがBIOSのエントリ・ポイ
ントを見つけられるように、BIOS 232−bit
サービス・ディレクトリが使用される。BIOS 23
2−bitサービス・ディレクトリに関する説明は、A
ppendixCに記載される。BIOS関数の位置を
特定して実行するときにアクセス・ドライバ246が使
用する署名は、「_32_」とする。
イントの仕様 IOCTL_LocateがBIOSのエントリ・ポイ
ントを見つけられるように、BIOS 232−bit
サービス・ディレクトリが使用される。BIOS 23
2−bitサービス・ディレクトリに関する説明は、A
ppendixCに記載される。BIOS関数の位置を
特定して実行するときにアクセス・ドライバ246が使
用する署名は、「_32_」とする。
【0058】上記の条件によってWinntEntry
(BIOS232サービス・ディレクトリ)構造が見つ
からない場合、アクセス・ドライバ246のドライバは
ロード時に失敗して、DriverEntryは表2に
従って初期化できなかったことを示す。
(BIOS232サービス・ディレクトリ)構造が見つ
からない場合、アクセス・ドライバ246のドライバは
ロード時に失敗して、DriverEntryは表2に
従って初期化できなかったことを示す。
【0059】D.リアルタイム・クロック・ハードウェ
アに対するアクセス IOCTL_RTC_Read関数を実装するには、R
TCのレジスタとアクセス方法を定義する必要がある。
RTCレジスタは、CMOS RAMのI/Oアドレス
空間に配置される。表3にはRTCレジスタのみが示さ
れる。レジスタは、CMOS物理メモリ・アドレスをポ
ート0×70に出力してから、ポート0×71で対象の
8ビット・レジスタを読み取ることによってアクセスさ
れる。CMOS物理メモリ・アドレスは、すべてのRT
Cレジスタが読み取られた後、0x0Dを指し示すよう
に設定される。
アに対するアクセス IOCTL_RTC_Read関数を実装するには、R
TCのレジスタとアクセス方法を定義する必要がある。
RTCレジスタは、CMOS RAMのI/Oアドレス
空間に配置される。表3にはRTCレジスタのみが示さ
れる。レジスタは、CMOS物理メモリ・アドレスをポ
ート0×70に出力してから、ポート0×71で対象の
8ビット・レジスタを読み取ることによってアクセスさ
れる。CMOS物理メモリ・アドレスは、すべてのRT
Cレジスタが読み取られた後、0x0Dを指し示すよう
に設定される。
【表4】
【0060】図6Aは、本発明の初期化プロセスに関す
る1つの実施形態を示すフローチャートである。起動状
態から開始して、プロセス600はブロック610に進
み、呼び出しプログラム(すなわち、I/Oマネージャ
242)の変数が初期化される。この初期化プロセス6
10の詳細は、図6Bとそれに伴う本文で説明される。
プロセス600は、次にブロック620に進む。このブ
ロックでは、アクセス・ドライバ246がロードされ
る。その後、アクセス・ドライバの変数の初期化が行わ
れる。初期化プロセスの間、特に重要な次の2つの初期
化が行われる。(a)物理メモリ250に位置するBI
OSシャドー・エリア260(BIOSサービス・ディ
レクトリ62を含む)、および(b)同じく物理メモリ
250に位置するBIOSデータ・エリア264であ
り、両方ともアクセス・ドライバ246の仮想メモリに
マップされる(BIOSシャドー・エリア270(BI
OSサービス・ディレクトリ272を含む)とBIOS
データ・エリア274として図4に示される)。
る1つの実施形態を示すフローチャートである。起動状
態から開始して、プロセス600はブロック610に進
み、呼び出しプログラム(すなわち、I/Oマネージャ
242)の変数が初期化される。この初期化プロセス6
10の詳細は、図6Bとそれに伴う本文で説明される。
プロセス600は、次にブロック620に進む。このブ
ロックでは、アクセス・ドライバ246がロードされ
る。その後、アクセス・ドライバの変数の初期化が行わ
れる。初期化プロセスの間、特に重要な次の2つの初期
化が行われる。(a)物理メモリ250に位置するBI
OSシャドー・エリア260(BIOSサービス・ディ
レクトリ62を含む)、および(b)同じく物理メモリ
250に位置するBIOSデータ・エリア264であ
り、両方ともアクセス・ドライバ246の仮想メモリに
マップされる(BIOSシャドー・エリア270(BI
OSサービス・ディレクトリ272を含む)とBIOS
データ・エリア274として図4に示される)。
【0061】それからプロセス600はブロック630
に進み、ポインタの初期化が行われる。ブロック630
の詳細は、図6Cとそれに伴う本文で説明される。次
に、プロセス600はブロック640に進み、初期化が
終了する。この後、プロセス600は終了する。
に進み、ポインタの初期化が行われる。ブロック630
の詳細は、図6Cとそれに伴う本文で説明される。次
に、プロセス600はブロック640に進み、初期化が
終了する。この後、プロセス600は終了する。
【0062】図6Bは、ブロック610の詳細を示すフ
ローチャートである。起動状態から開始して、プロセス
610はブロック612に進む。このブロックでは、I
/Oマネージャ242からの呼び出しプログラムは、指
定されたメモリ構造を実現するためにシステム・バッフ
ァ内にメモリを割り当てる。プロセス610は次にプロ
セス・ブロック614に進む。このブロックでは、I/
Oマネージャ242からの呼び出しプログラムは、いく
つかのBIOS関数のロケーション、それらの対応する
エントリ・ポイント、長さ、およびオフセットを求め
る。1つの実施形態では、対応するBIOS関数に対す
る指定されたメモリ構造のアドレス・フィールドにBI
OS関数の仮想アドレスを入力することによって、およ
びそれぞれのBIOS関数を特定する4バイトのASC
II文字列を与えることによってこれを達成することが
できる。この後、呼び出しプログラムの初期化は終了す
る。
ローチャートである。起動状態から開始して、プロセス
610はブロック612に進む。このブロックでは、I
/Oマネージャ242からの呼び出しプログラムは、指
定されたメモリ構造を実現するためにシステム・バッフ
ァ内にメモリを割り当てる。プロセス610は次にプロ
セス・ブロック614に進む。このブロックでは、I/
Oマネージャ242からの呼び出しプログラムは、いく
つかのBIOS関数のロケーション、それらの対応する
エントリ・ポイント、長さ、およびオフセットを求め
る。1つの実施形態では、対応するBIOS関数に対す
る指定されたメモリ構造のアドレス・フィールドにBI
OS関数の仮想アドレスを入力することによって、およ
びそれぞれのBIOS関数を特定する4バイトのASC
II文字列を与えることによってこれを達成することが
できる。この後、呼び出しプログラムの初期化は終了す
る。
【0063】図6Cは、図6Aのプロセス・ブロック6
30の詳細を示すフローチャートである。起動状態から
開始して、呼び出しアプリケーション・プログラム23
2またはサービス234は、ブロック632に示される
ように、クラス・ドライバによってIOCTL_Loc
ateを呼び出す。これに応じて、アクセス・ドライバ
246は、プロセス・ブロック634に示されるよう
に、BIOSサービス・ディレクトリ272のヘッダー
に対する検索を実行する。BIOSサービス・ディレク
トリ272を見付けて検証したら、アクセス・ドライバ
246はBIOSサービス・ディレクトリ272のヘッ
ダーの仮想アドレスを取得する。この仮想アドレスによ
って、BIOSシャドー・エリア270の基底仮想アド
レスからの、BIOSサービス・ディレクトリ272の
ヘッダーが有する仮想アドレスのオフセットが提供され
る。プロセス630は、次に呼び出しアプリケーション
・プログラム232またはサービス234に制御を返
す。
30の詳細を示すフローチャートである。起動状態から
開始して、呼び出しアプリケーション・プログラム23
2またはサービス234は、ブロック632に示される
ように、クラス・ドライバによってIOCTL_Loc
ateを呼び出す。これに応じて、アクセス・ドライバ
246は、プロセス・ブロック634に示されるよう
に、BIOSサービス・ディレクトリ272のヘッダー
に対する検索を実行する。BIOSサービス・ディレク
トリ272を見付けて検証したら、アクセス・ドライバ
246はBIOSサービス・ディレクトリ272のヘッ
ダーの仮想アドレスを取得する。この仮想アドレスによ
って、BIOSシャドー・エリア270の基底仮想アド
レスからの、BIOSサービス・ディレクトリ272の
ヘッダーが有する仮想アドレスのオフセットが提供され
る。プロセス630は、次に呼び出しアプリケーション
・プログラム232またはサービス234に制御を返
す。
【0064】図7Aは、本発明の呼び出し実行プロセス
を示すフローチャートである。起動状態から開始して、
プロセス700はプロセス・ブロック710に進む。こ
のブロックでは、呼び出しプログラムはアクセス・ドラ
イバ246に、実行の開始を希望するBIOS関数のア
ドレスを提供することによってBIOS関数を呼び出
す。プロセス700は、次にプロセス・ブロック720
に進む。このブロックでは、アクセス・ドライバ246
は、I/Oマネージャ242からのIOCTLコマンド
を通じてBIOS関数へのディスパッチ呼び出しを受信
する(図4を参照)。プロセス700は、それからプロ
セス・ブロック730に進む。このブロックでは、アク
セス・ドライバ246はエントリ・ポイント・アドレス
の範囲チェックを行う。特に、アクセス・ドライバ24
6は、エントリ・ポイント・アドレスがBIOSシャド
ー・エリアにマップされたアドレスの範囲内にあるかど
うかを判定する。ただし、サービス・ディレクトリ・ヘ
ッダーは例外である。範囲内にない場合、アクセス・ド
ライバ246は、開始仮想アドレスが物理メモリから仮
想メモリにマップされたアドレスの範囲内にないことを
示す。このことは、フラグを使用することによって示す
ことができる。範囲チェックが正常に終了した場合、プ
ロセス700はプロセス・ブロック740に進む。この
ブロックでは、アクセス・ドライバ246は呼び出され
たBIOS関数を実行する。この後、プロセス700は
終了する。
を示すフローチャートである。起動状態から開始して、
プロセス700はプロセス・ブロック710に進む。こ
のブロックでは、呼び出しプログラムはアクセス・ドラ
イバ246に、実行の開始を希望するBIOS関数のア
ドレスを提供することによってBIOS関数を呼び出
す。プロセス700は、次にプロセス・ブロック720
に進む。このブロックでは、アクセス・ドライバ246
は、I/Oマネージャ242からのIOCTLコマンド
を通じてBIOS関数へのディスパッチ呼び出しを受信
する(図4を参照)。プロセス700は、それからプロ
セス・ブロック730に進む。このブロックでは、アク
セス・ドライバ246はエントリ・ポイント・アドレス
の範囲チェックを行う。特に、アクセス・ドライバ24
6は、エントリ・ポイント・アドレスがBIOSシャド
ー・エリアにマップされたアドレスの範囲内にあるかど
うかを判定する。ただし、サービス・ディレクトリ・ヘ
ッダーは例外である。範囲内にない場合、アクセス・ド
ライバ246は、開始仮想アドレスが物理メモリから仮
想メモリにマップされたアドレスの範囲内にないことを
示す。このことは、フラグを使用することによって示す
ことができる。範囲チェックが正常に終了した場合、プ
ロセス700はプロセス・ブロック740に進む。この
ブロックでは、アクセス・ドライバ246は呼び出され
たBIOS関数を実行する。この後、プロセス700は
終了する。
【0065】図7Bは、図7Aのプロセス・ブロック7
40の詳細を示すフローチャートである。起動状態から
開始して、プロセス740はプロセス・ブロック742
に進む。このブロックでは、アクセス・ドライバ246
は、I/Oマネージャ242からプログラムによって以
前に指定されたシステム・バッファ内にレジスタ・スタ
ックを作成する。プロセス730は、次にプロセス・ブ
ロック744に進む。このブロックでは、アクセス・ド
ライバ246は、実行するBIOS関数のアドレスを保
持するレジスタ・スタックへのポインタを提供する。プ
ロセス740は、それからプロセス・ブロック746に
進む。このブロックでは、I/Oマネージャ242から
の呼び出しプログラムは、関数を呼び出して実行する。
この関数の呼び出しアドレスは、仮想メモリ内にマップ
されたその物理アドレスを使用してポインタによって示
される。この後、プロセス740は終了する。
40の詳細を示すフローチャートである。起動状態から
開始して、プロセス740はプロセス・ブロック742
に進む。このブロックでは、アクセス・ドライバ246
は、I/Oマネージャ242からプログラムによって以
前に指定されたシステム・バッファ内にレジスタ・スタ
ックを作成する。プロセス730は、次にプロセス・ブ
ロック744に進む。このブロックでは、アクセス・ド
ライバ246は、実行するBIOS関数のアドレスを保
持するレジスタ・スタックへのポインタを提供する。プ
ロセス740は、それからプロセス・ブロック746に
進む。このブロックでは、I/Oマネージャ242から
の呼び出しプログラムは、関数を呼び出して実行する。
この関数の呼び出しアドレスは、仮想メモリ内にマップ
されたその物理アドレスを使用してポインタによって示
される。この後、プロセス740は終了する。
【0066】ここでアクセス・ドライバ246のIOC
TL_BIOS_EXEC関数の利用例について説明す
る。初めに、アプリケーション・プログラム232また
はサービス234は、IOCTL_Locateコマン
ドを使用してアクセス・ドライバ246を呼び出す。ア
クセス・ドライバ246によって返されるデータには、
BIOSシャドー・エリアの基底仮想アドレス、BIO
Sシャドー・エリアの基底仮想アドレスからのBIOS
サービス・ディレクトリのオフセット、およびBIOS
データ・エリアの基底仮想アドレスなどが含まれる。
TL_BIOS_EXEC関数の利用例について説明す
る。初めに、アプリケーション・プログラム232また
はサービス234は、IOCTL_Locateコマン
ドを使用してアクセス・ドライバ246を呼び出す。ア
クセス・ドライバ246によって返されるデータには、
BIOSシャドー・エリアの基底仮想アドレス、BIO
Sシャドー・エリアの基底仮想アドレスからのBIOS
サービス・ディレクトリのオフセット、およびBIOS
データ・エリアの基底仮想アドレスなどが含まれる。
【0067】この後、BIOSサービス、そのエントリ
・ポイント、長さ、およびアドレス・オフセットの存在
を確認するために、以下の動作が利用される。I/Oマ
ネージャ242からの呼び出しプログラムは、最初にI
OC_EXEC1のようなレジスタ構造を実現するため
にメモリを割り当てた後、その構造のbiosFunc
tionフィールドにIOCTL_Locate関数に
よって与えられた仮想アドレスを設定する。その他のレ
ジスタの値は次のように設定される。eaxレジスタに
はBIOSサービスを特定する4バイトのASCII文
字列がロードされ、ebxレジスタには0がロードされ
る。
・ポイント、長さ、およびアドレス・オフセットの存在
を確認するために、以下の動作が利用される。I/Oマ
ネージャ242からの呼び出しプログラムは、最初にI
OC_EXEC1のようなレジスタ構造を実現するため
にメモリを割り当てた後、その構造のbiosFunc
tionフィールドにIOCTL_Locate関数に
よって与えられた仮想アドレスを設定する。その他のレ
ジスタの値は次のように設定される。eaxレジスタに
はBIOSサービスを特定する4バイトのASCII文
字列がロードされ、ebxレジスタには0がロードされ
る。
【0068】次に、呼び出し元は、IOCTL呼び出し
のシステム・バッファ内にコピーされたIOC_EXE
C1構造の内容によって、アクセス・ドライバ246の
IOCTL_BIOS_Exec関数を呼び出す。その
後、BIOS関数が実行される。アクセス・ドライバ2
46のIOCTL_BIOS_Exec関数は、ea
x、ebx、ecx、およびedxのレジスタ値として
それぞれサービス・ディレクトリからの応答を設定して
戻る。次に、I/Oマネージャ242の呼び出しプログ
ラムは、サービス・ディレクトリから戻された情報を取
得して、システム・バッファ内にbiosFuncti
onのエントリ・ポイントと構造を作成する。その後、
その呼び出しプログラムは、アクセス・ドライバ246
内のBIOS関数を使用してIOCTL_BIOS_E
xec関数を呼び出す。返されるデータは、同じIOC
_EXEC1構造内に渡される。
のシステム・バッファ内にコピーされたIOC_EXE
C1構造の内容によって、アクセス・ドライバ246の
IOCTL_BIOS_Exec関数を呼び出す。その
後、BIOS関数が実行される。アクセス・ドライバ2
46のIOCTL_BIOS_Exec関数は、ea
x、ebx、ecx、およびedxのレジスタ値として
それぞれサービス・ディレクトリからの応答を設定して
戻る。次に、I/Oマネージャ242の呼び出しプログ
ラムは、サービス・ディレクトリから戻された情報を取
得して、システム・バッファ内にbiosFuncti
onのエントリ・ポイントと構造を作成する。その後、
その呼び出しプログラムは、アクセス・ドライバ246
内のBIOS関数を使用してIOCTL_BIOS_E
xec関数を呼び出す。返されるデータは、同じIOC
_EXEC1構造内に渡される。
【0069】図6A、6B、7A、および7Bに示され
るプロセスの例は、AppendixD1からD3に記
載されている。特に、AppendixD1には、クラ
ス・ドライバ246によってBIOS関数を呼び出す際
に使用される、アプリケーション・プログラム232、
サービス234、またはクラス・ドライバ240にとっ
て模範的なソース・コードが示される。Appendi
xD2およびD3には、アクセス・ドライバ246にと
って模範的なソース・コードが示される。Append
ixD2には、シャドー・エリア内のBIOS関数の実
行にとって模範的なソース・コードが示される。これに
対して、AppendixD3には、レジスタ・スタッ
クの作成にとって模範的な、およびBIOS関数を実行
するためのエントリ・ポイントの呼び出しにとって模範
的なソース・コードが示される。
るプロセスの例は、AppendixD1からD3に記
載されている。特に、AppendixD1には、クラ
ス・ドライバ246によってBIOS関数を呼び出す際
に使用される、アプリケーション・プログラム232、
サービス234、またはクラス・ドライバ240にとっ
て模範的なソース・コードが示される。Appendi
xD2およびD3には、アクセス・ドライバ246にと
って模範的なソース・コードが示される。Append
ixD2には、シャドー・エリア内のBIOS関数の実
行にとって模範的なソース・コードが示される。これに
対して、AppendixD3には、レジスタ・スタッ
クの作成にとって模範的な、およびBIOS関数を実行
するためのエントリ・ポイントの呼び出しにとって模範
的なソース・コードが示される。
【0070】本発明を使用することによって、仮想メモ
リ・サブシステムから物理メモリの内容にアクセスして
実行するためのシステムと方法が実現できる。このシス
テムと方法によって、メモリと入力/出力動作へのアド
レッシング機能の向上が容易になるとともに、物理メモ
リ空間内におけるプロセッサ命令を実行することもでき
るようになる。
リ・サブシステムから物理メモリの内容にアクセスして
実行するためのシステムと方法が実現できる。このシス
テムと方法によって、メモリと入力/出力動作へのアド
レッシング機能の向上が容易になるとともに、物理メモ
リ空間内におけるプロセッサ命令を実行することもでき
るようになる。
【0071】BIOSサービスの安全な利用 本発明の別の局面には、基本入出力システム(Basi
c Input and Output System
(BIOS))サービスを安全に利用するためのシステ
ムと方法が含まれる。以下の詳細な説明では、本発明に
ついて説明するために以下の用語が使用される。 ・ データ暗号化規格(Data Encryptio
n Standard(DES))などで指定されるよ
うに、リベスト−シャミール−アドレマン(Rives
t,Shamir,and Adleman(RS
A))、データ暗号化アルゴリズム(Data Enc
ryption Algorithm(DEA))など
の従来型の暗号アルゴリズムによると、「キー」は符号
化および/または復号化のパラメータである。 ・ 「キー・ペア」には「秘密」鍵と「公開」鍵が含ま
れる。「秘密」鍵は、キー・ペアの所有者によって保持
され、デジタル署名を生成するために使用される。「公
開」鍵は広く公表され、デジタル署名を確認するための
使用される。通常、公開鍵はデジタル「証明」の形式で
公表される。 ・ 「デジタル署名」は、デジタル・メッセージと秘密
鍵を使用して生成されるデジタル量である。デジタル署
名は、秘密鍵を知らずに計算することはできない。デジ
タル署名は、デジタル・メッセージと、秘密鍵に対応す
る公開鍵を使用して検証することができる。検証の成功
によって、デジタル・メッセージが署名された実際のも
のであり、署名が公開鍵に対応する秘密鍵を使用して生
成されたことが確認される。 ・ 「証明」は、少なくとも公開鍵、秘密鍵、および秘
密鍵を使用して作成されたデジタル署名を含むデジタル
・メッセージである。
c Input and Output System
(BIOS))サービスを安全に利用するためのシステ
ムと方法が含まれる。以下の詳細な説明では、本発明に
ついて説明するために以下の用語が使用される。 ・ データ暗号化規格(Data Encryptio
n Standard(DES))などで指定されるよ
うに、リベスト−シャミール−アドレマン(Rives
t,Shamir,and Adleman(RS
A))、データ暗号化アルゴリズム(Data Enc
ryption Algorithm(DEA))など
の従来型の暗号アルゴリズムによると、「キー」は符号
化および/または復号化のパラメータである。 ・ 「キー・ペア」には「秘密」鍵と「公開」鍵が含ま
れる。「秘密」鍵は、キー・ペアの所有者によって保持
され、デジタル署名を生成するために使用される。「公
開」鍵は広く公表され、デジタル署名を確認するための
使用される。通常、公開鍵はデジタル「証明」の形式で
公表される。 ・ 「デジタル署名」は、デジタル・メッセージと秘密
鍵を使用して生成されるデジタル量である。デジタル署
名は、秘密鍵を知らずに計算することはできない。デジ
タル署名は、デジタル・メッセージと、秘密鍵に対応す
る公開鍵を使用して検証することができる。検証の成功
によって、デジタル・メッセージが署名された実際のも
のであり、署名が公開鍵に対応する秘密鍵を使用して生
成されたことが確認される。 ・ 「証明」は、少なくとも公開鍵、秘密鍵、および秘
密鍵を使用して作成されたデジタル署名を含むデジタル
・メッセージである。
【0072】図8は、本発明のシステムと方法を利用す
る処理システム1500のアーキテクチャを示す総合的
な機能ブロック図である。処理システム1500は、ア
プリケーション・プログラム1510とサービス151
5をサポートするオペレーティング・システム150
5、基本入力/出力システム(BIOS)1520、お
よびシステム・ハードウェア1525から成る。BIO
S 1520は、コンソール(キーボードとディスプレ
イ)、汎用プリンタ、補助装置(シリアル・ポート)、
コンピュータのクロック、およびブート・ディスク装置
などのハードウェア装置用のドライバまたはソフトウェ
ア・インタフェースを集めたものである。BIOS 1
520は、一般に非揮発性メモリに組み込まれている。
る処理システム1500のアーキテクチャを示す総合的
な機能ブロック図である。処理システム1500は、ア
プリケーション・プログラム1510とサービス151
5をサポートするオペレーティング・システム150
5、基本入力/出力システム(BIOS)1520、お
よびシステム・ハードウェア1525から成る。BIO
S 1520は、コンソール(キーボードとディスプレ
イ)、汎用プリンタ、補助装置(シリアル・ポート)、
コンピュータのクロック、およびブート・ディスク装置
などのハードウェア装置用のドライバまたはソフトウェ
ア・インタフェースを集めたものである。BIOS 1
520は、一般に非揮発性メモリに組み込まれている。
【0073】オペレーティング・システム1505に
は、アプリケーション・プログラム1510とサービス
1515とインタフェースをとるクラス・ドライバ15
30、およびI/Oマネージャ1535が含まれる。I
/Oマネージャ1535は、アプリケーション・プログ
ラム1510とサービス1515からのI/O要求(ク
ラス・ドライバ1530を通じて作成される)を、カー
ネル1540内に位置する様々なドライバ・ルーチンに
対する適切に順序付けした呼び出しに変換する。特に、
入出力要求を受信したとき、I/Oマネージャ1535
は要求のファンクション・コードを使用して、カーネル
1540に位置するドライバ内にあるいくつかのディス
パッチ・ルーチンの1つを呼び出す。カーネル1540
は、システム関数と呼ばれるハードウェアから独立した
関数を提供する。これらの関数は、ソフトウェア割り込
みによってアクセスされる。カーネル1540によって
提供される関数には、特に、ファイルとディレクトリの
管理、メモリ管理、キャラクタ装置入力/出力、および
時刻と日付のサポートなどが一般に含まれる。1つの実
施形態として、オペレーティング・システム1505は
Windowsオペレーティング・システムである。代
替の実施形態では、オペレーティング・システム150
5には、Solarisオペレーティング・システムも
しくはAIXオペレーティング・システム、または要求
時ページング仮想メモリ・サブシステムに基づくその他
のオペレーティング・システムなどが含まれる。
は、アプリケーション・プログラム1510とサービス
1515とインタフェースをとるクラス・ドライバ15
30、およびI/Oマネージャ1535が含まれる。I
/Oマネージャ1535は、アプリケーション・プログ
ラム1510とサービス1515からのI/O要求(ク
ラス・ドライバ1530を通じて作成される)を、カー
ネル1540内に位置する様々なドライバ・ルーチンに
対する適切に順序付けした呼び出しに変換する。特に、
入出力要求を受信したとき、I/Oマネージャ1535
は要求のファンクション・コードを使用して、カーネル
1540に位置するドライバ内にあるいくつかのディス
パッチ・ルーチンの1つを呼び出す。カーネル1540
は、システム関数と呼ばれるハードウェアから独立した
関数を提供する。これらの関数は、ソフトウェア割り込
みによってアクセスされる。カーネル1540によって
提供される関数には、特に、ファイルとディレクトリの
管理、メモリ管理、キャラクタ装置入力/出力、および
時刻と日付のサポートなどが一般に含まれる。1つの実
施形態として、オペレーティング・システム1505は
Windowsオペレーティング・システムである。代
替の実施形態では、オペレーティング・システム150
5には、Solarisオペレーティング・システムも
しくはAIXオペレーティング・システム、または要求
時ページング仮想メモリ・サブシステムに基づくその他
のオペレーティング・システムなどが含まれる。
【0074】本発明では、カーネル1540内に配置さ
れるアクセス・ドライバ1545が設けられている。ア
クセス・ドライバ1545は、BIOS 1520に位
置するデータにアクセスして更新するための、またはB
IOSを通じてシステム・ハードウェアのデータにアク
セスするためのROMアプリケーション・プログラミン
グ・インタフェース(ROM Application
Programming Interface(RA
PI))1550とインタフェースをとる役割を果た
す。一般に、RAPI 1550は、BIOSサービス
または関数を安全に利用するためのインタフェースを提
供する。RAPIに関する詳細情報を以下に提供する。
れるアクセス・ドライバ1545が設けられている。ア
クセス・ドライバ1545は、BIOS 1520に位
置するデータにアクセスして更新するための、またはB
IOSを通じてシステム・ハードウェアのデータにアク
セスするためのROMアプリケーション・プログラミン
グ・インタフェース(ROM Application
Programming Interface(RA
PI))1550とインタフェースをとる役割を果た
す。一般に、RAPI 1550は、BIOSサービス
または関数を安全に利用するためのインタフェースを提
供する。RAPIに関する詳細情報を以下に提供する。
【0075】1つの好ましい実施形態では、アクセス・
ドライバ1545はC言語で記述されたソース・コード
から成る。その他のアセンブリ言語も、アクセス・ドラ
イバ1545の関数の実装に利用できることが理解され
る。1つの好ましい実施形態では、一連のエントリ・ポ
イントまたは関数呼び出しは、アクセス・ドライバ15
45を利用する、アプリケーション・プログラム151
0、サービス1515、またはクラス・ドライバ153
0に対して利用可能である。アクセス・ドライバ154
5は、オープンやクローズが可能であるとともに、これ
らのエントリ・ポイントを通じて入力/出力(「I/
O」)制御コード(「IOCTL」)を受信することが
できる。
ドライバ1545はC言語で記述されたソース・コード
から成る。その他のアセンブリ言語も、アクセス・ドラ
イバ1545の関数の実装に利用できることが理解され
る。1つの好ましい実施形態では、一連のエントリ・ポ
イントまたは関数呼び出しは、アクセス・ドライバ15
45を利用する、アプリケーション・プログラム151
0、サービス1515、またはクラス・ドライバ153
0に対して利用可能である。アクセス・ドライバ154
5は、オープンやクローズが可能であるとともに、これ
らのエントリ・ポイントを通じて入力/出力(「I/
O」)制御コード(「IOCTL」)を受信することが
できる。
【0076】図9に、本発明の一実施形態に従った、ア
クセス・ドライバ1545とRAPI 1550との間
のインタラクティブなシーケンスを例示する。本システ
ムでは、アクセス・ドライバ1545とRAPI 15
50との間にワーク・セッションを確立して、アクセス
・ドライバ1545がRAPI 1550にBIOSサ
ービスを利用するための1つ以上のサービス要求を送信
できるようにしなければならない。RAPI1550と
のワーク・セッションを確立するために、アクセス・ド
ライバ1545は、セッション要求を作成して(ブロッ
ク1605)、そのセッション要求をRAPI 155
0に送信する(ブロック1610)。
クセス・ドライバ1545とRAPI 1550との間
のインタラクティブなシーケンスを例示する。本システ
ムでは、アクセス・ドライバ1545とRAPI 15
50との間にワーク・セッションを確立して、アクセス
・ドライバ1545がRAPI 1550にBIOSサ
ービスを利用するための1つ以上のサービス要求を送信
できるようにしなければならない。RAPI1550と
のワーク・セッションを確立するために、アクセス・ド
ライバ1545は、セッション要求を作成して(ブロッ
ク1605)、そのセッション要求をRAPI 155
0に送信する(ブロック1610)。
【0077】セッション要求900の一実施形態のフォ
ーマットを図12に示す。各セッション要求900に
は、セッション・オペレーション・コード905、パラ
メータ・リスト910、およびセッション署名915が
含まれる。セッション・オペレーション・コード905
は、1つのタイプのセッション・オペレーションを表す
数値である。1つの実施形態におけるセッション・オペ
レーションの図解例には、セッションを開始または確立
するオペレーション、およびセッションを終了またはタ
ーミネートするオペレーションが含まれる。各タイプの
セッション・オペレーションには、1つ以上のパラメー
タ910を掲載したリストが要求される場合がある。1
つの実施形態では、パラメータのリスト910はパラメ
ータが常駐するメモリのロケーションを示すポインタで
ある。各セッション要求900にも、コンピュータ・ウ
ィルスのような外部からのコード・セグメントが、要求
を取り込んで再実行することによってBIOSを破損さ
せることを防止するための、セッション要求署名915
が含まれる。
ーマットを図12に示す。各セッション要求900に
は、セッション・オペレーション・コード905、パラ
メータ・リスト910、およびセッション署名915が
含まれる。セッション・オペレーション・コード905
は、1つのタイプのセッション・オペレーションを表す
数値である。1つの実施形態におけるセッション・オペ
レーションの図解例には、セッションを開始または確立
するオペレーション、およびセッションを終了またはタ
ーミネートするオペレーションが含まれる。各タイプの
セッション・オペレーションには、1つ以上のパラメー
タ910を掲載したリストが要求される場合がある。1
つの実施形態では、パラメータのリスト910はパラメ
ータが常駐するメモリのロケーションを示すポインタで
ある。各セッション要求900にも、コンピュータ・ウ
ィルスのような外部からのコード・セグメントが、要求
を取り込んで再実行することによってBIOSを破損さ
せることを防止するための、セッション要求署名915
が含まれる。
【0078】図10に、セッション要求の作成について
概説する。ブロック1705およびブロック1710で
は、所望のセッション・オペレーションを表すセッショ
ン・オペレーション・コードとその所望のセッション・
オペレーションに要求されるパラメータのリストは、セ
ッション要求に挿入される。ブロック1715、172
0、および1725は、セッション要求署名の生成を示
す。暗号の技術では、メッセージに対してデジタル署名
を作成する行為はメッセージに対する「署名」として知
られている。当該技術では、メッセージに署名したり、
またはメッセージに対するデジタル署名を作成したりす
るためのアルゴリズムが知られていることに注意する必
要がある。さらに、ブロック1715、1720、およ
び1725に示されるように、デジタル署名を作成する
ための既存のアルゴリズムには、署名すべきメッセージ
のハッシュ値の計算や、秘密鍵を使用したハッシュ値の
暗号化などが一般に含まれることにも注意する必要があ
る。
概説する。ブロック1705およびブロック1710で
は、所望のセッション・オペレーションを表すセッショ
ン・オペレーション・コードとその所望のセッション・
オペレーションに要求されるパラメータのリストは、セ
ッション要求に挿入される。ブロック1715、172
0、および1725は、セッション要求署名の生成を示
す。暗号の技術では、メッセージに対してデジタル署名
を作成する行為はメッセージに対する「署名」として知
られている。当該技術では、メッセージに署名したり、
またはメッセージに対するデジタル署名を作成したりす
るためのアルゴリズムが知られていることに注意する必
要がある。さらに、ブロック1715、1720、およ
び1725に示されるように、デジタル署名を作成する
ための既存のアルゴリズムには、署名すべきメッセージ
のハッシュ値の計算や、秘密鍵を使用したハッシュ値の
暗号化などが一般に含まれることにも注意する必要があ
る。
【0079】アメリカ連邦標準・技術局(Nation
al Institute ofStandards
and Technology)によって提案されるデ
ィジタル署名アルゴリズム(Digital Sign
ature Algorithm(「DSA」))の使
用が検討される。さらに、リベスト−シャミール−アド
レマン(Rivest,Shamir,and Adl
eman(「RSA」))アルゴリズムの使用も検討さ
れる。しかし、本発明では、デジタル署名を作成するた
めの他のアルゴリズムも使用できることに注意する必要
がある。
al Institute ofStandards
and Technology)によって提案されるデ
ィジタル署名アルゴリズム(Digital Sign
ature Algorithm(「DSA」))の使
用が検討される。さらに、リベスト−シャミール−アド
レマン(Rivest,Shamir,and Adl
eman(「RSA」))アルゴリズムの使用も検討さ
れる。しかし、本発明では、デジタル署名を作成するた
めの他のアルゴリズムも使用できることに注意する必要
がある。
【0080】図10のブロック1715に示されるよう
に、セッション・メッセージはセッション・オペレーシ
ョン・コードとパラメータ・リストを含むように形成さ
れる。ブロック1720では、セッション・メッセージ
に対するハッシュ値が計算される。ハッシュ値を計算す
るアルゴリズムは、当該技術において周知であることに
注意しなければならない。当該技術に熟練した人々は、
本発明の実施形態における使用に適したハッシュ関数
は、一方向で無衝突のハッシュ値を計算できるハッシュ
関数であることを認識する。ブロック1725では、セ
ッション要求署名は、セッション・メッセージに対して
計算されたハッシュ値を現在の権限証明に格納された秘
密鍵を使用して暗号化することによって作成される。
に、セッション・メッセージはセッション・オペレーシ
ョン・コードとパラメータ・リストを含むように形成さ
れる。ブロック1720では、セッション・メッセージ
に対するハッシュ値が計算される。ハッシュ値を計算す
るアルゴリズムは、当該技術において周知であることに
注意しなければならない。当該技術に熟練した人々は、
本発明の実施形態における使用に適したハッシュ関数
は、一方向で無衝突のハッシュ値を計算できるハッシュ
関数であることを認識する。ブロック1725では、セ
ッション要求署名は、セッション・メッセージに対して
計算されたハッシュ値を現在の権限証明に格納された秘
密鍵を使用して暗号化することによって作成される。
【0081】権限証明には、一般にアクセス・ドライバ
1545やRAPI 1550(図9に示される)など
のシステム・コンポーネントを有効にして、安全にした
セッションまたはサービス要求を作成するとともに、そ
れらの要求の保全性を検証するのに十分な情報が収めら
れている。図11は、本発明の一実施形態による権限証
明800のフォーマットを示す。模範的な権限証明に
は、少なくとも公開鍵805、秘密鍵810、および証
明署名815のフィールドが含まれる。後述するよう
に、権限証明に格納される情報は、セッションとサービ
ス要求のセキュリティ制限を強化する目的で使用され
る。
1545やRAPI 1550(図9に示される)など
のシステム・コンポーネントを有効にして、安全にした
セッションまたはサービス要求を作成するとともに、そ
れらの要求の保全性を検証するのに十分な情報が収めら
れている。図11は、本発明の一実施形態による権限証
明800のフォーマットを示す。模範的な権限証明に
は、少なくとも公開鍵805、秘密鍵810、および証
明署名815のフィールドが含まれる。後述するよう
に、権限証明に格納される情報は、セッションとサービ
ス要求のセキュリティ制限を強化する目的で使用され
る。
【0082】図9のブロック1615に戻ると、RAP
I 1550は、ブロック1610でアクセス・ドライ
バ1545によって送信されるセッション要求の中で指
定されたセッションを確立する。図14に、セッション
の確立に要求される動作について概説する。ブロック1
105では、メッセージは、セッション・オペレーショ
ン・コードと、アクセス・ドライバから受信されるセッ
ション要求内で使用可能なパラメータのリストから構築
される。構築されたメッセージに対するハッシュ値が計
算される(ブロック1110)。セッション要求署名
は、RAPIが有する現在の権限証明のコピーに含まれ
る公開鍵を使用して、セッション要求から抽出され解読
される(ブロック1115)。後で示すように、RAP
Iは、アクセス・ドライバに対する権限証明を作成して
提供する役割を果たす。しかし、RAPIは、それ自体
が使用する目的で最新の権限証明のコピーも保持する。
ブロック1120では、解読されたセッション署名は、
構築されたメッセージに対して計算されたハッシュ値と
比較される。計算されたハッシュ値が、解読されたセッ
ション要求署名と等しい場合、RAPIはセッションの
開始に進む(ブロック1125)。
I 1550は、ブロック1610でアクセス・ドライ
バ1545によって送信されるセッション要求の中で指
定されたセッションを確立する。図14に、セッション
の確立に要求される動作について概説する。ブロック1
105では、メッセージは、セッション・オペレーショ
ン・コードと、アクセス・ドライバから受信されるセッ
ション要求内で使用可能なパラメータのリストから構築
される。構築されたメッセージに対するハッシュ値が計
算される(ブロック1110)。セッション要求署名
は、RAPIが有する現在の権限証明のコピーに含まれ
る公開鍵を使用して、セッション要求から抽出され解読
される(ブロック1115)。後で示すように、RAP
Iは、アクセス・ドライバに対する権限証明を作成して
提供する役割を果たす。しかし、RAPIは、それ自体
が使用する目的で最新の権限証明のコピーも保持する。
ブロック1120では、解読されたセッション署名は、
構築されたメッセージに対して計算されたハッシュ値と
比較される。計算されたハッシュ値が、解読されたセッ
ション要求署名と等しい場合、RAPIはセッションの
開始に進む(ブロック1125)。
【0083】図9に戻って、セッションを確立した後、
RAPI 1550は新しい権限証明を作成する(ブロ
ック1620)。上述したように、RAPI 1550
は、それ自体が使用する目的で最新の権限証明のコピー
を保持する。RAPI 1550は、既存の権限証明を
新しい証明と置き換える。置き換え後、新しい証明は最
新の証明になる。
RAPI 1550は新しい権限証明を作成する(ブロ
ック1620)。上述したように、RAPI 1550
は、それ自体が使用する目的で最新の権限証明のコピー
を保持する。RAPI 1550は、既存の権限証明を
新しい証明と置き換える。置き換え後、新しい証明は最
新の証明になる。
【0084】図18は、権限証明を作成するプロセスを
示す。権限証明を作成するために、新しいキー・ペアは
提供される暗号の本体から取得される(ブロック250
5)。上記に定義したように、新しいキー・ペアには公
開鍵と秘密鍵が含まれる。新しいキーは、新しい権限証
明に挿入される(ブロック2510と2515)。証明
メッセージは、新しい公開鍵と秘密鍵の両方を含むよう
に形成される(ブロック2520)。証明メッセージに
対するハッシュ値が計算される(ブロック2525)。
証明署名は、証明メッセージに対するハッシュ値と、新
しい秘密鍵を使用して作成される(ブロック253
0)。証明署名は、その後新しい権限証明に挿入される
(ブロック2535)。
示す。権限証明を作成するために、新しいキー・ペアは
提供される暗号の本体から取得される(ブロック250
5)。上記に定義したように、新しいキー・ペアには公
開鍵と秘密鍵が含まれる。新しいキーは、新しい権限証
明に挿入される(ブロック2510と2515)。証明
メッセージは、新しい公開鍵と秘密鍵の両方を含むよう
に形成される(ブロック2520)。証明メッセージに
対するハッシュ値が計算される(ブロック2525)。
証明署名は、証明メッセージに対するハッシュ値と、新
しい秘密鍵を使用して作成される(ブロック253
0)。証明署名は、その後新しい権限証明に挿入される
(ブロック2535)。
【0085】図9に戻って、RAPI 1550は新し
い権限証明をアクセス・ドライバ1545に返送する
(ブロック1625)。新しい権限証明を受信すると、
アクセス・ドライバ1545は、新しい証明内の情報に
よって現在の権限証明を更新する(ブロック163
0)。したがって、新しい権限証明内の情報はその後の
サービス要求の作成に使用される。ブロック1635で
は、アクセス・ドライバ1545は、RAPI 155
0によって提供された関数を呼び出すためのサービス要
求を作成する。
い権限証明をアクセス・ドライバ1545に返送する
(ブロック1625)。新しい権限証明を受信すると、
アクセス・ドライバ1545は、新しい証明内の情報に
よって現在の権限証明を更新する(ブロック163
0)。したがって、新しい権限証明内の情報はその後の
サービス要求の作成に使用される。ブロック1635で
は、アクセス・ドライバ1545は、RAPI 155
0によって提供された関数を呼び出すためのサービス要
求を作成する。
【0086】図13は、本発明の一実施形態によるサー
ビス要求1000のフォーマットを示す。各サービス要
求1000には、サービス・オペレーション・コード1
005、パラメータのリスト1010、およびサービス
署名1015が含まれる。サービス・オペレーション・
コード1005は、1つのタイプのサービス・オペレー
ションを表す数値である。1つの実施形態におけるサー
ビス・オペレーションの図解例には、非揮発性メモリに
格納されたデータの読み込みおよび書き込みの動作が含
まれる場合がある。各種類のサービス・オペレーション
には、パラメータのリストに含まれる1つ以上のパラメ
ータが要求される場合がある。1つの実施形態では、パ
ラメータのリストは多数のパラメータが常駐するメモリ
のロケーションを示すポインタである。さらに、各サー
ビス要求1000には、コンピュータ・ウィルスのよう
な外部からのコード・セグメントが、サービス要求を取
り込んで再実行することによってシステムを使用不能に
したりまたはシステムに大きな被害を与えたりすること
を防止するための、サービス要求署名1015が含まれ
る。
ビス要求1000のフォーマットを示す。各サービス要
求1000には、サービス・オペレーション・コード1
005、パラメータのリスト1010、およびサービス
署名1015が含まれる。サービス・オペレーション・
コード1005は、1つのタイプのサービス・オペレー
ションを表す数値である。1つの実施形態におけるサー
ビス・オペレーションの図解例には、非揮発性メモリに
格納されたデータの読み込みおよび書き込みの動作が含
まれる場合がある。各種類のサービス・オペレーション
には、パラメータのリストに含まれる1つ以上のパラメ
ータが要求される場合がある。1つの実施形態では、パ
ラメータのリストは多数のパラメータが常駐するメモリ
のロケーションを示すポインタである。さらに、各サー
ビス要求1000には、コンピュータ・ウィルスのよう
な外部からのコード・セグメントが、サービス要求を取
り込んで再実行することによってシステムを使用不能に
したりまたはシステムに大きな被害を与えたりすること
を防止するための、サービス要求署名1015が含まれ
る。
【0087】図15に、本発明の一実施形態によるサー
ビスの作成について概説する。ブロック1205および
ブロック1210では、実行すべき所望のサービス・オ
ペレーションを表すサービス・オペレーション・コード
と、その所望のオペレーションに要求されるパラメータ
のリストは、サービス要求に挿入される。ブロック12
15、1220、および1225は、サービス要求署名
の作成を示す。一度作成されると、サービス要求署名は
サービス要求に挿入される(ブロック1230)。
ビスの作成について概説する。ブロック1205および
ブロック1210では、実行すべき所望のサービス・オ
ペレーションを表すサービス・オペレーション・コード
と、その所望のオペレーションに要求されるパラメータ
のリストは、サービス要求に挿入される。ブロック12
15、1220、および1225は、サービス要求署名
の作成を示す。一度作成されると、サービス要求署名は
サービス要求に挿入される(ブロック1230)。
【0088】図9に戻って、アクセス・ドライバ154
5は、ブロック1635で作成されたサービス要求をR
API 1550に送信する(ブロック1640)。サ
ービス要求を受信すると、RAPI 1550は要求を
処理する(ブロック1645)。図16に、本発明の一
実施形態に従った、サービス要求の処理に要求される動
作について示す。ブロック1305では、メッセージ
は、サービス・オペレーション・コードと、アクセス・
ドライバから受信されたサービス要求内で使用可能なパ
ラメータのリストから構築される。構築されたメッセー
ジに対するハッシュ値が計算される(ブロック131
0)。サービス要求署名は、RAPIが有する現在の権
限証明のコピーに含まれる公開鍵を使用して、セッショ
ン要求から抽出され解読される(ブロック1315)。
ブロック1320では、解読されたセッション署名は、
構築されたメッセージに対して計算されたハッシュ値と
比較される。計算されたハッシュ値が解読されたセッシ
ョン要求署名と等しい場合、RAPIはサービス要求で
指定されたサービスを実行する(ブロック1325)。
それ以外の場合、指定されたサービスは実行されない。
5は、ブロック1635で作成されたサービス要求をR
API 1550に送信する(ブロック1640)。サ
ービス要求を受信すると、RAPI 1550は要求を
処理する(ブロック1645)。図16に、本発明の一
実施形態に従った、サービス要求の処理に要求される動
作について示す。ブロック1305では、メッセージ
は、サービス・オペレーション・コードと、アクセス・
ドライバから受信されたサービス要求内で使用可能なパ
ラメータのリストから構築される。構築されたメッセー
ジに対するハッシュ値が計算される(ブロック131
0)。サービス要求署名は、RAPIが有する現在の権
限証明のコピーに含まれる公開鍵を使用して、セッショ
ン要求から抽出され解読される(ブロック1315)。
ブロック1320では、解読されたセッション署名は、
構築されたメッセージに対して計算されたハッシュ値と
比較される。計算されたハッシュ値が解読されたセッシ
ョン要求署名と等しい場合、RAPIはサービス要求で
指定されたサービスを実行する(ブロック1325)。
それ以外の場合、指定されたサービスは実行されない。
【0089】図9に戻って、サービス要求を処理した
後、RAPI 1550は新しい権限証明を作成する
(ブロック1650)。上記に説明したように、図15
は権限証明の作成プロセスを示す。RAPI 1550
は、それ自体が使用する目的で最新の権限証明のコピー
を保持する。さらに、RAPI 1550は、新しい権
限証明のコピーをアクセス・ドライバ1545に返送す
る。
後、RAPI 1550は新しい権限証明を作成する
(ブロック1650)。上記に説明したように、図15
は権限証明の作成プロセスを示す。RAPI 1550
は、それ自体が使用する目的で最新の権限証明のコピー
を保持する。さらに、RAPI 1550は、新しい権
限証明のコピーをアクセス・ドライバ1545に返送す
る。
【0090】新しい権限証明を受信すると、アクセス・
ドライバ1545は、新しい証明内の情報によって現在
の権限証明を更新する(ブロック1630)。したがっ
て、新しい権限証明内の情報はその後のサービス要求の
作成に使用される。ブロック1635では、アクセス・
ドライバ1545はセッション要求を作成して、RAP
I 1550に現在のセッションを終了するように要求
する。上記に説明したように、図10にセッション要求
の作成に関わる動作について概説する。セッション要求
の作成に続いて、アクセス・ドライバ1545はRAP
I 1550に要求を送信する。
ドライバ1545は、新しい証明内の情報によって現在
の権限証明を更新する(ブロック1630)。したがっ
て、新しい権限証明内の情報はその後のサービス要求の
作成に使用される。ブロック1635では、アクセス・
ドライバ1545はセッション要求を作成して、RAP
I 1550に現在のセッションを終了するように要求
する。上記に説明したように、図10にセッション要求
の作成に関わる動作について概説する。セッション要求
の作成に続いて、アクセス・ドライバ1545はRAP
I 1550に要求を送信する。
【0091】セッションを終了またはターミネートする
ためのセッション要求を受信すると、RAPI 155
0はセッションを終了する(ブロック1680)。図1
7に、現在のセッションの終了に関わる動作を示す。ブ
ロック1405では、メッセージは、セッション・オペ
レーション・コードと、アクセス・ドライバから受信さ
れるセッション要求内で使用可能なパラメータのリスト
から構築される。構築されたメッセージに対するハッシ
ュ値が計算される(ブロック1410)。セッション要
求署名は、RAPIが有する現在の権限証明に含まれる
公開鍵を使用して、セッション要求から抽出され解読さ
れる(ブロック1415)。ブロック1420では、解
読されたセッション署名は、構築されたメッセージに対
して計算されたハッシュ値と比較される。計算されたハ
ッシュ値が解読されたセッション要求署名と等しい場
合、RAPIは現在のセッションの終了に進む(ブロッ
ク1425)。
ためのセッション要求を受信すると、RAPI 155
0はセッションを終了する(ブロック1680)。図1
7に、現在のセッションの終了に関わる動作を示す。ブ
ロック1405では、メッセージは、セッション・オペ
レーション・コードと、アクセス・ドライバから受信さ
れるセッション要求内で使用可能なパラメータのリスト
から構築される。構築されたメッセージに対するハッシ
ュ値が計算される(ブロック1410)。セッション要
求署名は、RAPIが有する現在の権限証明に含まれる
公開鍵を使用して、セッション要求から抽出され解読さ
れる(ブロック1415)。ブロック1420では、解
読されたセッション署名は、構築されたメッセージに対
して計算されたハッシュ値と比較される。計算されたハ
ッシュ値が解読されたセッション要求署名と等しい場
合、RAPIは現在のセッションの終了に進む(ブロッ
ク1425)。
【0092】図9に戻って、セッションを終了した後、
RAPI 1550は新しい権限証明を作成する(ブロ
ック1685)。上記に説明したように、図15は権限
証明の作成プロセスを示す。RAPI1550は、次に
新しい権限証明をアクセス・ドライバ1545に返送す
る(ブロック1690)。新しい権限証明を受信する
と、アクセス・ドライバ1545は、新しい証明内の情
報によって現在の権限証明を更新する(ブロック169
5)。したがって、新しい権限証明内の情報は、その後
のセッション内における要求の作成に使用される。
RAPI 1550は新しい権限証明を作成する(ブロ
ック1685)。上記に説明したように、図15は権限
証明の作成プロセスを示す。RAPI1550は、次に
新しい権限証明をアクセス・ドライバ1545に返送す
る(ブロック1690)。新しい権限証明を受信する
と、アクセス・ドライバ1545は、新しい証明内の情
報によって現在の権限証明を更新する(ブロック169
5)。したがって、新しい権限証明内の情報は、その後
のセッション内における要求の作成に使用される。
【0093】図9に、アクセス・ドライバがワーク・セ
ッション内に1つのサービス要求のみを作成する状態を
示す。実際には、各ワーク・セッション間で、複数のサ
ービス要求を作成してRAPI 1550に送信するこ
とができる。
ッション内に1つのサービス要求のみを作成する状態を
示す。実際には、各ワーク・セッション間で、複数のサ
ービス要求を作成してRAPI 1550に送信するこ
とができる。
【0094】要約すると、本発明には、ウィルスのよう
なシステム外からのコンポーネントがBIOS関数また
はサービスを呼び出すことを防止するためのセキュリテ
ィ手段として、セッションおよびサービス要求内にデジ
タル署名を含めることが要求される。さらに、それぞれ
の連続したセッションまたはサービス要求には、外部コ
ンポーネントがセッションおよび/またはサービス要求
を取り込んで再実行することによってシステムに悪影響
を及ぼすことを防止するための、新しい秘密鍵を使用し
て作成されたデジタル署名が含まれる。したがって、本
発明で使用されるセキュリティ手段によって、BIOS
関数の安全で確実な利用が保証される。
なシステム外からのコンポーネントがBIOS関数また
はサービスを呼び出すことを防止するためのセキュリテ
ィ手段として、セッションおよびサービス要求内にデジ
タル署名を含めることが要求される。さらに、それぞれ
の連続したセッションまたはサービス要求には、外部コ
ンポーネントがセッションおよび/またはサービス要求
を取り込んで再実行することによってシステムに悪影響
を及ぼすことを防止するための、新しい秘密鍵を使用し
て作成されたデジタル署名が含まれる。したがって、本
発明で使用されるセキュリティ手段によって、BIOS
関数の安全で確実な利用が保証される。
【0095】本発明に関してはある特定の好ましい実施
形態によって説明したが、当該技術において通常の技能
を有する人々にとって明らかなその他の実施形態も本発
明の適用範囲内にある。したがって、本発明の適用範囲
は、後述する請求項のみによって定義されるように意図
される。
形態によって説明したが、当該技術において通常の技能
を有する人々にとって明らかなその他の実施形態も本発
明の適用範囲内にある。したがって、本発明の適用範囲
は、後述する請求項のみによって定義されるように意図
される。
【0096】
【付表B】
【付表C】
【付表D1】
【付表D2】
【付表D3】
【図1】本発明のシステムおよび方法が使用される情報
配信システムの一実施形態を示すシステム・ブロック図
である。
配信システムの一実施形態を示すシステム・ブロック図
である。
【図2】本発明の実施形態を実施するプロセッサ・シス
テムまたはユーザ・コンピュータ・システムの例を示す
図である。
テムまたはユーザ・コンピュータ・システムの例を示す
図である。
【図3】本発明のシステムおよび方法が使用される図2
のコンピュータ・システムの一実施形態を示す図であ
る。
のコンピュータ・システムの一実施形態を示す図であ
る。
【図4】本発明のシステムおよび方法を使用するオペレ
ーティング・システムのアーキテクチャを示す全体機能
ブロック図である。
ーティング・システムのアーキテクチャを示す全体機能
ブロック図である。
【図5】本発明の原理により実現されるアクセス・ドラ
イバ46初期設定プロセスを示すブロック図である。
イバ46初期設定プロセスを示すブロック図である。
【図6A】本発明の初期設定プロセスの一実施形態を示
すフローチャートである。
すフローチャートである。
【図6B】図6Aのプロセス・ブロック610の詳細を
示すフローチャートである。
示すフローチャートである。
【図6C】図6Aのプロセス・ブロック630の詳細を
示すフローチャートである。
示すフローチャートである。
【図7A】本発明の実行プロセスを示すフローチャート
である。
である。
【図7B】図7Aのプロセス・ブロック640の詳細を
示すフローチャートである。
示すフローチャートである。
【図8】本発明のシステムおよび方法を使用するオペレ
ーティング・システムのアーキテクチャを示す他の全体
機能ブロック図である。
ーティング・システムのアーキテクチャを示す他の全体
機能ブロック図である。
【図9】本発明の一実施形態による2つのシステム構成
要素間のインタラクティブ・シーケンスのシーケンスを
示す図である。
要素間のインタラクティブ・シーケンスのシーケンスを
示す図である。
【図10】本発明の一実施形態によるセッション要求の
生成の概要を示す図である。
生成の概要を示す図である。
【図11】本発明の一実施形態による権限認証を示す図
である。
である。
【図12】本発明の一実施形態によるセッション要求を
示す図である。
示す図である。
【図13】本発明の一実施形態によるサービス要求を示
す図である。
す図である。
【図14】本発明の一実施形態によるワーク・セッショ
ンを確立するのに必要な処置の概要を示す図である。
ンを確立するのに必要な処置の概要を示す図である。
【図15】本発明の一実施形態によるサービス要求の生
成の概要を示す図である。
成の概要を示す図である。
【図16】本発明の一実施形態によるサービス要求の処
理に必要な処置を示す図である。
理に必要な処置を示す図である。
【図17】本発明の一実施形態による現行ワーク・セッ
ションを終了する際に必要な処置を示す図である。
ションを終了する際に必要な処置を示す図である。
【図18】本発明の一実施形態による権限認証を生成す
るプロセスを示す図である。
るプロセスを示す図である。
10 情報配信システム 20 サービス・センター 22 サーバ 24 データベース 26 コンピュータ 30 通信リンク 40 ユーザ・コンピュータ・システム 50 リモート・ネットワーク 80 システムBIOS 82 システムBIOSモジュール 84 ROMアプリケーション・プログラム・インタフ
ェース 86 初期スタートアップ・アプリ・モジュール 88 初期ペイロード 90 暗号鍵 92 暗号エンジン 94 表示エンジン
ェース 86 初期スタートアップ・アプリ・モジュール 88 初期ペイロード 90 暗号鍵 92 暗号エンジン 94 表示エンジン
【手続補正書】
【提出日】平成12年10月18日(2000.10.
18)
18)
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図2】
【図3】
【図4】
【図11】
【図5】
【図12】
【図6A】
【図13】
【図6B】
【図6C】
【図7A】
【図7B】
【図8】
【図9】
【図10】
【図14】
【図15】
【図16】
【図17】
【図18】
フロントページの続き (72)発明者 マシュー・イー・ジルマー アメリカ合衆国・91784・カリフォルニア 州・アップランド・ノース セカンド ア ベニュ・2033 (72)発明者 カン・ファン アメリカ合衆国・92782・カリフォルニア 州・タスティン・サラトガ ドライブ・ 13281
Claims (52)
- 【請求項1】 プロセッサ・ベースのシステムにおいて
仮想メモリから物理メモリ内の命令シーケンスにアクセ
スし、実行するシステムであって、 物理メモリと仮想メモリとを有し、前記プロセッサ・ベ
ースのシステムが処理される命令シーケンスを記憶する
メモリと、 記憶された前記命令シーケンスを実行するプロセッサと
を含み、 記憶された前記命令シーケンスは、前記プロセッサに、
(a)前記物理メモリから前記仮想メモリに複数の所定
命令シーケンスをマップさせるステップと、(b)前記
仮想メモリ内の前記複数の所定命令シーケンスのうちの
1つの命令シーケンスまでのオフセットを判断させるス
テップと、(c)前記複数の所定命令シーケンスのうち
の1つの命令シーケンスを実行する命令を受け取らせる
ステップと、(d)前記複数の所定命令シーケンスのう
ちの1つの命令シーケンスに制御を渡させるステップ
と、(e)前記仮想メモリから前記複数の所定命令シー
ケンスのうちの1つの命令シーケンスを処理させるステ
ップとを含むシステム。 - 【請求項2】 ステップ(c)において前記命令がアプ
リケーション・プログラムから出される請求項1に記載
のシステム。 - 【請求項3】 ステップ(c)において前記命令がクラ
ス・ドライバから出される請求項1に記載のシステム。 - 【請求項4】 ステップ(a)が、 (a.1)BIOSサービス・ディレクトリを含む複数
のBIOS命令シーケンスを物理メモリから仮想メモリ
にマップするステップと、 (a.2)BIOSデータを前記物理メモリから前記仮
想メモリにマップするステップとを含む請求項1に記載
のシステム。 - 【請求項5】 ステップ(b)が、 (b.1)前記BIOSサービス・ディレクトリの開始
仮想アドレスを判断するステップと、 (b.2)前記BIOSサービス・ディレクトリの参照
によって、前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスの開始仮想アドレスを判
断するステップとを含む請求項4に記載のシステム。 - 【請求項6】 ステップ(d)が、 (d.1)記憶場所内にレジスタ・スタックを作成する
ステップと、 (d.2)前記レジスタ・スタック内の前記複数のBI
OS命令シーケンスのうちの1つのBIOS命令シーケ
ンスの開始仮想アドレスの場所を識別するステップと、 (d.3)前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスに制御を渡すステップと
を含む請求項5に記載のシステム。 - 【請求項7】 ステップ(d.1)において、前記記憶
場所がダイナミック・ランダム・アクセス・メモリ(D
RAM)内に配置されたバッファである請求項6に記載
のシステム。 - 【請求項8】 ステップ(d.1)において、前記記憶
場所がメイン・メモリ内に配置されたバッファである請
求項6に記載のシステム。 - 【請求項9】 ステップ(e)が、 (e.1)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
か否かを判断するステップと、 (e.2)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
場合、前記仮想メモリから前記複数のBIOS命令シー
ケンスのうちの1つのBIOS命令シーケンスを実行
し、前記アドレス範囲内にない場合、前記開始仮想アド
レスが前記物理メモリから前記仮想メモリにマップされ
たアドレスの範囲内にないことを示すステップとを含む
請求項6に記載のシステム。 - 【請求項10】 プロセッサ・ベースのシステムにおい
て仮想メモリから物理メモリ内の命令シーケンスにアク
セスし、実行する方法であって、 (a)前記物理メモリから前記仮想メモリに複数の所定
命令シーケンスをマップするステップと、 (b)前記仮想メモリ内の前記複数の所定命令シーケン
スのうちの1つの命令シーケンスまでのオフセットを判
断するステップと、 (c)前記複数の所定命令シーケンスのうちの1つの命
令シーケンスを実行する命令を受け取るステップと、 (d)前記複数の所定命令シーケンスのうちの1つの命
令シーケンスに制御を渡すステップと、 (e)前記仮想メモリから前記複数の所定命令シーケン
スのうちの1つの命令シーケンスを処理するステップと
を含む方法。 - 【請求項11】 ステップ(c)において前記命令がア
プリケーション・プログラムから出される請求項10に
記載の方法。 - 【請求項12】 ステップ(c)において前記命令がク
ラス・ドライバから出される請求項10に記載の方法。 - 【請求項13】 ステップ(a)が、 (a.1)BIOSサービス・ディレクトリを含む複数
のBIOS命令シーケンスを物理メモリから仮想メモリ
にマップするステップと、 (a.2)BIOSデータを前記物理メモリから前記仮
想メモリにマップするステップとを含む請求項10に記
載の方法。 - 【請求項14】 ステップ(b)が、 (b.1)前記BIOSサービス・ディレクトリの開始
仮想アドレスを判断するステップと、 (b.2)前記BIOSサービス・ディレクトリの参照
によって、前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスの開始仮想アドレスを判
断するステップとを含む請求項13に記載の方法。 - 【請求項15】 ステップ(d)が、 (d.1)記憶場所内にレジスタ・スタックを作成する
ステップと、 (d.2)前記レジスタ・スタック内の前記複数のBI
OS命令シーケンスのうちの1つのBIOS命令シーケ
ンスの開始仮想アドレスの場所を識別するステップと、 (d.3)前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスに制御を渡すステップと
を含む請求項14に記載の方法。 - 【請求項16】 ステップ(d.1)において、前記記
憶場所がダイナミック・ランダム・アクセス・メモリ
(DRAM)内に配置されたバッファである請求項15
に記載の方法。 - 【請求項17】 ステップ(d.1)において、前記記
憶場所がメイン・メモリ内に配置されたバッファである
請求項15に記載の方法。 - 【請求項18】 ステップ(e)が、 (e.1)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
か否かを判断するステップと、 (e.2)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
場合、前記仮想メモリから前記複数のBIOS命令シー
ケンスのうちの1つのBIOS命令シーケンスを実行
し、前記アドレス範囲内にない場合、前記開始仮想アド
レスが前記物理メモリから前記仮想メモリにマップされ
たアドレスの範囲内にないことを示すステップとを含む
請求項15に記載の方法。 - 【請求項19】 プロセッサ・ベースのシステムにおい
て仮想メモリから物理メモリ内の命令シーケンスにアク
セスし、実行するコンピュータで実行可能な方法であっ
て、 (a)前記物理メモリから前記仮想メモリに複数の所定
命令シーケンスをマップするステップと、 (b)前記仮想メモリ内の前記複数の所定命令シーケン
スのうちの1つの命令シーケンスまでのオフセットを判
断するステップと、 (c)前記複数の所定命令シーケンスのうちの1つの命
令シーケンスを実行する命令を受け取るステップと、 (d)前記複数の所定命令シーケンスのうちの1つの命
令シーケンスに制御を渡すステップと、 (e)前記仮想メモリから前記複数の所定命令シーケン
スのうちの1つの命令シーケンスを処理するステップと
を含むコンピュータで実行可能な方法。 - 【請求項20】 ステップ(c)において前記命令がア
プリケーション・プログラムから出される請求項19に
記載のコンピュータで実行可能な方法。 - 【請求項21】 ステップ(a)が、 (a.1)BIOSサービス・ディレクトリを含む複数
のBIOS命令シーケンスを物理メモリから仮想メモリ
にマップするステップと、 (a.2)BIOSデータを前記物理メモリから前記仮
想メモリにマップするステップとを含む請求項19に記
載のコンピュータで実行可能な方法。 - 【請求項22】 ステップ(b)が、 (b.1)前記BIOSサービス・ディレクトリの開始
仮想アドレスを判断するステップと、 (b.2)前記BIOSサービス・ディレクトリの参照
によって、前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスの開始仮想アドレスを判
断するステップとを含む請求項21に記載のコンピュー
タで実行可能な方法。 - 【請求項23】 ステップ(d)が、 (d.1)記憶場所内にレジスタ・スタックを作成する
ステップと、 (d.2)前記レジスタ・スタック内の前記複数のBI
OS命令シーケンスのうちの1つのBIOS命令シーケ
ンスの開始仮想アドレスの場所を識別するステップと、 (d.3)前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスに制御を渡すステップと
を含む請求項22に記載のコンピュータで実行可能な方
法。 - 【請求項24】 ステップ(d.1)において、前記記
憶場所がダイナミック・ランダム・アクセス・メモリ
(DRAM)内に配置されたバッファである請求項23
に記載のコンピュータで実行可能な方法。 - 【請求項25】 ステップ(d.1)において、前記記
憶場所がメイン・メモリ内に配置されたバッファである
請求項23に記載のコンピュータで実行可能な方法。 - 【請求項26】 ステップ(e)が、 (e.1)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
か否かを判断するステップと、 (e.2)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
場合、前記仮想メモリから前記複数のBIOS命令シー
ケンスのうちの1つのBIOS命令シーケンスを実行
し、前記アドレス範囲内にない場合、前記開始仮想アド
レスが前記物理メモリから前記仮想メモリにマップされ
たアドレスの範囲内にないことを示すステップとを含む
請求項23に記載のコンピュータで実行可能な方法。 - 【請求項27】 プロセッサ・ベースのシステムにおい
て仮想メモリから物理メモリ内の命令シーケンスにアク
セスするシステムであって、 物理メモリと仮想メモリとを含み、前記プロセッサ・ベ
ースのシステムが処理される命令シーケンスを記憶する
メモリと、 記憶された前記命令シーケンスを実行するプロセッサと
を含み、 記憶された前記命令シーケンスは、前記プロセッサに、
(a)前記物理メモリから前記仮想メモリに複数の所定
命令シーケンスをマップさせるステップと、(b)前記
仮想メモリ内の前記複数の所定命令シーケンスのうちの
1つの命令シーケンスまでのオフセットを判断させるス
テップと、(c)前記複数の所定命令シーケンスのうち
の1つの命令シーケンスを実行する命令を受け取らせる
ステップと、(d)前記複数の所定命令シーケンスのう
ちの1つの命令シーケンスに制御を渡させるステップ
と、(e)前記仮想メモリから前記複数の所定命令シー
ケンスのうちの1つの命令シーケンスを処理させるステ
ップとを含むシステム。 - 【請求項28】 ステップ(a)が、 (a.1)複数のBIOS読取り専用メモリ(ROM)
命令シーケンスとBIOSサービス・ディレクトリとを
含む複数のBIOS命令シーケンスを物理メモリから仮
想メモリにマップするステップと、 (a.2)BIOSデータを前記物理メモリから前記仮
想メモリにマップするステップとを含む請求項27に記
載のシステム。 - 【請求項29】 ステップ(b)が、 (b.1)前記BIOSサービス・ディレクトリの開始
仮想アドレスを判断するステップと、 (b.2)前記BIOSサービス・ディレクトリの参照
によって、前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスの開始仮想アドレスを判
断するステップとを含む請求項28に記載のシステム。 - 【請求項30】 ステップ(d)が、 (d.1)記憶場所内にレジスタ・スタックを作成する
ステップと、 (d.2)前記レジスタ・スタック内の前記複数のBI
OS命令シーケンスのうちの1つのBIOS命令シーケ
ンスの開始仮想アドレスの場所を識別するステップとを
含む請求項29に記載のシステム。 - 【請求項31】 ステップ(e)が、 (e.1)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
か否かを判断するステップと、 (e.2)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
場合、前記仮想メモリから前記複数のBIOSROM命
令シーケンスのうちの1つのBIOS ROM命令シー
ケンスを実行し、前記アドレス範囲内にない場合、前記
開始仮想アドレスが前記物理メモリから前記仮想メモリ
にマップされたアドレスの範囲内にないことを示すステ
ップとを含む請求項30に記載のシステム。 - 【請求項32】 プロセッサ・ベースのシステムにおい
て仮想メモリから物理メモリ内の命令シーケンスにアク
セスする方法であって、 (a)前記物理メモリから前記仮想メモリに複数の所定
命令シーケンスをマップするステップと、 (b)前記仮想メモリ内の前記複数の所定命令シーケン
スのうちの1つの命令シーケンスまでのオフセットを判
断するステップと、 (c)前記複数の所定命令シーケンスのうちの1つの命
令シーケンスを実行する命令を受け取るステップと、 (d)前記複数の所定命令シーケンスのうちの1つの命
令シーケンスに制御を渡すステップと、 (e)前記仮想メモリから前記複数の所定命令シーケン
スのうちの1つの命令シーケンスを処理するステップと
を含む方法。 - 【請求項33】 ステップ(a)が、 (a.1)複数のBIOS読取り専用メモリ(ROM)
命令シーケンスとBIOSサービス・ディレクトリとを
含む複数のBIOS命令シーケンスを物理メモリから仮
想メモリにマップするステップと、 (a.2)BIOSデータを前記物理メモリから前記仮
想メモリにマップするステップとを含む請求項32に記
載の方法。 - 【請求項34】 ステップ(b)が、 (b.1)前記BIOSサービス・ディレクトリの開始
仮想アドレスを判断するステップと、 (b.2)前記BIOSサービス・ディレクトリの参照
によって、前記複数のBIOS命令シーケンスのうちの
1つのBIOS命令シーケンスの開始仮想アドレスを判
断するステップとを含む請求項33に記載の方法。 - 【請求項35】 ステップ(d)が、 (d.1)記憶場所内にレジスタ・スタックを作成する
ステップと、 (d.2)前記レジスタ・スタック内の前記複数のBI
OS ROM命令シーケンスのうちの1つのBIOS
ROM命令シーケンスの開始仮想アドレスの場所を識別
するステップとを含む請求項34に記載の方法。 - 【請求項36】 ステップ(e)が、 (e.1)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
か否かを判断するステップと、 (e.2)前記開始仮想アドレスが前記物理メモリから
前記仮想メモリにマップされたアドレスの範囲内にある
場合、前記仮想メモリから前記複数のBIOSROM命
令シーケンスのうちの1つのBIOS ROM命令シー
ケンスを読み取り、前記アドレス範囲内にない場合、前
記開始仮想アドレスが前記物理メモリから前記仮想メモ
リにマップされたアドレスの範囲内にないことを示すス
テップとを含む請求項35に記載の方法。 - 【請求項37】 基本入出力システム(BIOS)サー
ビスを安全に使用するシステムであって、 サービス要求が暗号鍵対における秘密鍵を使用して作成
されたサービス要求署名を含む、BIOSサービスを使
用するサービス要求を生成するアクセス・ドライバと、 前記暗号鍵対における公開鍵を使用して前記サービス要
求署名を検証し、前記サービス要求の保全性を保証する
インタフェースとを含むシステム。 - 【請求項38】 前記アクセス・ドライバが、前記イン
タフェースとのセッションを確立するセッション要求を
生成し、 前記セッション要求が暗号鍵対における秘密鍵を使用し
て作成されたセッション要求署名を含む請求項37に記
載のシステム。 - 【請求項39】 前記アクセス・ドライバが前記インタ
フェースとのセッションを終了するセッション要求を生
成し、 前記セッション要求が暗号鍵対における秘密鍵を使用し
て作成されたセッション要求署名を含む請求項37に記
載のシステム。 - 【請求項40】 前記インタフェースが、セッション要
求を受け取った後で、権限認証を生成し、前記権限認証
を前記アクセス・ドライバに送り、 前記アクセス・ドライバが前記権限認証に含まれた情報
を使用して後続のセッション要求を生成する請求項37
に記載のシステム。 - 【請求項41】 前記権限認証が新しい公開鍵を含む請
求項40に記載のシステム。 - 【請求項42】 前記権限認証が新しい秘密鍵を含む請
求項40に記載のシステム。 - 【請求項43】 前記権限認証が認証署名を含む請求項
40に記載のシステム。 - 【請求項44】 前記インタフェースが、前記サービス
要求を受け取った後で、権限認証を生成し、前記権限認
証を前記アクセス・ドライバに送り、 前記アクセス・ドライバが前記権限認証内の情報を使用
して後続のサービス要求を生成する請求項37に記載の
システム。 - 【請求項45】 基本入出力システム(BIOS)サー
ビスを安全に呼び出す方法であって、 BIOSサービスを呼び出すサービス要求を作成するス
テップと、 暗号鍵対における秘密鍵を使用して生成されたサービス
要求署名を使用して前記サービス要求に署名するステッ
プと、 前記暗号鍵対における公開鍵を使用して前記サービス要
求署名を検証し、前記サービス要求の保全性を保証する
ステップとを含む方法。 - 【請求項46】 前記サービス要求の処理後に新しい秘
密鍵と新しい公開鍵とを含む権限認証を作成するステッ
プと、 前記新しい秘密鍵を使用して生成されたサービス要求署
名を使用して後続のサービス要求に署名するステップ
と、 前記新しい公開鍵を使用して前記後続のサービス要求の
前記サービス要求署名を検証するステップとをさらに含
む請求項45に記載の方法。 - 【請求項47】 前記サービス要求内に含まれたサービ
ス・オペレーション・コードによって指示されたBIO
Sサービスを実行するステップをさらに含む請求項45
に記載の方法。 - 【請求項48】 ROMアプリケーション・プログラム
・インタフェース(RAPI)とのセッションを確立す
るセッション要求を作成するステップと、 暗号鍵対における秘密鍵を使用して生成されたセッショ
ン要求署名を使用して前記セッション要求に署名するス
テップと、 前記暗号鍵対における公開鍵を使用して前記セッション
要求を検証し、前記セッション要求の保全性を保証する
ステップとをさらに含む請求項45に記載の方法。 - 【請求項49】 前記セッション要求の処理後に新しい
秘密鍵と新しい公開鍵とを含む権限認証を作成するステ
ップと、 前記新しい秘密鍵を使用して生成されたセッション要求
署名を使用して後続セッション要求に署名するステップ
と、 前記新しい公開鍵を使用して前記後続セッション要求の
前記セッション要求署名を検証するステップとをさらに
含む請求項48に記載の方法。 - 【請求項50】 ROMアプリケーション・プログラム
・インタフェース(RAPI)とのセッションを終了す
るセッション要求を作成するステップと、 暗号鍵対における秘密鍵を使用して生成されたセッショ
ン要求署名を使用して前記セッション要求に署名するス
テップと、 前記暗号鍵対における公開鍵を使用して前記セッション
要求署名を検証し、前記セッション要求の保全性を保証
するステップとをさらに含む請求項45に記載の方法。 - 【請求項51】 基本入出力システム(BIOS)サー
ビスを安全に使用するようにコンピュータ可読媒体に記
録されたコンピュータ・プログラムであって、 サービス要求が暗号鍵対における秘密鍵を使用して作成
されたサービス要求署名を含む、BIOSサービスを使
用するサービス要求を生成するアクセス・ドライバと、 前記暗号鍵対における公開鍵を使用して前記サービス要
求署名を検証し、前記サービス要求の保全性を保証する
インタフェースとを含むコンピュータ・プログラム。 - 【請求項52】 データ・ストリームに埋め込まれたコ
ンピュータ・データ信号であって、 サービス要求が暗号鍵対における秘密鍵を使用して作成
されたサービス要求署名を含む、BIOSサービスを使
用するサービス要求を生成するアクセス・ドライバと、 前記暗号鍵対における公開鍵を使用して前記サービス要
求署名を検証し、前記サービス要求の保全性を保証する
インタフェースとを含むコンピュータ・データ信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/336889 | 1999-06-18 | ||
US09/336,889 US6148387A (en) | 1997-10-09 | 1999-06-18 | System and method for securely utilizing basic input and output system (BIOS) services |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001051858A true JP2001051858A (ja) | 2001-02-23 |
Family
ID=23318127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000180317A Withdrawn JP2001051858A (ja) | 1999-06-18 | 2000-06-15 | 基本入出力システム(bios)サービスを安全に使用するためのシステムおよび方法 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP2001051858A (ja) |
CN (2) | CN1282920A (ja) |
TW (1) | TW476913B (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001060081A (ja) * | 1999-06-18 | 2001-03-06 | Fiinikkusu Technologies Ltd | 不揮発性メモリに格納された画像を更新するための装置および方法 |
JP2010505160A (ja) * | 2006-09-26 | 2010-02-18 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | 永続的セキュリティシステム及び永続的セキュリティ方法 |
US8171558B2 (en) | 2003-11-20 | 2012-05-01 | International Business Machines Corporation | Inter-program authentication using dynamically-generated public/private key pairs |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069442B2 (en) | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US7149508B2 (en) * | 2003-02-05 | 2006-12-12 | Samsung Electronics Co., Ltd. | System and method for delta-based over-the-air software upgrades for a wireless mobile station |
CN103235922B (zh) * | 2007-05-09 | 2017-08-25 | 金士顿科技股份有限公司 | 安全且可扩充的固态磁盘*** |
CN102375787A (zh) * | 2010-08-12 | 2012-03-14 | 鸿富锦精密工业(深圳)有限公司 | 利用内存窗口实现接口的***及方法 |
US10013387B2 (en) | 2015-06-11 | 2018-07-03 | Cisco Technology, Inc. | Method or apparatus for flexible firmware image management in microserver |
US10719446B2 (en) * | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
CN113392044A (zh) * | 2021-05-06 | 2021-09-14 | 深圳市广和通无线股份有限公司 | 基于Windows10的定位数据传输方法、装置 |
-
2000
- 2000-06-15 JP JP2000180317A patent/JP2001051858A/ja not_active Withdrawn
- 2000-06-18 CN CN00122504.9A patent/CN1282920A/zh active Pending
- 2000-06-18 CN CN200510064880.XA patent/CN1690911A/zh active Pending
- 2000-11-21 TW TW089111925A patent/TW476913B/zh not_active IP Right Cessation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001060081A (ja) * | 1999-06-18 | 2001-03-06 | Fiinikkusu Technologies Ltd | 不揮発性メモリに格納された画像を更新するための装置および方法 |
US8171558B2 (en) | 2003-11-20 | 2012-05-01 | International Business Machines Corporation | Inter-program authentication using dynamically-generated public/private key pairs |
JP2010505160A (ja) * | 2006-09-26 | 2010-02-18 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | 永続的セキュリティシステム及び永続的セキュリティ方法 |
US8065509B2 (en) | 2006-09-26 | 2011-11-22 | Hewlett-Packard Development Company, L.P. | Persistent security system and method |
JP4848458B2 (ja) * | 2006-09-26 | 2011-12-28 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | 永続的セキュリティシステム及び永続的セキュリティ方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1282920A (zh) | 2001-02-07 |
CN1690911A (zh) | 2005-11-02 |
TW476913B (en) | 2002-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6892304B1 (en) | System and method for securely utilizing basic input and output system (BIOS) services | |
US7484099B2 (en) | Method, apparatus, and product for asserting physical presence with a trusted platform module in a hypervisor environment | |
JP5940159B2 (ja) | 非トラステッド・ユーザ端末にオペレーティング・システム・イメージをプロビジョニングするための方法、コンピュータ・プログラム、デバイス、装置 | |
US7996687B2 (en) | Product for providing a scalable trusted platform module in a hypervisor environment | |
KR100855803B1 (ko) | 협동적 임베디드 에이전트 | |
KR101066727B1 (ko) | 컴퓨팅 장치의 보안 부팅 | |
US8909940B2 (en) | Extensible pre-boot authentication | |
US8904518B2 (en) | Information processing device, information processing method, and program distribution system | |
JP5403771B2 (ja) | ファームウェアに安全なアップデートを提供するシステム及び方法 | |
US20020157010A1 (en) | Secure system and method for updating a protected partition of a hard drive | |
US6449682B1 (en) | System and method for inserting one or more files onto mass storage | |
US7137016B2 (en) | Dynamically loading power management code in a secure environment | |
JP2001056718A (ja) | ブートアップ時及びシャットダウン時の画像表示 | |
US20080077800A1 (en) | Persistent security system and method | |
US20060294355A1 (en) | Secure variable/image storage and access | |
EP3588354B1 (en) | Automatic verification method and system | |
US6715043B1 (en) | Method and system for providing memory-based device emulation | |
US6519659B1 (en) | Method and system for transferring an application program from system firmware to a storage device | |
US20040177265A1 (en) | Providing security based on a device identifier prior to booting an operating system | |
JP2001051858A (ja) | 基本入出力システム(bios)サービスを安全に使用するためのシステムおよび方法 | |
US20020169976A1 (en) | Enabling optional system features | |
CN114296873A (zh) | 一种虚拟机镜像保护方法、相关器件、芯片及电子设备 | |
WO2022019910A1 (en) | Read protection for uefi variables | |
CN113485790B (zh) | 一种虚拟机的重启方法、迁移方法和相关设备 | |
TW550509B (en) | Method and system for providing memory-based device emulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070612 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090701 |