IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シマンテック コーポレーションの特許一覧

特許7144544周辺デバイスへのアクセスを制御するためのシステム及び方法
<>
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図1
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図2
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図3
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図4
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図5
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図6
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図7
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図8
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図9
  • 特許-周辺デバイスへのアクセスを制御するためのシステム及び方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-20
(45)【発行日】2022-09-29
(54)【発明の名称】周辺デバイスへのアクセスを制御するためのシステム及び方法
(51)【国際特許分類】
   G06F 21/62 20130101AFI20220921BHJP
【FI】
G06F21/62 318
【請求項の数】 15
(21)【出願番号】P 2020570137
(86)(22)【出願日】2019-03-29
(65)【公表番号】
(43)【公表日】2021-10-21
(86)【国際出願番号】 US2019024916
(87)【国際公開番号】W WO2019245626
(87)【国際公開日】2019-12-26
【審査請求日】2021-02-04
(31)【優先権主張番号】16/013,921
(32)【優先日】2018-06-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】501113353
【氏名又は名称】ノートンライフロック インコーポレイテッド
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(72)【発明者】
【氏名】ダサラサン、ブーバラガヴァン
【審査官】吉田 歩
(56)【参考文献】
【文献】米国特許出願公開第2015/0363613(US,A1)
【文献】国際公開第2017/046789(WO,A1)
【文献】特開2012-212391(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
周辺デバイスへのアクセスを制御するためのコンピュータ実装方法であって、前記方法の少なくとも一部分が、少なくとも1つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法が、
前記1つ以上のコンピューティングデバイスによって、前記周辺デバイスへのアクセスを試みるアプリケーションプロセスに関連する入力/出力要求を受信することと、
前記1つ以上のコンピューティングデバイスによって、前記入力/出力要求が、前記周辺デバイスへのアクセスを試みる前記アプリケーションプロセスに対して異常であるかどうかを判定することであって、前記判定は、前記入力/出力要求が前記アプリケーションプロセスの異常の閾値レベルを超えていることを示す、判定することと、
前記1つ以上のコンピューティングデバイスによって、前記アプリケーションプロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記アプリケーションプロセスのアクセス状態を判定することであって、前記アクセス状態は、前記アプリケーションプロセスのコンテキスト特性に基づく、判定することと、
前記入力/出力要求が前記異常の閾値レベルを超えている場合、及び前記アクセス状態が、前記周辺デバイスへのアクセスを許可されていない前記アプリケーションプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記1つ以上のコンピューティングデバイスによって、前記入力/出力要求に応答することであって
前記アプリケーションプロセスに送信される前記仮想周辺出力は、
前記アプリケーションプロセスによって期待される出力フォーマットで前記周辺デバイスの出力をエミュレートすることと、
前記アクセス状態と前記アクセス状態の理由とに関する情報を前記アプリケーションプロセスに提供することと、を実行する、応答することと、
を含む、コンピュータ実装方法。
【請求項2】
前記アクセス状態の前記判定が、
前記アプリケーションプロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて前記コンテキスト特性を評価すること、及び
ユーザから前記1つ以上のコンピューティングデバイスによって、前記アプリケーションプロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかの指示を受信することのうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記仮想周辺出力が、
前記アプリケーションプロセスの前記アクセス状態を示す情報、及び
前記アプリケーションプロセスが前記周辺デバイスと互換性があるかどうかを示す情報のうちの少なくとも1つを含む、請求項1又は2に記載のコンピュータ実装方法。
【請求項4】
前記1つ以上のコンピューティングデバイスによって、前記仮想周辺デバイスからの前記仮想周辺出力を用いて、前記アプリケーションプロセスからの後続の入力/出力要求に応答することを更に含む、請求項1~3のいずれかに記載のコンピュータ実装方法。
【請求項5】
前記1つ以上のコンピューティングデバイスによって、前記アプリケーションプロセスが前記周辺デバイスへのアクセスを拒否されたという警告を、前記周辺デバイスに関連付けられたユーザに生成することを更に含む、請求項1~4のいずれかに記載のコンピュータ実装方法。
【請求項6】
前記1つ以上のコンピューティングデバイスによる、前記入力/出力要求への前記応答が、少なくとも1つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含む、請求項1~5のいずれかに記載のコンピュータ実装方法。
【請求項7】
前記周辺デバイスがウェブカムであり、前記仮想周辺デバイスが仮想ウェブカムであり、前記仮想周辺出力がビデオストリームである、請求項1~6のいずれかに記載のコンピュータ実装方法。
【請求項8】
周辺デバイスへのアクセスを制御するためのシステムであって、前記システムが、
前記周辺デバイスへのアクセスを試みるアプリケーションプロセスに関連する入力/出力要求を受信する、メモリ内に記憶された、受信するための手段と、
メモリ内に記憶された、判定するための手段であって、
前記入力/出力要求が、前記周辺デバイスへのアクセスを試みる前記アプリケーションプロセスに対して異常であるかどうかを判定することであって、前記判定は、前記入力/出力要求が前記アプリケーションプロセスの異常の閾値レベルを超えていることを示す、判定することと、
前記アプリケーションプロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記アプリケーションプロセスのアクセス状態を判定するとであって、前記アクセス状態が、前記アプリケーションプロセスのコンテキスト特性に基づく、判定することと、を実施する、判定するための手段と、
前記入力/出力要求が前記異常の閾値レベルを超えている場合、及び前記アクセス状態が前記周辺デバイスへのアクセスを許可されていない前記アプリケーションプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記入力/出力要求に応答する、メモリ内に記憶された、応答するための手段であって前記アプリケーションプロセスに送信される前記仮想周辺出力は、
前記アプリケーションプロセスによって期待される出力フォーマットで前記周辺デバイスの出力をエミュレートすることと、
前記アクセス状態と前記アクセス状態の理由とに関する情報を前記アプリケーションプロセスに提供することと、を実行する、応答するための手段と、
前記受信するための手段、前記判定するための手段、及び前記応答するための手段を実行するように構成された、少なくとも1つの物理プロセッサと、を備える、システム。
【請求項9】
前記判定するための手段が、前記アクセス状態を、
前記アプリケーションプロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づく前記コンテキスト特性の評価、及び
前記アプリケーションプロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかの、ユーザから受信した、指示のうちの少なくとも1つに基づいて少なくとも部分的に判定する、請求項8に記載のシステム。
【請求項10】
前記仮想周辺出力が、
前記アプリケーションプロセスの前記アクセス状態を示す情報、及び
前記アプリケーションプロセスが前記周辺デバイスと互換性があるかどうかを示す情報のうちの少なくとも1つを含む、請求項8又は9に記載のシステム。
【請求項11】
前記応答するための手段が、前記仮想周辺デバイスからの前記仮想周辺出力を用いて、前記アプリケーションプロセスからの後続の入力/出力要求に応答する、請求項8~10のいずれかに記載のシステム。
【請求項12】
前記アプリケーションプロセスが前記周辺デバイスへのアクセスを拒否されたという警告を、前記周辺デバイスに関連付けられたユーザに生成する警告生成のための手段を更に備え、
前記少なくとも1つの物理的プロセッサが、前記警告生成のための手段を実行するように更に構成される、請求項8~11のいずれかに記載のシステム。
【請求項13】
前記判定する手段が、前記アクセス状態が前記周辺デバイスへのアクセスを許可されていない前記アプリケーションプロセスを示すと判定することに応答して、前記応答するための手段は、少なくとも1つのビデオクラスドライバを使用して、物理的周辺デバイスをエミュレートする、請求項8~12のいずれかに記載のシステム。
【請求項14】
前記周辺デバイスがウェブカムであり、前記仮想周辺デバイスが仮想ウェブカムである、請求項8~13のいずれかに記載のシステム。
【請求項15】
非一時的コンピュータ可読媒体であって、1つ以上のコンピュータ実行可能命令を含み、前記命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティングデバイスに
辺デバイスへのアクセスを試みるアプリケーションプロセスに関連する入力/出力要求を受信させ、
前記入力/出力要求が、前記周辺デバイスへのアクセスを試みる前記アプリケーションプロセスに対して異常であるかどうかの判定であって、前記入力/出力要求が前記アプリケーションプロセスの異常の閾値レベルを超えていることを示す、判定をさせ、
前記アプリケーションプロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記アプリケーションプロセスのアクセス状態であって、前記アプリケーションプロセスのコンテキスト特性に基づく前記アクセス状態を判定させ、
前記入力/出力要求が前記異常の閾値レベルを超えている場合、及び前記アクセス状態が前記周辺デバイスへのアクセスを許可されていない前記アプリケーションプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記入力/出力要求に応答させ、前記アプリケーションプロセスに送信される前記仮想周辺出力は、
前記アプリケーションプロセスによって期待される出力フォーマットで前記周辺デバイスの出力をエミュレートすることと、
前記アクセス状態と前記アクセス状態の理由とに関する情報を前記アプリケーションプロセスに提供することと、を実行する、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
インターネットなどのネットワーク上で利用可能なアプリケーション及びサービスの数は、増え続けている。加えて、それらのサービスをサポートするために使用されるハードウェア及び/又はソフトウェアもまた、ネットワークを介してますます利用可能になっている。コンピュータ周辺デバイスなどのハードウェアへのリモートアクセスは、利便性を増し、通信オプションを強化するが、リスクも伴う。マルウェア機構(例えば、ワーム、ウイルス、トロイの木馬、ルートキット)の急増は、個人及び企業コンピューティングデバイス並びに関連資産のプライバシー及び完全性に脅威を課す。この脅威は、ネットワークセキュリティ対策の開発に対する継続的な要求を強化して、無認可かつ不適合なデバイスが様々なネットワーク資産へのアクセスを許可されないことを確実にする。しかしながら、そのような対策が正当なアクセスを過度に妨害しないことも望ましく、認可されたアクセスが失われるか又はブロックされたときに、そのような認可されたリモートユーザには、アクセス障害に関連する正確かつ有益な情報が提供されることが望ましい。
【0002】
したがって、本開示は、周辺デバイスへのアクセスを制御するためのシステム及び方法に対するニーズを特定し、それに対処する。
【発明の概要】
【0003】
より詳細に後述するように、本開示は、周辺デバイスへのアクセスを制御するための様々なシステム及び方法を説明する。
【0004】
一実施例では、周辺デバイスへのアクセスを制御するための方法は、周辺デバイスへのアクセスを試みるプロセスに関連する入力/出力要求を受信することを含み得る。この方法はまた、プロセスが周辺デバイスへのアクセスを得ることを許可されるかどうかを示すプロセスのアクセス状態を判定することを含み得る。アクセス状態は、プロセスのコンテキスト特性に基づくことができる。この方法は、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示す場合に、仮想周辺デバイスからの仮想周辺出力の開始に応じて、入力/出力要求に応答することを更に含み得る。
【0005】
いくつかの実施形態では、アクセス状態の判定は、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて、コンテキスト特性を評価することを含み得る。
【0006】
いくつかの実施形態では、アクセス状態の判定は、ユーザから1つ以上のコンピューティングデバイスによって、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかの指示を受信することを含み得る。
【0007】
いくつかの実施形態では、仮想周辺出力は、プロセスのアクセス状態を示す情報を含み得る。
【0008】
いくつかの実施形態では、仮想周辺出力は、プロセスが周辺デバイスと互換性があるかどうかを示す情報を含み得る。
【0009】
いくつかの実施形態では、1つ以上のコンピューティングデバイスは、仮想周辺デバイスからの仮想周辺出力を用いて、プロセスからの後続の入力/出力要求に応答することができる。
【0010】
いくつかの実施形態では、1つ以上のコンピューティングデバイスは、プロセスが周辺デバイスへのアクセスを拒否されたという警告を、周辺デバイスに関連付けられたユーザに生成することができる。
【0011】
いくつかの実施形態では、1つ以上のコンピューティングデバイスによって、入力/出力要求に応答することは、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示すと判定することに応答して、仮想周辺デバイスを開始することを含み得る。
【0012】
いくつかの実施形態では、仮想周辺デバイスの開始は、少なくとも1つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含み得る。
【0013】
いくつかの実施形態では、周辺デバイスはウェブカムであり、仮想周辺デバイスは仮想ウェブカムであり、仮想周辺出力はビデオストリームである。
【0014】
一実施形態では、周辺デバイスへのアクセスを制御するためのシステムは、メモリ内に記憶されたいくつかのモジュールを含んでもよく、このモジュールは、周辺デバイスへのアクセスを試みるプロセスに関連する入力/出力要求を受信する受信モジュールと、プロセスが周辺デバイスへのアクセスを得ることを許可されるかどうかを示すプロセスのアクセス状態を判定する判定モジュールであって、アクセス状態がプロセスのコンテキスト特性に基づくものである、判定モジュールと、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、入力/出力要求に応答する応答モジュールと、を含む。システムはまた、受信モジュール、応答モジュール、及び応答モジュールを実行するように構成された、少なくとも1つの物理プロセッサを含んでもよい。
【0015】
いくつかの実施形態では、判定モジュールは、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて、コンテキスト特性を評価することができる。
【0016】
いくつかの実施形態では、判定モジュールは、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかの指示を受信することができる。
【0017】
いくつかの実施形態では、仮想周辺出力は、プロセスのアクセス状態を示す情報を含み得る。
【0018】
いくつかの実施形態では、仮想周辺出力は、プロセスが周辺デバイスと互換性があるかどうかを示す情報を含み得る。
【0019】
いくつかの実施形態では、応答モジュールは、仮想周辺デバイスからの仮想周辺出力を用いて、プロセスからの後続の入力/出力要求に応答することができる。
【0020】
いくつかの実施形態では、警告生成モジュールは、プロセスが周辺デバイスへのアクセスを拒否されたという警告を周辺デバイスに関連付けられたユーザに生成することができ、少なくとも1つの物理プロセッサは、警告生成モジュールを実行するように構成され得る。
【0021】
いくつかの実施形態では、応答モジュールは、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示すことを判定する判定モジュールに応答して、仮想周辺デバイスを開始することができる。
【0022】
いくつかの実施形態では、応答モジュールは、少なくとも1つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることができる。
【0023】
いくつかの実施形態では、周辺デバイスはウェブカムであってもよく、仮想周辺デバイスは仮想ウェブカムであってもよい。
【0024】
いくつかの実施例では、上述の方法は、非一時的コンピュータ可読媒体上のコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、1つ以上のコンピュータ実行可能命令を含んでもよく、この命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されると、コンピューティングデバイスに、周辺デバイスへのアクセスを試みるプロセスに関連する入力/出力要求を受信させ得、プロセスが周辺デバイスへのアクセスを得ることを許可されるかどうかを示すプロセスのアクセス状態であって、プロセスのコンテキスト特性に基づくアクセス状態を判定させ得、アクセス状態が周辺デバイスへのアクセスを許可されていないプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、入力/出力要求に応答させ得る。
【0025】
いくつかの実施形態では、アクセス状態の判定は、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて、コンテキスト特性を評価することを含み得る。
【0026】
いくつかの実施形態では、アクセス状態の判定は、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかの指示をユーザから受信することを含み得る。
【0027】
いくつかの実施形態では、仮想周辺出力は、プロセスのアクセス状態を示す情報を含み得る。
【0028】
いくつかの実施形態では、仮想周辺出力は、プロセスが周辺デバイスと互換性があるかどうかを示す情報を含み得る。
【0029】
いくつかの実施形態では、非一時的コンピュータ可読媒体は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されると、コンピューティングデバイスに、仮想周辺デバイスからの仮想周辺出力を用いて、プロセスからの後続の入力/出力要求に応答させる、実行可能命令を更に含むことができる。
【0030】
いくつかの実施形態では、非一時的コンピュータ可読媒体は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されると、コンピューティングデバイスに、プロセスが周辺デバイスへのアクセスを拒否されたという警告を、周辺デバイスに関連付けられたユーザに生成させる、実行可能命令を更に含むことができる。
【0031】
いくつかの実施形態では、入力/出力要求への応答は、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示すと判定することに応答して、仮想周辺デバイスを開始することを含み得る。
【0032】
いくつかの実施形態では、仮想周辺デバイスの開始は、少なくとも1つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含み得る。
【0033】
いくつかの実施形態では、周辺デバイスはウェブカムであり、仮想周辺デバイスは仮想ウェブカムであってもよく、仮想周辺出力はビデオストリームであってもよい。
【0034】
上述の実施形態のいずれかによる特徴は、本明細書に記載される一般原理に従って、互いに組み合わせて使用されてもよい。これら及び他の実施形態、特徴、及び利点は、添付の図面及び特許請求の範囲と併せて以下の発明を実施するための形態を読むことによって更に十分に理解されるだろう。
【図面の簡単な説明】
【0035】
添付の図面は、いくつかの例示的な実施形態を図示するものであり、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示の様々な原理を実証及び説明する。
図1】周辺デバイスへのアクセスを制御するための例示的なシステムのブロック図である。
図2】周辺デバイスへのアクセスを制御するための追加の例示的なシステムのブロック図である。
図3】周辺デバイスへのアクセスを制御するための例示的な方法のフロー図である。
図4】周辺デバイスへのアクセスを制御するためのI/Oアーキテクチャの一例を有するシステムのブロック図である。
図5】周辺デバイスへのアクセスを制御するためのI/Oアーキテクチャの別の例を有するシステムのブロック図である。
図6】周辺デバイスへのアクセスを制御するためのI/Oアーキテクチャの別の例を有するシステムのブロック図である。
図7】周辺デバイスの一例としてウェブカムへのアクセスを制御するための例示的なシステムのブロック図である。
図8】周辺デバイスの一例としてオーディオカードへのアクセスを制御するための例示的なシステムのブロック図である。
図9】本明細書に記載され及び/又は図示される実施形態のうちの1つ以上を実装できる例示的なコンピューティングシステムのブロック図である。
図10】本明細書に記載され及び/又は図示される実施形態のうちの1つ以上を実装できる例示的なコンピューティングネットワークのブロック図である。 図面を通して、同一の参照符号及び記述は、必ずしも同一ではないが、類似の要素を示す。本明細書で説明される例示的実施形態は、様々な修正物及び代替的な形態が可能であるが、特定の実施形態が例として図面に示されており、本明細書に詳細に記載される。しかしながら、本明細書に記載される例示的実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の「特許請求の範囲」の範囲内にある全ての修正物、等価物、及び代替物を網羅する。
【発明を実施するための形態】
【0036】
本開示は一般に、周辺デバイスへのアクセスを制御するためのシステム及び方法を対象とする。以下でより詳細に説明されるように、周辺デバイスの仮想バージョンにプロセスをリダイレクトすることによって、プロセスが周辺デバイスへのアクセスを得ることをブロックすることにより、システムが、プロセスからのI/O要求に応答し続け、仮想周辺デバイスを介してプロセスと通信する間、周辺デバイスは安全なままになる。更に、I/O要求に応答し続け、仮想周辺デバイスを介してプロセスと通信することにより、システムは、I/O要求を単にドロップするのではなく、アクセスの拒否に関連する情報をプロセスに提供することができる。これは、I/O要求が単にドロップされると、プロセスは、周辺デバイスへのアクセスの欠如に関する不正確な情報を報告し得るために重要であり、それは接続エラーを混乱させ、接続エラーを非効率的にトラブルシューティングすることにつながり得る。
【0037】
図1図2を参照すると、以下は、周辺デバイスへのアクセスを制御するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明も図3に関連して提供される。例示的な仮想周辺デバイスの詳細な説明は、図4~5に関連して提供される。更に、本明細書に記載される実施形態のうちの1つ以上を実装することができる例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明が、それぞれ、図9及び図10に関連して提供される。
【0038】
図1は、周辺デバイス220(図2に示す)へのアクセスを制御するための例示的なシステム100のブロック図である。この図に図示されるように、例示的なシステム100は、1つ以上のタスクを実施するための1つ以上のモジュール102を含み得る。以下でより詳細に説明するように、モジュール102は、受信モジュール104、判定モジュール106、応答モジュール108、及び警告モジュール110を含み得る。別々の要素として図示されるが、図1のモジュール102のうちの1つ以上は、単一のモジュール又はアプリケーションの部分を表してもよい。
【0039】
特定の実施形態では、図1のモジュール102のうちの1つ以上は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに1つ以上のタスクを実施させ得る、1つ以上のソフトウェアアプリケーション又はプログラムを表し得る。例えば、より詳細に後述するように、モジュール102のうちの1つ以上は、図2に示されるデバイス(例えば、コンピューティングデバイス202及び/又はサーバ206)、などの1つ以上のコンピューティングデバイスに記憶され、その上で作動するように構成される、モジュールを表してもよい。図1のモジュール102のうちの1つ以上はまた、1つ以上のタスクを実施するように構成された1つ以上の専用コンピュータの全て又は部分を表し得る。
【0040】
図1に示すように、例示的なシステム100はまた、メモリ140などの1つ以上のメモリデバイスも含み得る。メモリ140は、一般に、データ及び/又はコンピュータ可読命令を記憶することができる任意のタイプ又は形態の揮発性又は不揮発性の記憶デバイス又は媒体を表す。一実施例では、メモリ140は、モジュール102のうちの1つ以上を記憶、ロード、及び/又は維持してもよい。メモリ140の例としては、非限定的に、ランダムアクセスメモリ(Random Access Memory、RAM)、読み取り専用メモリ(Read Only Memory、ROM)、フラッシュメモリ、ハードディスクドライブ(Hard Disk Drive、HDD)、ソリッドステートドライブ(Solid-State Drive、SSD)、光ディスクドライブ、キャッシュ、それらのうちの1つ以上の変形形態若しくは組み合わせ、及び/又は任意の他の好適な記憶メモリが挙げられる。
【0041】
図1に示すように、例示的なシステム100はまた、物理プロセッサ130などの1つ以上の物理プロセッサも含み得る。物理プロセッサ130は、一般に、コンピュータ可読命令を解釈及び/又は実行することができる任意のタイプ又は形態のハードウェア実装処理ユニットを表す。一実施例では、物理プロセッサ130は、メモリ140に記憶されているモジュール102のうちの1つ以上にアクセスし、かつ/又はそれを変更することができる。それに加えて、又は代替的に、物理プロセッサ130は、周辺デバイス220へのアクセスの制御を容易にするために、モジュール102のうちの1つ以上を実行し得る。物理プロセッサ130の例としては、非限定的に、マイクロプロセッサ、マイクロコントローラ、中央処理装置(Central Processing Unit、CPU)、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)、特定用途向け集積回路(Application-Specific Integrated Circuit、ASIC)、それらのうちの1つ以上の部分、それらのうちの1つ以上の変形形態若しくは組み合わせ、及び/又は任意の他の好適な物理プロセッサが挙げられる。
【0042】
図1に示すように、例示的なシステム100は、データストレージ(記憶)デバイス120などの1つ以上のデータストレージデバイスも含み得る。データストレージデバイス120は一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる任意のタイプ若しくは形態のストレージデバイス又は媒体を意味する。例えば、データストレージデバイス120は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであり得る。
【0043】
特定の実施形態では、データストレージデバイス120は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能な記憶装置に対して、読出し及び/又は書込みを行うように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、非限定的に、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。データストレージデバイス120はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令をシステム100にロードできるようにする、他の類似の構造若しくはデバイスを含んでもよい。例えば、データストレージデバイス120は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み出し、かつ書き込むように構成されてもよい。データストレージデバイス120はまた、システム100の一部であってもよく、又は他のインターフェースシステムを通してアクセスされる別個のデバイスであってもよい。
【0044】
図1に示される例などの特定の実施形態では、データストレージデバイス120は、仮想周辺デバイス122を表すデータ、仮想周辺出力124、入力/出力(I/O)要求126、及び以下に記載されるような周辺デバイス220へのアクセスを要求するプロセスのアクセス状態128を記憶することができる。
【0045】
図1の例示的なシステム100は、様々な方法で実装され得る。例えば、例示的なシステム100のうちの全て又は一部分は、図2における例示的なシステム200の部分を表してもよい。図2に示されるように、システム200は、ネットワーク204を介してサーバ206と通信するコンピューティングデバイス202を含んでもよい。一実施例では、モジュール102の機能のうちの全て又は一部分は、コンピューティングデバイス202、サーバ206、及び/又は任意の他の好適なコンピューティングシステムによって実施され得る。より詳細に後述するように、図1によるモジュール102のうちの1つ以上は、コンピューティングデバイス202及び/又はサーバ206のうちの少なくとも1つのプロセッサによって実行されると、コンピューティングデバイス202及び/又はサーバ206が周辺デバイス220へのアクセスを制御することを可能にし得る。例えば、より詳細に後述するように、モジュール102のうちの1つ以上は、コンピューティングデバイス202及び/又はサーバ206に、図2を使用する方法の請求項のステップを規定させ得る。
【0046】
コンピューティングデバイス202は、一般に、コンピュータ実行可能命令を読み取ることができる任意のタイプ又は形態のコンピューティングデバイスを表す。例えば、コンピューティングデバイス202は、クライアント側セキュリティソフトウェアを実行しているエンドポイントデバイス(例えば、モバイルコンピューティングデバイス)を含んでもよい。コンピューティングデバイス202の追加の例としては、非限定的に、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末(Personal Digital Assistant、PDA)、マルチメディアプレーヤー、埋め込みシステム、ウェアラブルデバイス(例えば、スマートウォッチ、スマートグラスなど)、スマートビークル、スマートパッケージング(例えば、アクティブ又はインテリジェントパッケージング)、ゲーム機、いわゆるモノのインターネットデバイス(例えば、スマート家電など)、それらのうちの1つ以上の変形形態若しくは組み合わせ、及び/又は他の任意の好適なコンピューティングデバイスが挙げられる。
【0047】
サーバ206は一般に、リモートコンピューティングデバイス202へのアクセスを容易にすることができる任意のタイプ又は形態のコンピューティングデバイスを表す。サーバ206の追加の例としては、非限定的に、特定のソフトウェアアプリケーションを実行する、並びに/あるいは様々なセキュリティサービス、ウェブサービス、ストレージサービス、及び/又はデータベースサービスを提供するように構成された、セキュリティサーバ、アプリケーションサーバ、ウェブサーバ、ストレージサーバ、及び/又はデータベースサーバが挙げられる。図2では単一のエンティティとして示されているが、サーバ206は、互いに連携して作動及び/又は動作する複数のサーバを含み、かつ/又はそれらを表してもよい。
【0048】
ネットワーク204は、一般に、通信若しくはデータ転送を容易にすることが可能な、任意の媒体又はアーキテクチャを表す。一実施例では、ネットワーク204は、コンピューティングデバイス202とサーバ206との間の通信を容易にしてもよい。この実施例では、ネットワーク204は、無線接続及び/又は有線接続を使用して、通信又はデータ転送を容易にしてもよい。ネットワーク204の例としては、非限定的に、イントラネット、広域ネットワーク(Wide Area Network、WAN)、ローカルエリアネットワーク(Local Area Network、LAN)、パーソナルエリアネットワーク(Personal Area Network、PAN)、インターネット、電力線通信(Power Line Communications、PLC)、セルラーネットワーク(例えば、Global System for Mobile Communications(GSM)ネットワーク)、それらのうちの1つ以上の部分、それらのうちの1つ以上の変形形態若しくは組み合わせ、及び/又は任意の他の好適なネットワークが挙げられる。
【0049】
図3は、周辺デバイス220へのアクセスを制御するための例示的なコンピュータ実装方法300のフロー図である。図3に示されるステップは、図1のシステム100、図2のシステム200、及び/又はそれらのうちの1つ以上の変形形態若しくは組み合わせを含む、任意の好適なコンピュータ実行可能コード及び/又はコンピューティングシステムによって実施され得る。ある実施例において、図3に示すステップの各々は、その構造が後に例を詳述する複数のサブステップを含む、及び/又はサブステップによって表されるアルゴリズムを表してもよい。
【0050】
図3に示すように、ステップ302において、本明細書に記載されるシステムのうちの1つ以上は、周辺デバイス220へのアクセスを試みるプロセスに関連するI/O要求126を受信してもよい。例えば、受信モジュール104は、図2のコンピューティングデバイス202の一部として、周辺デバイス220へのアクセスを求めるユーザモードアプリケーションによって呼び出されるI/O要求を受信してもよい。
【0051】
本明細書で使用するとき、用語「I/O要求」は一般に、周辺デバイス220にアクセスするための実行可能ファイルによる試みで作成される要求を指す。I/O要求の例としては、限定するものではないが、周辺デバイス220と通信するためのアプリケーションからの要求が含まれる。I/O要求は、ユーザモードアプリケーションによって作成された要求であって、一部の場合には、アプリケーションプログラミングインターフェース(API)機能によって、カーネルモードI/Oマネージャに渡される要求を含むことができる。このようなI/O要求は、周辺デバイスドライバのためのI/O要求パケット(IRP)などの、I/Oマネージャによって修正、カプセル化、又は変換された要求を含むことができる。I/O要求はまた、ファイルシステムを介したデバイスドライバへのシステムコール又は動作コールを含むことができる。
【0052】
本明細書に記載されるシステムは、受信モジュール104が、様々な方法で要求プロセス216からI/O要求を受信することができるように、ステップ302を実行してもよい。
【0053】
図4に示す一例では、受信モジュール104は、コンピューティングデバイス400内に実装され得、受信モジュール104は、オペレーティングシステムAPI 404及びI/Oマネージャ406を介して、要求プロセス216からIRPを受信するように構成さる。いくつかのそのような実施形態では、要求プロセス216は、ユーザモードでI/O要求を開始し、オペレーティングシステムAPI 404の適切な機能を呼び出すことによってI/O要求を発行し、これは次いて、I/O要求をカーネルモードI/Oマネージャ406に渡す。I/Oマネージャ406は、I/O要求を、デバイスドライバに適切なI/O要求を記述するデータ構造であって、受信モジュール104に渡される、IRPに変換する。
【0054】
図5に示す別の例では、受信モジュール104は、コンピューティングデバイス500内に実装され得、受信モジュール104は、I/O要求をユーザモードオペレーティングシステムAPI 504から処理するためのI/Oマネージャ506に統合される。いくつかのそのような実施形態では、要求プロセス216は、ユーザモードでI/O要求を開始し、オペレーティングシステムAPI 504の適切な機能を呼び出すことによってI/O要求を発行し、これは次いで、受信モジュール104を含むカーネルモードI/Oマネージャ506にI/O要求を渡す。
【0055】
図6に示す別の例では、受信モジュール104は、Linuxベースのデバイスなどの、I/Oマネージャを欠いているコンピューティング600内に実装することができる。いくつかのそのような実施形態では、要求プロセス216は、ファイルシステム604を介してオペレーティングシステムカーネルが受信モジュール104にマップするI/O要求を開始する。
【0056】
ステップ304では、本明細書に記載されるシステムのうちの1つ以上は、プロセス216が周辺デバイス220へのアクセスを得ることを許可されるかどうかを示すプロセス216のアクセス状態128を判定することができ、アクセス状態128は、プロセス216のコンテキスト特性218に基づく。いくつかの実施形態では、アクセス状態128は、プロセス216が周辺デバイス220へのアクセスを許可されるべきかどうかを示す既定のルール又は複数のルールに基づいて、コンテキスト特性218を評価することによって判定することができる。いくつかの実施形態では、アクセス状態128は、周辺デバイス220へのアクセスを許可又は拒否する権限を有するユーザからの入力に基づいて判定することができ、例えば、その入力は、プロセス216が周辺デバイス220へのアクセスを許可されるべきかどうかの指示を含む。
【0057】
例えば、判定モジュール106は、試みられたアクセス要求が特定のエンティティに対して異常であると判定し得る。本明細書で使用するとき、用語「異常」は、一般に、統計的、予想される、及び/又は予測されるベースライン又は正常レベルからの異常又は偏差の統計的、分析される、及び/又は予測される測定値(例えば、閾値レベル)を満たすアクションを指す。また、本明細書で使用するとき、用語「コンテキスト特性」は、一般に、統計的、予想される、及び/又は予測されるベースライン又は正常レベルからの異常又は偏差の統計的、分析される、及び/又は予測される測定値(例えば、閾値レベル)を満たす検出アクションに関連して、セキュリティ又は予測分析が確認され得るプロセス216の任意の属性を指す。更に、本明細書で使用するとき、用語「アクセス状態」は、一般に、プロセス216が周辺デバイス220への許可された又は拒否されたアクセスであるかどうかを示す任意の値、フラット、スコア、又は測定値を指す。
【0058】
判定モジュール106は、試みられたアクセス要求が様々な方法で異常であると判定し、アクセス状態128を適宜設定してもよい。いくつかの実施例では、判定モジュール106は、試みられたアクションが異常であると推定される程度を計算することによって、特定のエンティティに対して試みられたアクションが異常であると判定してもよい。更なる実施例では、判定モジュール106は、計算された程度が閾値を満たすと更に判定することによって、特定のエンティティに対して試みられたアクションが異常であると判定してもよい。例えば、判定モジュール106は、ルーチン又は異常のいずれかとして分類アクションのための閾値として機能する偏差レベル(例えば、標準偏差)を確立又は定義してもよい。
【0059】
いくつかの実施例では、判定モジュール106は、任意の1次、2次、及び/又はn次の値の正常範囲を定義するように、上限及び/又は下限を確立してもよい。これらの値には、カウント(例えば、特定のファイル若しくはリソースのセットにアクセスする試行のカウント、ログイン試行のカウント、異なるネットワークデバイスのカウント、及び/又は1つ以上のネットワーク若しくは周辺デバイスに発行されたコマンドのカウント)、時刻、曜日、カレンダー日、及び/又はこれらの2次測定値(例えば、時間の観点からの速度)を挙げることができる。判定モジュール106は、手動設定、管理者設定、既定値、デフォルト値、特定のエンティティによる以前の行動の統計分析、及び/又は1つ以上の他のエンティティによる以前の行動の統計分析(例えば、同じカテゴリ、タイプ、ブランド、及び/又は機能を有する他のネットワークデバイスなどの、特定のエンティティに匹敵する他のエンティティ、並びに組織、管理特権のレベル、場所、及び/又はオフィス内で同じ又は類似の役割を有する他のユーザなど)の上限及び/又は下限をベースにし得る。
【0060】
ステップ306では、本明細書に記載されるシステムのうちの1つ以上は、アクセス状態128が、周辺デバイス220へのアクセスを許可されていないプロセス216を示す場合、仮想周辺デバイス122からの仮想周辺出力124の開始に応じて、I/O要求126に応答することができる。いくつかの実施形態では、本明細書に記載される1つ以上のシステムはまた、プロセス216が周辺デバイス122へのアクセスを拒否されたという警告を、周辺デバイスに対する権限を有するユーザに生成することによって応答してもよい。いくつかの実施形態では、仮想周辺出力124は、プロセス216のアクセス状態128を示す情報を含むことができる。いくつかの実施形態では、仮想周辺出力124は、プロセス216が周辺デバイス122と互換性があるかどうかを示す情報を含むことができる。
【0061】
本明細書で使用するとき、用語「仮想周辺デバイス」は、一般に、プロセス216などのプロセスによってアクセスされ得、物理的周辺デバイス220をエミュレートする、実行可能なリソース(例えば、ドライバ、方法、機能、及び/又は手順)の集合を指す。また本明細書で使用するとき、用語「仮想周辺出力」は、一般に、物理的周辺デバイス220の出力をエミュレートするのに好適なフォーマットで仮想周辺デバイス122から送信される任意の出力信号又はメッセージを指す。
【0062】
本明細書で使用するとき、用語「周辺デバイス」は、一般に、プロセスから入力を受信し、及び/又はプロセスに出力を送信する、プロセスによってアクセスされ得るコンピュータデバイスの任意の内部又は外部構成要素を指す。
【0063】
図7に示す一例では、仮想周辺デバイス122は、コンピューティングデバイス700内に実装され得、その仮想周辺デバイス122が仮想ウェブカム722として具現化されている。仮想ウェブカム722は、I/O要求126、任意のI/O要求126をドロップすることなくプロセス216からの追加の後続のI/O要求126に応答して、ビデオストリームパケット724を生成するように構成される。ビデオストリームパケット724は、仮想周辺出力124の例として機能する。ビデオストリームパケット724は、プロセス216が実際の物理ウェブカム732へのアクセスを拒否されたことを提示する構成されたメッセージを含んでもよい。そのメッセージは、任意選択的に、許可又は互換性エラーの欠如など、アクセスが拒否された理由に関する追加情報も含んでもよい。次いで、メッセージは、実際のウェブカム732からのビデオストリームの代わりに、プロセス216を実行するユーザに表示することができる。一実施例では、仮想ウェブカム722は、Microsoft Kernel Streamプロバイダクラスドライバに基づいて仮想ウェブカムをホストするフィルタドライバを使用して実装することができる。
【0064】
図8に示す一例では、仮想周辺デバイス122は、仮想周辺デバイス122が仮想オーディオカード822として具現化されるコンピューティングデバイス800内に実装され得る。仮想オーディオカード822は、I/O要求126、及び任意のI/O要求126をドロップすることなくプロセス216からの追加の後続のI/O要求126に応答して、オーディオストリームパケット824を生成するように構成される。オーディオストリームパケット824は、仮想周辺出力124の例として機能する。オーディオストリームパケット824は、プロセス216が実際のオーディオカード832からのオーディオ出力へのアクセスを拒否されたことを提示する構成されたメッセージを含んでもよい。そのメッセージは、任意選択的に、許可又は互換性エラーの欠如など、アクセスが拒否された理由に関する追加情報も含んでもよい。次いで、メッセージは、実際のオーディオカード832.からのオーディオストリームの代わりに、プロセス216を実行しているユーザに表示することができる。
【0065】
上述のように、本明細書に記載されるシステム及び方法は、要求がデバイスドライバに送信される前に、周辺デバイスへのアクセスのためのI/O要求を受信することによって、コンピュータ周辺デバイスへのアクセスを制御することができる。本明細書に記載されるシステム及び方法は、周辺デバイスへのアクセスを求めるプロセスが、例えば、周辺所有者又は周辺デバイスに対する権限を有する他のユーザからのプロセス及び/又は入力の特性に基づいて、そのようなアクセスを許可されるべきかどうかを判定してもよい。アクセスが許可されるべきではないと判定された場合、要求された周辺デバイスをエミュレートする周辺デバイスの仮想バージョンへのアクセスに応答することによって、I/O要求は、依然として処理される。また、プロセスは、要求された周辺デバイスからの出力として期待されるフォーマットで、仮想周辺デバイスから仮想出力を受信する。仮想周辺デバイスは、仮想出力を用いて要求プロセスからの後続のI/O要求に応答し続けることができる。仮想出力は、周辺デバイスへのアクセスが拒否されたことを、プロセスに関連付けられたユーザに通知するのに好適な情報を含むことができ、アクセスが拒否された理由に関する情報を含むことができる。これにより、プロセスに関連付けられたユーザは、I/O要求が単純にドロップされた場合に生じ得る接続エラーを単に見るのではなく、拒否されたアクセスの理由を理解することが可能になる。
【0066】
図9は、本明細書に記載され及び/又は図示される実施形態のうちの1つ以上を実装できる例示的なコンピューティングシステム910を示すブロック図である。例えば、コンピューティングシステム910のうちの全て又は一部分は、単独で又は他の要素と組み合わせてのいずれかで、本明細書に記載されるステップのうちの1つ以上(図3に示されるステップのうちの1つ以上など)を実施し得、及び/又はそれを実施するための手段であり得る。コンピューティングシステム910のうちの全て又は一部分はまた、本明細書に記載及び/若しくは図示される任意の他のステップ、方法、若しくはプロセスを実施してもよく、並びに/又はそれを実施するための手段であってもよい。
【0067】
コンピューティングシステム910は、コンピュータ可読命令を実行することができる任意のシングル又はマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム910の例としては、非限定的に、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、ハンドヘルドデバイス、又は他の任意のコンピューティングシステム若しくはデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム910は、少なくとも1つのプロセッサ914及びシステムメモリ919を含んでもよい。
【0068】
プロセッサ914は、一般に、データを処理すること又は命令を解釈及び実行することができる任意のタイプ又は形態の物理的処理ユニット(例えば、ハードウェア実装型中央処理ユニット)を表す。特定の実施形態において、プロセッサ914は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ914に、本明細書に記載され及び/又は図示される例示的な実施形態のうちの1つ以上の機能を実施させてもよい。
【0069】
システムメモリ916は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる任意のタイプ又は形態の揮発性又は不揮発性の記憶デバイス又は媒体を表す。システムメモリ916の例としては、非限定的に、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、特定の実施形態において、コンピューティングシステム910は、揮発性メモリユニット(例えば、システムメモリ916など)及び不揮発性記憶デバイス(例えば、後に詳述するような一次記憶デバイス932など)の両方を含んでもよい。一実施例では、図1のモジュール102のうちの1つ以上は、システムメモリ916内にロードされ得る。
【0070】
いくつかの実施例では、システムメモリ916は、プロセッサ914による実行のために、オペレーティングシステム940を記憶及び/又はロードし得る。一実施例では、オペレーティングシステム940は、コンピュータハードウェア及びソフトウェアリソースを管理し、並びに/又はコンピューティングシステム910上のコンピュータプログラム及び/又はアプリケーションに共通のサービスを提供するソフトウェアを含み及び/又はこれを表してもよい。オペレーティングシステム940の例としては、非限定的に、LINUX、JUNOS、MICROSOFT WINDOWS、WINDOWS MOBILE、MAC OS、APPLEのIOS、UNIX、GOOGLE CHROME OS、GOOGLEのANDROID、SOLARIS、それらのうちの1つ以上の変形形態、及び/又は任意の他の好適なオペレーティングシステムが挙げられる。
【0071】
特定の実施形態では、例示的なコンピューティングシステム910はまた、プロセッサ914及びシステムメモリ916に加えて、1つ以上の構成要素又は要素も含み得る。例えば、図9に示すように、コンピューティングシステム910は、メモリコントローラ918、I/Oコントローラ920、及び通信インターフェース922を含み得、これらのそれぞれは、通信基盤912を介して相互接続され得る。通信基盤912は、一般に、コンピューティングデバイスの1つ以上の構成要素間の通信を容易にすることができる、任意のタイプ又は形態の基盤を表す。通信基盤912の例としては、非限定的に、通信バス(産業標準構成(Industry Standard Architecture、ISA)、周辺装置相互接続(Peripheral Component Interconnect、PCI)、PCIエクスプレス(PCI Express、PCIe)、又は類似のバスなど)及びネットワークが挙げられる。
【0072】
メモリコントローラ918は、一般に、メモリ若しくはデータを扱うこと、又はコンピューティングシステム910の1つ以上の構成要素間の通信を制御すること、ができる、任意のタイプ又は形態のデバイスを表す。例えば、特定の実施形態では、メモリコントローラ918は、通信基盤912を介して、プロセッサ914、システムメモリ916、及びI/Oコントローラ920の間の通信を制御してもよい。
【0073】
I/Oコントローラ920は、一般に、コンピューティングデバイスの入出力機能を調整及び/又は制御することができる、任意のタイプ又は形態のモジュールを表す。例えば、特定の実施形態では、I/Oコントローラ920は、プロセッサ914、システムメモリ916、通信インターフェース922、ディスプレイアダプタ926、入力インターフェース930、及び記憶インターフェース934などの、コンピューティングシステム910の1つ以上の要素間のデータ転送を制御又は容易にし得る。
【0074】
図9に示すように、コンピューティングシステム910はまた、ディスプレイアダプタ926を介してI/Oコントローラ920に連結された少なくとも1つのディスプレイデバイス924も含み得る。ディスプレイデバイス924は、一般に、ディスプレイアダプタ926によって転送された情報を視覚的に表示することができる、任意のタイプ又は形態のデバイスを表す。同様に、ディスプレイアダプタ926は、一般に、ディスプレイデバイス924上に表示するために通信基盤912から(又は当該技術分野において既知であるように、フレームバッファから)グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形態のデバイスを表す。
【0075】
図9に示すように、例示的なコンピューティングシステム910はまた、入力インターフェース930を介してI/Oコントローラ920に連結された少なくとも1つの入力デバイス928も含み得る。入力デバイス928は、一般に、コンピュータ又は人間のいずれかが生成した入力を例示的なコンピューティングシステム910に提供することができる任意のタイプ又は形態の入力デバイスを表す。入力デバイス928の例としては、非限定的に、キーボード、ポインティングデバイス、音声認識デバイス、それらのうちの1つ以上の変形形態若しくは組み合わせ、及び/又は任意の他の入力デバイスが挙げられる。本明細書に記載される周辺デバイス220及びその実施例はまた、入力デバイス928の例としても機能する。
【0076】
それに加えて、又は代替的に、例示的なコンピューティングシステム910は、追加のI/Oデバイスを含み得る。例えば、例示的なコンピューティングシステム910は、I/Oデバイス936を含み得る。この実施例では、I/Oデバイス936は、コンピューティングシステム910との人間の相互作用を容易にするユーザインターフェースを含み得る及び/又はそれを表し得る。I/Oデバイス936の例としては、非限定的に、コンピュータマウス、キーボード、モニタ、プリンタ、モデム、カメラ、スキャナ、マイクロフォン、タッチスクリーンデバイス、それらのうちの1つ以上の変形形態若しくは組み合わせ、及び/又は任意の他のI/Oデバイスが挙げられる。
【0077】
通信インターフェース922は、例示的なコンピューティングシステム910と1つ以上の追加のデバイスとの間の通信を容易にすることができる、任意のタイプ又は形態の通信デバイス又はアダプタを幅広く表す。例えば、特定の実施形態では、通信インターフェース922は、コンピューティングシステム910と、追加のコンピューティングシステムを含む私設又は公衆ネットワークとの間の通信を容易にし得る。通信インターフェース922の例としては、非限定的に、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース922は、インターネットなどのネットワークへの直接リンクを介してリモートサーバへの直接接続を提供し得る。通信インターフェース922はまた、例えば、ローカルエリアネットワーク(イーサネットネットワークなど)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラー電話接続、衛星データ接続、又は他の任意の好適な接続を通して、このような接続を間接的に提供してもよい。
【0078】
特定の実施形態では、通信インターフェース922はまた、外部バス又は通信チャネルを介したコンピューティングシステム910と1つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されたホストアダプタも表し得る。ホストアダプタの例としては、非限定的に、小型コンピュータシステムインターフェース(Small Computer System Interface、SCSI)ホストアダプタ、ユニバーサルシリアルバス(Universal Serial Bus、USB)ホストアダプタ、米国電気電子学会(Institute of Electrical and Electronics Engineers、IEEE)1394ホストアダプタ、アドバンストテクノロジーアタッチメント(Advanced Technology Attachment、ATA)、パラレルATA(Parallel ATA、PATA)、シリアルATA(Serial ATA、SATA)、及び外部SATA(External SATA、eSATA)ホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネットアダプタなどが挙げられる。通信インターフェース922はまた、コンピューティングシステム910が分散型又はリモートコンピューティングデバイスに関与することも可能にし得る。例えば、通信インターフェース922は、実行のために、リモートデバイスから命令を受信しても、リモートデバイスに命令を送信してもよい。
【0079】
いくつかの実施例では、システムメモリ916は、プロセッサ914による実行のために、ネットワーク通信プログラム938を記憶及び/又はロードし得る。一実施例では、ネットワーク通信プログラム938は、コンピューティングシステム910が、別のコンピューティングシステム(図9には図示せず)とのネットワーク接続942を確立すること、及び/又は通信インターフェース922を介して他のコンピューティングシステムと通信すること、を可能にする、ソフトウェアを含み得る及び/又はそれを表し得る。この実施例では、ネットワーク通信プログラム938は、ネットワーク接続942を介して他のコンピューティングシステムに送信される発信トラフィックの流れを指示し得る。それに加えて、又は代替的に、ネットワーク通信プログラム938は、プロセッサ914と関連してネットワーク接続942を介して他のコンピューティングシステムから受信された着信トラフィックの処理を指示し得る。
【0080】
図9にはこのようには示されていないが、ネットワーク通信プログラム938は、代替的に、通信インターフェース922に記憶及び/又はロードされ得る。例えば、ネットワーク通信プログラム938は、通信インターフェース922に組み込まれたプロセッサ及び/又は特定用途向け集積回路(ASIC)によって実行されるソフトウェア及び/又はファームウェアの少なくとも一部分を含み得る及び/又はそれを表し得る。
【0081】
図9に示すように、例示的なコンピューティングシステム910はまた、記憶インターフェース934を介して通信基盤912に連結された、一次記憶デバイス932及びバックアップ記憶デバイス933も含み得る。記憶デバイス932及び933は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。例えば、記憶デバイス932及び933は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであり得る。記憶インターフェース934は、一般に、記憶デバイス932及び933とコンピューティングシステム910の他の構成要素との間でデータを転送するための、任意のタイプ又は形態のインターフェース又はデバイスを表す。一実施例では、図1からのデータストレージ120は、一次記憶デバイス932内に記憶及び/又はロードされ得る。
【0082】
特定の実施形態では、記憶デバイス932及び933は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能な記憶ユニットから読み取る及び/又はそれに書き込むように構成され得る。好適な取り外し可能な記憶ユニットの例としては、非限定的に、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス932及び933はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令がコンピューティングシステム910内にロードされることを可能にするための、他の同様の構造体又はデバイスを含んでもよい。例えば、記憶デバイス932及び933は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み書きするように構成され得る。記憶デバイス932及び933は、コンピューティングシステム910の一部であっても、他のインターフェースシステムを介してアクセスされる別個のデバイスであってもよい。
【0083】
他の多くのデバイス又はサブシステムが、コンピューティングシステム910に接続され得る。反対に、図9に示す構成要素及びデバイスの全てが、本明細書に記載及び/又は図示される実施形態を実践するために存在する必要があるわけではない。上記で言及したデバイス及びサブシステムはまた、図9に示されるものとは異なる手段で相互接続されてもよい。コンピューティングシステム910はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を用いてもよい。例えば、本明細書で開示する例示的な実施形態のうちの1つ以上は、コンピュータ可読媒体上で、コンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)としてコード化されてもよい。「コンピュータ可読媒体」という用語は、本明細書で使用するとき、一般に、コンピュータ可読命令を格納又は保有することができる、任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、非限定的に、搬送波などの伝送型媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク)、光学記憶媒体(例えば、コンパクトディスク(Compact Disk、CD)、デジタルビデオディスク(Digital Video Disk、DVD)、及びブルーレイ(BLU-RAY)ディスク)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュメディア)、並びに他の分散システムなどの非一時的媒体が挙げられる。
【0084】
コンピュータプログラムを包含するコンピュータ可読媒体は、コンピューティングシステム910内にロードされ得る。コンピュータ可読媒体に記憶されたコンピュータプログラムのうちの全て又は一部分は、次いで、システムメモリ916内に、並びに/又は記憶デバイス932及び933の様々な部分内に記憶され得る。プロセッサ914によって実行されるとき、コンピューティングシステム910内にロードされたコンピュータプログラムは、プロセッサ914に、本明細書に記載及び/若しくは図示される例示的な実施形態のうちの1つ以上の機能を実施させ得、並びに/又はそれらを実施するための手段とならせ得る。それに加えて、又は代替的に、本明細書に記載及び/又は図示される例示的な実施形態のうちの1つ以上は、ファームウェア及び/又はハードウェアに実装されてもよい。例えば、コンピューティングシステム910は、本明細書に開示される例示的な実施形態のうちの1つ以上を実装するように適合された特定用途向け集積回路(ASIC)として構成され得る。
【0085】
図10は、クライアントシステム1010、1020、及び1030、並びにサーバ1040及び1045がネットワーク1050に連結され得る例示的なネットワークアーキテクチャ1000のブロック図である。上で詳述したように、ネットワークアーキテクチャ1000のうちの全て又は一部分は、単独で又は他の要素と組み合わせてのいずれかで、本明細書に開示されるステップのうちの1つ以上(図3に示されるステップのうちの1つ以上など)を実施し得、及び/又はそれを実施するための手段であり得る。ネットワークアーキテクチャ1000のうちの全て又は一部分はまた、本開示に記載される他のステップ及び特徴を実施するために使用されてもよく、並びに/又はそれを実施するための手段であってもよい。
【0086】
クライアントシステム1010、1020、及び1030は、一般に、図9の例示的なコンピューティングシステム910など、任意のタイプ又は形態のコンピューティングデバイス又はシステムを表す。同様に、サーバ1040及び1045は、一般に、様々なデータベースサービスを提供する及び/又は特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバ又はデータベースサーバなどのコンピューティングデバイス又はシステムを表す。ネットワーク1050は、一般に、例えば、イントラネット、WAN、LAN、PAN、又はインターネットを含む、任意の電気通信ネットワーク又はコンピュータネットワークを表す。一実施例では、クライアントシステム1010、1020、及び/若しくは1030、並びに/又はサーバ1040及び/若しくは1045は、図1のシステム100のうちの全て又は一部分を含み得る。
【0087】
図10に示すように、1つ以上の記憶デバイス1060(1)~(N)は、サーバ1040に直接取り付けられ得る。同様に、1つ以上の記憶デバイス1070(1)~(N)は、サーバ1045に直接取り付けられ得る。記憶デバイス1060(1)~(N)及び記憶デバイス1070(1)~(N)は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。特定の実施形態では、記憶デバイス1060(1)~(N)及び記憶デバイス1070(1)~(N)は、ネットワークファイルシステム(Network File System、NFS)、サーバメッセージブロック(Server Message Block、SMB)、又は共通インターネットファイルシステム(Common Internet File System、CIFS)など、様々なプロトコルを使用して、サーバ1040及び1045と通信するように構成された、ネットワーク接続ストレージ(Network-Attached Storage、NAS)デバイスを表してもよい。
【0088】
サーバ1040及び1045はまた、ストレージエリアネットワーク(Storage Area Network、SAN)ファブリック1080に接続されてもよい。SANファブリック1080は、一般に、複数の記憶デバイス間の通信を容易にすることができる、任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを表す。SANファブリック1080は、サーバ1040及び1045と、複数の記憶デバイス1090(1)~(N)及び/又はインテリジェント記憶アレイ1095と、の間の通信を容易にし得る。また、SANファブリック1080は、デバイス1090(1)~(N)及びアレイ1095が、クライアントシステム1010、1020、及び1030にローカルに取り付けられたデバイスとして現れるような方式で、ネットワーク1050並びにサーバ1040及び1045を介し、クライアントシステム1010、1020、及び1030と記憶デバイス1090(1)~(N)及び/又はインテリジェント記憶アレイ1095との間の通信を容易にし得る。記憶デバイス1060(1)~(N)及び記憶デバイス1070(1)~(N)と同様に、記憶デバイス1090(1)~(N)及びインテリジェント記憶アレイ1095は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。
【0089】
特定の実施形態では、図9の例示的なコンピューティングシステム910を参照すると、図9の通信インターフェース922などの通信インターフェースは、各クライアントシステム1010、1020、及び1030とネットワーク1050との間の接続を提供するために使用され得る。クライアントシステム1010、1020、及び1030は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ1040又は1045上の情報にアクセスすることが可能であり得る。かかるソフトウェアは、クライアントシステム1010、1020、及び1030が、サーバ1040、サーバ1045、記憶デバイス1060(1)~(N)、記憶デバイス1070(1)~(N)、記憶デバイス1090(1)~(N)、又はインテリジェント記憶アレイ1095によってホストされたデータにアクセスすることを可能にし得る。図10は、データを交換するために(インターネットなどの)ネットワークを使用することを示しているが、本明細書に記載及び/又は図示される実施形態は、インターネット又は任意の特定のネットワークベースの環境に限定されない。
【0090】
少なくとも1つの実施形態では、本明細書に開示される例示的な実施形態のうちの1つ以上の全て又は一部分は、コンピュータプログラムとしてコード化され、サーバ1040、サーバ1045、記憶デバイス1060(1)~(N)、記憶デバイス1070(1)~(N)、記憶デバイス1090(1)~(N)、インテリジェント記憶アレイ1095、又はこれらの任意の組み合わせ上にロードされ、これらによって実行され得る。本明細書に開示される例示的な実施形態のうちの1つ以上の全て又は一部分はまた、コンピュータプログラムとしてコード化され、サーバ1040に記憶され、サーバ1045によって実行され、ネットワーク1050を通じてクライアントシステム1010、1020、及び1030に分散されてもよい。
【0091】
上で詳述したように、コンピューティングシステム910及び/又はネットワークアーキテクチャ1000の1つ以上の構成要素は、単独で又は他の要素と組み合わせてのいずれかで、周辺デバイスへのアクセスを制御するための例示的な方法の1つ以上のステップを実施し得、及び/又はそれを実施するための手段であり得る。
【0092】
前述の開示は、特定のブロック図、フローチャート、及び実施例を使用して様々な実施形態を記載しているが、本明細書に記載及び/又は図示されるそれぞれのブロック図の構成要素、フローチャートの工程、動作、及び/又は構成要素は、個別に及び/又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア(若しくはそれらの任意の組み合わせ)の構成を使用して実装されてもよい。それに加えて、同じ機能性を達成するように他の多くのアーキテクチャを実装することができるので、他の構成要素内に包含される構成要素のいかなる開示も、本質的に例示とみなされるべきである。
【0093】
いくつかの実施例では、図1の例示的なシステム100のうちの全て又は一部分は、クラウドコンピューティング環境又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供してもよい。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしての基盤など)は、ウェブブラウザ又は他のリモートインターフェースを通してアクセス可能であってもよい。本明細書に記載される様々な機能は、リモートデスクトップ環境又は他の任意のクラウドベースのコンピューティング環境を通して提供されてもよい。
【0094】
様々な実施形態では、図1の例示的なシステム100のうちの全て又は一部分は、クラウドベースのコンピューティング環境内におけるマルチテナンシーを容易にしてもよい。換言すれば、本明細書に記載されるソフトウェアモジュールは、本明細書に記載される機能のうちの1つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム(例えば、サーバ)を構成してもよい。例えば、本明細書に記載されるソフトウェアモジュールのうちの1つ以上は、2つ以上のクライアント(例えば、顧客)がサーバ上で作動しているアプリケーションを共有するのを可能にするように、サーバをプログラムしてもよい。このようにプログラムされたサーバは、複数の顧客(すなわち、テナント)の間で、アプリケーション、オペレーティングシステム、処理システム、及び/又は記憶システムを共有してもよい。本明細書に記載されるモジュールのうちの1つ以上はまた、ある顧客が別の顧客のデータ及び/又は設定情報にアクセスできないように、顧客毎にマルチテナントアプリケーションのデータ及び/又は設定情報を分割してもよい。
【0095】
様々な実施形態によれば、図1の例示的なシステム100のうちの全て又は一部分は、仮想環境内で実装されてもよい。例えば、本明細書に記載されるモジュール及び/又はデータは、仮想機械内で常駐及び/又は実行してもよい。本明細書で使用するとき、「仮想機械」という用語は、一般に、仮想機械マネージャ(例えば、ハイパーバイザ)によってコンピューティングハードウェアから抽出される、任意のオペレーティングシステム環境を指す。それに加えて、又は代替的に、本明細書に記載されるモジュール及び/又はデータは、仮想化層内で常駐及び/又は実行してもよい。本明細書で使用するとき、「仮想化層」という用語は、一般に、オペレーティングシステム環境にオーバーレイする、並びに/あるいはそこから抽出される、任意のデータ層及び/又はアプリケーション層を指す。仮想化層は、基礎となる基本オペレーティングシステムの一部であるかのように仮想化層を提示する、ソフトウェア仮想化ソリューション(例えば、ファイルシステムフィルタ)によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションは、最初に基本ファイルシステム及び/又はレジストリ内の場所に方向付けられる呼び出しを、仮想化層内の場所にリダイレクトしてもよい。
【0096】
いくつかの実施例では、図1の例示的なシステム100のうちの全て又は一部分は、モバイルコンピューティング環境の部分を表してもよい。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子ブックリーダ、携帯情報端末、ウェアラブルコンピューティングデバイス(例えば、ヘッドマウントディスプレイを有するコンピューティングデバイス、スマートウォッチなど)などを含む、広範なモバイルコンピューティングデバイスによって実装されてもよい。いくつかの実施例では、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間での1つのみのフォアグラウンドアプリケーションの提示、リモート管理特性、タッチスクリーン特性、位置及び移動データ(例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される)、システムレベルの構成への修正を制限する、及び/又は第3者のソフトウェアが他のアプリケーションの挙動を検査する能力を限定する制限されたプラットフォーム、アプリケーションのインストールを(例えば、認可されたアプリケーションストアからのみ生じるように)制限する制御などを含む、1つ以上の個別の特性を有することができる。本明細書で説明される様々な機能は、モバイルコンピューティング環境に対して提供され得る、及び/又はモバイルコンピューティング環境と相互作用し得る。
【0097】
それに加えて、図1の例示的なシステム100のうちの全て又は一部分は、情報管理のための1つ以上のシステムの部分を表してもよく、それと相互作用してもよく、それによって生成されるデータを消費してもよく、及び/又はそれによって消費されるデータを生成してもよい。本明細書で使用するとき、「情報管理」という用語は、データの保護、組織化、及び/又は記憶を指してもよい。情報管理のためのシステムの例としては、非限定的に、記憶システム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどを挙げることができる。
【0098】
いくつかの実施形態では、図1の例示的なシステム100のうちの全て又は一部分は、情報セキュリティのための1つ以上のシステムの部分を表してもよく、それによって保護されるデータを生成してもよく、及び/又はそれと通信してもよい。本明細書で使用するとき、「情報セキュリティ」という用語は、保護されたデータに対するアクセスの制御を指してもよい。情報セキュリティのためのシステムの例としては、非限定的に、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子証拠開示システムなどを挙げることができる。
【0099】
いくつかの実施例によれば、図1の例示的なシステム100のうちの全て又は一部分は、エンドポイントセキュリティのための1つ以上のシステムの部分を表してもよく、それと通信してもよく、及び/又はそれから保護を受けてもよい。本明細書で使用するとき、「エンドポイントセキュリティ」という用語は、不正及び/若しくは違法な使用、アクセス、並びに/又は制御からのエンドポイントシステムの保護を指してもよい。エンドポイント保護のためのシステムの例としては、非限定的に、アンチマルウェアシステム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどを挙げることができる。
【0100】
本明細書に記載及び/又は図示されるプロセスパラメータ及び工程の順序は、単なる例として与えられるものであり、所望に応じて変更することができる。例えば、本明細書に図示及び/又は記載される工程は特定の順序で図示又は考察されることがあるが、これらの工程は、必ずしも図示又は考察される順序で実施される必要はない。本明細書に記載される及び/又は図示される様々な例示的な方法はまた、本明細書に記載される及び/又は図示される工程のうちの1つ以上を省略してもよく、又は開示されるものに加えて追加の工程を含んでもよい。
【0101】
様々な実施形態が、完全に機能的なコンピューティングシステムに関連して本明細書に記載され及び/又は図示されているが、これら例示的な実施形態のうちの1つ以上は、実際に配布を行うために使用されるコンピュータ可読記憶媒体の特定のタイプに関わらず、多様な形態のプログラム製品として配布され得る。本明細書に開示される実施形態はまた、特定のタスクを実施するソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体又はコンピューティングシステムに記憶されてもよい、スクリプト、バッチ、若しくは他の実行可能ファイルを含んでもよい。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態のうちの1つ以上を実施するようにコンピューティングシステムを構成してもよい。
【0102】
それに加えて、本明細書に記載されるモジュールのうちの1つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を、1つの形態から別の形態へと変換してもよい。それに加えて、又は代替的に、本明細書に列挙されるモジュールのうちの1つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイスにデータを格納し、並びに/あるいは別の方法でコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び/又は物理的コンピューティングデバイスの他の任意の部分を、1つの形態から別の形態へと変換してもよい。
【0103】
上述の記載は、本明細書に開示される例示的な実施形態の様々な態様を他の当業者が最良に利用するのを可能にするために提供されてきた。この例示的な記載は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの修正及び変形が可能である。本明細書に開示される実施形態は、あらゆる点で例示的であり、限定的ではないものとみなされるべきである。本開示の範囲を決定する際に、添付の特許請求の範囲及びそれらの等価物を参照するべきである。
【0104】
別途記載のない限り、「~に接続される」及び「~に連結される」という用語(並びにそれらの派生語)は、本明細書及び特許請求の範囲で使用するとき、直接的接続及び間接的接続(すなわち、他の要素若しくは構成要素を介する)の両方を許容するものとして解釈されるものである。それに加えて、「a」又は「an」という用語は、本明細書及び特許請求の範囲で使用するとき、「~のうち少なくとも1つ」を意味するものとして解釈されるものである。最後に、簡潔にするため、「含む」及び「有する」という用語(並びにそれらの派生語)は、本明細書及び特許請求の範囲で使用するとき、「備える」という単語と互換性があり、同じ意味を有する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10