(57)【要約】    周辺デバイスへのアクセスを制御するための開示されたコンピュータ実装方法は、周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信することを含み得る。この方法はまた、プロセスが周辺デバイスへのアクセスを得ることを許可されるかどうかを示すプロセスのアクセス状態を判定することを含み得る。アクセス状態は、プロセスのコンテキスト特性に基づくことができる。この方法は、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、入力／出力要求に応答することを更に含み得る。様々な他の方法、システム、及びコンピュータ可読媒体も開示される。  【選択図】図３
2021528744.tif 000002
【特許請求の範囲】
【請求項１】
周辺デバイスへのアクセスを制御するためのコンピュータ実装方法であって、前記方法の少なくとも一部分が、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法が、
前記１つ以上のコンピューティングデバイスによって、前記周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信することと、
前記１つ以上のコンピューティングデバイスによって、前記プロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記プロセスのアクセス状態を判定することであって、前記アクセス状態は、前記プロセスのコンテキスト特性に基づく、判定することと、
前記アクセス状態が、前記周辺デバイスへのアクセスを許可されていない前記プロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記１つ以上のコンピューティングデバイスによって、前記入力／出力要求に応答することと、を含む、コンピュータ実装方法。
【請求項２】
前記アクセス状態の前記判定が、
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて前記コンテキスト特性を評価することと、
ユーザから前記１つ以上のコンピューティングデバイスによって、前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかの指示を受信することとのうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記仮想周辺出力が、
前記プロセスの前記アクセス状態を示す情報、及び
前記プロセスが前記周辺デバイスと互換性があるかどうかを示す情報のうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記１つ以上のコンピューティングデバイスによって、前記仮想周辺デバイスからの前記仮想周辺出力を用いて、前記プロセスからの後続の入力／出力要求に応答することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記１つ以上のコンピューティングデバイスによって、前記プロセスが前記周辺デバイスへのアクセスを拒否されたという警告を、前記周辺デバイスに関連付けられたユーザに生成することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記１つ以上のコンピューティングデバイスによって、前記入力／出力要求に応答することが、少なくとも１つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含む、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記周辺デバイスがウェブカムであり、前記仮想周辺デバイスが仮想ウェブカムであり、前記仮想周辺出力がビデオストリームである、請求項１に記載のコンピュータ実装方法。
【請求項８】
周辺デバイスへのアクセスを制御するためのシステムであって、前記システムが、
前記周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信する、メモリ内に記憶された受信モジュールと、
前記プロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記プロセスのアクセス状態を判定する、メモリ内に記憶された判定モジュールであって、前記アクセス状態が、前記プロセスのコンテキスト特性に基づく、判定モジュールと、
前記アクセス状態が、前記周辺デバイスへのアクセスを許可されていない前記プロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記入力／出力要求に応答する、メモリ内に記憶された応答モジュールと、
前記受信モジュール、前記応答モジュール、及び応答モジュールを実行するよう構成された少なくとも１つの物理プロセッサと、を備える、システム。
【請求項９】
前記判定モジュールは、
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づく前記コンテキスト特性の評価、及び
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかの、ユーザから受信した指示のうちの少なくとも１つに基づいて、少なくとも部分的に前記アクセス状態を判定する、請求項８に記載のシステム。
【請求項１０】
前記仮想周辺出力が、
前記プロセスの前記アクセス状態を示す情報、及び
前記プロセスが前記周辺デバイスと互換性があるかどうかを示す情報のうちの少なくとも１つを含む、請求項８に記載のシステム。
【請求項１１】
前記応答モジュールが、前記仮想周辺デバイスからの前記仮想周辺出力を用いて、前記プロセスからの後続の入力／出力要求に応答する、請求項８に記載のシステム。
【請求項１２】
前記プロセスが前記周辺デバイスへのアクセスを拒否されたという警告を、前記周辺デバイスに関連付けられたユーザに生成する警告生成モジュールを更に備え、
前記少なくとも１つの物理プロセッサが、前記警告生成モジュールを実行するように更に構成される、請求項８に記載のシステム。
【請求項１３】
前記判定モジュールが、前記アクセス状態が前記周辺デバイスへのアクセスを許可されていない前記プロセスを示すと判定することに応答して、前記応答モジュールは、少なくとも１つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートする、請求項８に記載のシステム。
【請求項１４】
前記周辺デバイスがウェブカムであり、前記仮想周辺デバイスが仮想ウェブカムである、請求項８に記載のシステム。
【請求項１５】
非一時的コンピュータ可読媒体であって、１つ以上のコンピュータ実行可能命令を含み、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、
前記周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信させ、
前記プロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記プロセスのアクセス状態であって、前記プロセスのコンテキスト特定に基づくアクセス状態を判定させ、
前記アクセス状態が、前記周辺デバイスへのアクセスを許可されていない前記プロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記入力／出力要求に応答させる、非一時的コンピュータ可読媒体。
【請求項１６】
前記アクセス状態の前記判定が、
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて前記コンテキスト特性を評価することと、
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかの指示をユーザから受信することとのうちの少なくとも１つを含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記仮想周辺出力が、
前記プロセスの前記アクセス状態を示す情報、及び
前記プロセスが前記周辺デバイスと互換性があるかどうかを示す情報のうちの少なくとも１つを含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記コンピューティングデバイスの前記少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、前記仮想周辺デバイスからの前記仮想周辺出力を用いて前記プロセスからの後続の入力／出力要求に応答させる、実行可能命令を更に含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記コンピューティングデバイスの前記少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、前記プロセスが前記周辺デバイスへのアクセスを拒否されたという警告を、前記周辺デバイスに関連付けられたユーザに生成させる、実行可能命令を更に含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記入力／出力要求への前記応答が、少なくとも１つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
インターネットなどのネットワーク上で利用可能なアプリケーション及びサービスの数は、増え続けている。加えて、それらのサービスをサポートするために使用されるハードウェア及び／又はソフトウェアもまた、ネットワークを介してますます利用可能になっている。コンピュータ周辺デバイスなどのハードウェアへのリモートアクセスは、利便性を増し、通信オプションを強化するが、リスクも伴う。マルウェア機構（例えば、ワーム、ウイルス、トロイの木馬、ルートキット）の急増は、個人及び企業コンピューティングデバイス並びに関連資産のプライバシー及び完全性に脅威を課す。この脅威は、ネットワークセキュリティ対策の開発に対する継続的な要求を強化して、無認可かつ不適合なデバイスが様々なネットワーク資産へのアクセスを許可されないことを確実にする。しかしながら、そのような対策が正当なアクセスを過度に妨害しないことも望ましく、認可されたアクセスが失われるか又はブロックされたときに、そのような認可されたリモートユーザには、アクセス障害に関連する正確かつ有益な情報が提供されることが望ましい。
【０００２】
したがって、本開示は、周辺デバイスへのアクセスを制御するためのシステム及び方法に対するニーズを特定し、それに対処する。
【発明の概要】
【０００３】
より詳細に後述するように、本開示は、周辺デバイスへのアクセスを制御するための様々なシステム及び方法を説明する。
【０００４】
一実施例では、周辺デバイスへのアクセスを制御するための方法は、周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信することを含み得る。この方法はまた、プロセスが周辺デバイスへのアクセスを得ることを許可されるかどうかを示すプロセスのアクセス状態を判定することを含み得る。アクセス状態は、プロセスのコンテキスト特性に基づくことができる。この方法は、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示す場合に、仮想周辺デバイスからの仮想周辺出力の開始に応じて、入力／出力要求に応答することを更に含み得る。
【０００５】
いくつかの実施形態では、アクセス状態の判定は、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて、コンテキスト特性を評価することを含み得る。
【０００６】
いくつかの実施形態では、アクセス状態の判定は、ユーザから１つ以上のコンピューティングデバイスによって、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかの指示を受信することを含み得る。
【０００７】
いくつかの実施形態では、仮想周辺出力は、プロセスのアクセス状態を示す情報を含み得る。
【０００８】
いくつかの実施形態では、仮想周辺出力は、プロセスが周辺デバイスと互換性があるかどうかを示す情報を含み得る。
【０００９】
いくつかの実施形態では、１つ以上のコンピューティングデバイスは、仮想周辺デバイスからの仮想周辺出力を用いて、プロセスからの後続の入力／出力要求に応答することができる。
【００１０】
いくつかの実施形態では、１つ以上のコンピューティングデバイスは、プロセスが周辺デバイスへのアクセスを拒否されたという警告を、周辺デバイスに関連付けられたユーザに生成することができる。
【００１１】
いくつかの実施形態では、１つ以上のコンピューティングデバイスによって、入力／出力要求に応答することは、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示すと判定することに応答して、仮想周辺デバイスを開始することを含み得る。
【００１２】
いくつかの実施形態では、仮想周辺デバイスの開始は、少なくとも１つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含み得る。
【００１３】
いくつかの実施形態では、周辺デバイスはウェブカムであり、仮想周辺デバイスは仮想ウェブカムであり、仮想周辺出力はビデオストリームである。
【００１４】
一実施形態では、周辺デバイスへのアクセスを制御するためのシステムは、メモリ内に記憶されたいくつかのモジュールを含んでもよく、このモジュールは、周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信する受信モジュールと、プロセスが周辺デバイスへのアクセスを得ることを許可されるかどうかを示すプロセスのアクセス状態を判定する判定モジュールであって、アクセス状態がプロセスのコンテキスト特性に基づくものである、判定モジュールと、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、入力／出力要求に応答する応答モジュールと、を含む。システムはまた、受信モジュール、応答モジュール、及び応答モジュールを実行するように構成された、少なくとも１つの物理プロセッサを含んでもよい。
【００１５】
いくつかの実施形態では、判定モジュールは、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて、コンテキスト特性を評価することができる。
【００１６】
いくつかの実施形態では、判定モジュールは、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかの指示を受信することができる。
【００１７】
いくつかの実施形態では、仮想周辺出力は、プロセスのアクセス状態を示す情報を含み得る。
【００１８】
いくつかの実施形態では、仮想周辺出力は、プロセスが周辺デバイスと互換性があるかどうかを示す情報を含み得る。
【００１９】
いくつかの実施形態では、応答モジュールは、仮想周辺デバイスからの仮想周辺出力を用いて、プロセスからの後続の入力／出力要求に応答することができる。
【００２０】
いくつかの実施形態では、警告生成モジュールは、プロセスが周辺デバイスへのアクセスを拒否されたという警告を周辺デバイスに関連付けられたユーザに生成することができ、少なくとも１つの物理プロセッサは、警告生成モジュールを実行するように構成され得る。
【００２１】
いくつかの実施形態では、応答モジュールは、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示すことを判定する判定モジュールに応答して、仮想周辺デバイスを開始することができる。
【００２２】
いくつかの実施形態では、応答モジュールは、少なくとも１つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることができる。
【００２３】
いくつかの実施形態では、周辺デバイスはウェブカムであってもよく、仮想周辺デバイスは仮想ウェブカムであってもよい。
【００２４】
いくつかの実施例では、上述の方法は、非一時的コンピュータ可読媒体上のコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、１つ以上のコンピュータ実行可能命令を含んでもよく、この命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信させ得、プロセスが周辺デバイスへのアクセスを得ることを許可されるかどうかを示すプロセスのアクセス状態であって、プロセスのコンテキスト特性に基づくアクセス状態を判定させ得、アクセス状態が周辺デバイスへのアクセスを許可されていないプロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、入力／出力要求に応答させ得る。
【００２５】
いくつかの実施形態では、アクセス状態の判定は、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて、コンテキスト特性を評価することを含み得る。
【００２６】
いくつかの実施形態では、アクセス状態の判定は、プロセスが周辺デバイスへのアクセスを許可されるべきかどうかの指示をユーザから受信することを含み得る。
【００２７】
いくつかの実施形態では、仮想周辺出力は、プロセスのアクセス状態を示す情報を含み得る。
【００２８】
いくつかの実施形態では、仮想周辺出力は、プロセスが周辺デバイスと互換性があるかどうかを示す情報を含み得る。
【００２９】
いくつかの実施形態では、非一時的コンピュータ可読媒体は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、仮想周辺デバイスからの仮想周辺出力を用いて、プロセスからの後続の入力／出力要求に応答させる、実行可能命令を更に含むことができる。
【００３０】
いくつかの実施形態では、非一時的コンピュータ可読媒体は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、プロセスが周辺デバイスへのアクセスを拒否されたという警告を、周辺デバイスに関連付けられたユーザに生成させる、実行可能命令を更に含むことができる。
【００３１】
いくつかの実施形態では、入力／出力要求への応答は、アクセス状態が、周辺デバイスへのアクセスを許可されていないプロセスを示すと判定することに応答して、仮想周辺デバイスを開始することを含み得る。
【００３２】
いくつかの実施形態では、仮想周辺デバイスの開始は、少なくとも１つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含み得る。
【００３３】
いくつかの実施形態では、周辺デバイスはウェブカムであり、仮想周辺デバイスは仮想ウェブカムであってもよく、仮想周辺出力はビデオストリームであってもよい。
【００３４】
上述の実施形態のいずれかによる特徴は、本明細書に記載される一般原理に従って、互いに組み合わせて使用されてもよい。これら及び他の実施形態、特徴、及び利点は、添付の図面及び特許請求の範囲と併せて以下の発明を実施するための形態を読むことによって更に十分に理解されるだろう。
【図面の簡単な説明】
【００３５】
添付の図面は、いくつかの例示的な実施形態を図示するものであり、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示の様々な原理を実証及び説明する。
【図１】周辺デバイスへのアクセスを制御するための例示的なシステムのブロック図である。
【図２】周辺デバイスへのアクセスを制御するための追加の例示的なシステムのブロック図である。
【図３】周辺デバイスへのアクセスを制御するための例示的な方法のフロー図である。
【図４】周辺デバイスへのアクセスを制御するためのＩ／Ｏアーキテクチャの一例を有するシステムのブロック図である。
【図５】周辺デバイスへのアクセスを制御するためのＩ／Ｏアーキテクチャの別の例を有するシステムのブロック図である。
【図６】周辺デバイスへのアクセスを制御するためのＩ／Ｏアーキテクチャの別の例を有するシステムのブロック図である。
【図７】周辺デバイスの一例としてウェブカムへのアクセスを制御するための例示的なシステムのブロック図である。
【図８】周辺デバイスの一例としてオーディオカードへのアクセスを制御するための例示的なシステムのブロック図である。
【図９】本明細書に記載され及び／又は図示される実施形態のうちの１つ以上を実装できる例示的なコンピューティングシステムのブロック図である。
【図１０】本明細書に記載され及び／又は図示される実施形態のうちの１つ以上を実装できる例示的なコンピューティングネットワークのブロック図である。    図面を通して、同一の参照符号及び記述は、必ずしも同一ではないが、類似の要素を示す。本明細書で説明される例示的実施形態は、様々な修正物及び代替的な形態が可能であるが、特定の実施形態が例として図面に示されており、本明細書に詳細に記載される。しかしながら、本明細書に記載される例示的実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の「特許請求の範囲」の範囲内にある全ての修正物、等価物、及び代替物を網羅する。
【発明を実施するための形態】
【００３６】
本開示は一般に、周辺デバイスへのアクセスを制御するためのシステム及び方法を対象とする。以下でより詳細に説明されるように、周辺デバイスの仮想バージョンにプロセスをリダイレクトすることによって、プロセスが周辺デバイスへのアクセスを得ることをブロックすることにより、システムが、プロセスからのＩ／Ｏ要求に応答し続け、仮想周辺デバイスを介してプロセスと通信する間、周辺デバイスは安全なままになる。更に、Ｉ／Ｏ要求に応答し続け、仮想周辺デバイスを介してプロセスと通信することにより、システムは、Ｉ／Ｏ要求を単にドロップするのではなく、アクセスの拒否に関連する情報をプロセスに提供することができる。これは、Ｉ／Ｏ要求が単にドロップされると、プロセスは、周辺デバイスへのアクセスの欠如に関する不正確な情報を報告し得るために重要であり、それは接続エラーを混乱させ、接続エラーを非効率的にトラブルシューティングすることにつながり得る。
【００３７】
図１〜図２を参照すると、以下は、周辺デバイスへのアクセスを制御するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明も図３に関連して提供される。例示的な仮想周辺デバイスの詳細な説明は、図４〜５に関連して提供される。更に、本明細書に記載される実施形態のうちの１つ以上を実装することができる例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明が、それぞれ、図９及び図１０に関連して提供される。
【００３８】
図１は、周辺デバイス２２０（図２に示す）へのアクセスを制御するための例示的なシステム１００のブロック図である。この図に図示されるように、例示的なシステム１００は、１つ以上のタスクを実施するための１つ以上のモジュール１０２を含み得る。以下でより詳細に説明するように、モジュール１０２は、受信モジュール１０４、判定モジュール１０６、応答モジュール１０８、及び警告モジュール１１０を含み得る。別々の要素として図示されるが、図１のモジュール１０２のうちの１つ以上は、単一のモジュール又はアプリケーションの部分を表してもよい。
【００３９】
特定の実施形態では、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに１つ以上のタスクを実施させ得る、１つ以上のソフトウェアアプリケーション又はプログラムを表し得る。例えば、より詳細に後述するように、モジュール１０２のうちの１つ以上は、図２に示されるデバイス（例えば、コンピューティングデバイス２０２及び／又はサーバ２０６）、などの１つ以上のコンピューティングデバイスに記憶され、その上で作動するように構成される、モジュールを表してもよい。図１のモジュール１０２のうちの１つ以上はまた、１つ以上のタスクを実施するように構成された１つ以上の専用コンピュータの全て又は部分を表し得る。
【００４０】
図１に示すように、例示的なシステム１００はまた、メモリ１４０などの１つ以上のメモリデバイスも含み得る。メモリ１４０は、一般に、データ及び／又はコンピュータ可読命令を記憶することができる任意のタイプ又は形態の揮発性又は不揮発性の記憶デバイス又は媒体を表す。一実施例では、メモリ１４０は、モジュール１０２のうちの１つ以上を記憶、ロード、及び／又は維持してもよい。メモリ１４０の例としては、非限定的に、ランダムアクセスメモリ（Random Access Memory、ＲＡＭ）、読み取り専用メモリ（Read Only Memory、ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ（Hard Disk Drive、ＨＤＤ）、ソリッドステートドライブ（Solid-State Drive、ＳＳＤ）、光ディスクドライブ、キャッシュ、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の好適な記憶メモリが挙げられる。
【００４１】
図１に示すように、例示的なシステム１００はまた、物理プロセッサ１３０などの１つ以上の物理プロセッサも含み得る。物理プロセッサ１３０は、一般に、コンピュータ可読命令を解釈及び／又は実行することができる任意のタイプ又は形態のハードウェア実装処理ユニットを表す。一実施例では、物理プロセッサ１３０は、メモリ１４０に記憶されているモジュール１０２のうちの１つ以上にアクセスし、かつ／又はそれを変更することができる。それに加えて、又は代替的に、物理プロセッサ１３０は、周辺デバイス２２０へのアクセスの制御を容易にするために、モジュール１０２のうちの１つ以上を実行し得る。物理プロセッサ１３０の例としては、非限定的に、マイクロプロセッサ、マイクロコントローラ、中央処理装置（Central Processing Unit、ＣＰＵ）、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ（Field-Programmable Gate Array、ＦＰＧＡ）、特定用途向け集積回路（Application-Specific Integrated Circuit、ＡＳＩＣ）、それらのうちの１つ以上の部分、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の好適な物理プロセッサが挙げられる。
【００４２】
図１に示すように、例示的なシステム１００は、データストレージ（記憶）デバイス１２０などの１つ以上のデータストレージデバイスも含み得る。データストレージデバイス１２０は一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる任意のタイプ若しくは形態のストレージデバイス又は媒体を意味する。例えば、データストレージデバイス１２０は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであり得る。
【００４３】
特定の実施形態では、データストレージデバイス１２０は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能な記憶装置に対して、読出し及び／又は書込みを行うように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、非限定的に、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。データストレージデバイス１２０はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令をシステム１００にロードできるようにする、他の類似の構造若しくはデバイスを含んでもよい。例えば、データストレージデバイス１２０は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み出し、かつ書き込むように構成されてもよい。データストレージデバイス１２０はまた、システム１００の一部であってもよく、又は他のインターフェースシステムを通してアクセスされる別個のデバイスであってもよい。
【００４４】
図１に示される例などの特定の実施形態では、データストレージデバイス１２０は、仮想周辺デバイス１２２を表すデータ、仮想周辺出力１２４、入力／出力（Ｉ／Ｏ）要求１２６、及び以下に記載されるような周辺デバイス２２０へのアクセスを要求するプロセスのアクセス状態１２８を記憶することができる。
【００４５】
図１の例示的なシステム１００は、様々な方法で実装され得る。例えば、例示的なシステム１００のうちの全て又は一部分は、図２における例示的なシステム２００の部分を表してもよい。図２に示されるように、システム２００は、ネットワーク２０４を介してサーバ２０６と通信するコンピューティングデバイス２０２を含んでもよい。一実施例では、モジュール１０２の機能のうちの全て又は一部分は、コンピューティングデバイス２０２、サーバ２０６、及び／又は任意の他の好適なコンピューティングシステムによって実施され得る。より詳細に後述するように、図１によるモジュール１０２のうちの１つ以上は、コンピューティングデバイス２０２及び／又はサーバ２０６のうちの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイス２０２及び／又はサーバ２０６が周辺デバイス２２０へのアクセスを制御することを可能にし得る。例えば、より詳細に後述するように、モジュール１０２のうちの１つ以上は、コンピューティングデバイス２０２及び／又はサーバ２０６に、図２を使用する方法の請求項のステップを規定させ得る。
【００４６】
コンピューティングデバイス２０２は、一般に、コンピュータ実行可能命令を読み取ることができる任意のタイプ又は形態のコンピューティングデバイスを表す。例えば、コンピューティングデバイス２０２は、クライアント側セキュリティソフトウェアを実行しているエンドポイントデバイス（例えば、モバイルコンピューティングデバイス）を含んでもよい。コンピューティングデバイス２０２の追加の例としては、非限定的に、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末（Personal Digital Assistant、ＰＤＡ）、マルチメディアプレーヤー、埋め込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラスなど）、スマートビークル、スマートパッケージング（例えば、アクティブ又はインテリジェントパッケージング）、ゲーム機、いわゆるモノのインターネットデバイス（例えば、スマート家電など）、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は他の任意の好適なコンピューティングデバイスが挙げられる。
【００４７】
サーバ２０６は一般に、リモートコンピューティングデバイス２０２へのアクセスを容易にすることができる任意のタイプ又は形態のコンピューティングデバイスを表す。サーバ２０６の追加の例としては、非限定的に、特定のソフトウェアアプリケーションを実行する、並びに／あるいは様々なセキュリティサービス、ウェブサービス、ストレージサービス、及び／又はデータベースサービスを提供するように構成された、セキュリティサーバ、アプリケーションサーバ、ウェブサーバ、ストレージサーバ、及び／又はデータベースサーバが挙げられる。図２では単一のエンティティとして示されているが、サーバ２０６は、互いに連携して作動及び／又は動作する複数のサーバを含み、かつ／又はそれらを表してもよい。
【００４８】
ネットワーク２０４は、一般に、通信若しくはデータ転送を容易にすることが可能な、任意の媒体又はアーキテクチャを表す。一実施例では、ネットワーク２０４は、コンピューティングデバイス２０２とサーバ２０６との間の通信を容易にしてもよい。この実施例では、ネットワーク２０４は、無線接続及び／又は有線接続を使用して、通信又はデータ転送を容易にしてもよい。ネットワーク２０４の例としては、非限定的に、イントラネット、広域ネットワーク（Wide Area Network、ＷＡＮ）、ローカルエリアネットワーク（Local Area Network、ＬＡＮ）、パーソナルエリアネットワーク（Personal Area Network、ＰＡＮ）、インターネット、電力線通信（Power Line Communications、ＰＬＣ）、セルラーネットワーク（例えば、Global System for Mobile Communications（ＧＳＭ）ネットワーク）、それらのうちの１つ以上の部分、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の好適なネットワークが挙げられる。
【００４９】
図３は、周辺デバイス２２０へのアクセスを制御するための例示的なコンピュータ実装方法３００のフロー図である。図３に示されるステップは、図１のシステム１００、図２のシステム２００、及び／又はそれらのうちの１つ以上の変形形態若しくは組み合わせを含む、任意の好適なコンピュータ実行可能コード及び／又はコンピューティングシステムによって実施され得る。ある実施例において、図３に示すステップの各々は、その構造が後に例を詳述する複数のサブステップを含む、及び／又はサブステップによって表されるアルゴリズムを表してもよい。
【００５０】
図３に示すように、ステップ３０２において、本明細書に記載されるシステムのうちの１つ以上は、周辺デバイス２２０へのアクセスを試みるプロセスに関連するＩ／Ｏ要求１２６を受信してもよい。例えば、受信モジュール１０４は、図２のコンピューティングデバイス２０２の一部として、周辺デバイス２２０へのアクセスを求めるユーザモードアプリケーションによって呼び出されるＩ／Ｏ要求を受信してもよい。
【００５１】
本明細書で使用するとき、用語「Ｉ／Ｏ要求」は一般に、周辺デバイス２２０にアクセスするための実行可能ファイルによる試みで作成される要求を指す。Ｉ／Ｏ要求の例としては、限定するものではないが、周辺デバイス２２０と通信するためのアプリケーションからの要求が含まれる。Ｉ／Ｏ要求は、ユーザモードアプリケーションによって作成された要求であって、一部の場合には、アプリケーションプログラミングインターフェース（ＡＰＩ）機能によって、カーネルモードＩ／Ｏマネージャに渡される要求を含むことができる。このようなＩ／Ｏ要求は、周辺デバイスドライバのためのＩ／Ｏ要求パケット（ＩＲＰ）などの、Ｉ／Ｏマネージャによって修正、カプセル化、又は変換された要求を含むことができる。Ｉ／Ｏ要求はまた、ファイルシステムを介したデバイスドライバへのシステムコール又は動作コールを含むことができる。
【００５２】
本明細書に記載されるシステムは、受信モジュール１０４が、様々な方法で要求プロセス２１６からＩ／Ｏ要求を受信することができるように、ステップ３０２を実行してもよい。
【００５３】
図４に示す一例では、受信モジュール１０４は、コンピューティングデバイス４００内に実装され得、受信モジュール１０４は、オペレーティングシステムＡＰＩ  ４０４及びＩ／Ｏマネージャ４０６を介して、要求プロセス２１６からＩＲＰを受信するように構成さる。いくつかのそのような実施形態では、要求プロセス２１６は、ユーザモードでＩ／Ｏ要求を開始し、オペレーティングシステムＡＰＩ  ４０４の適切な機能を呼び出すことによってＩ／Ｏ要求を発行し、これは次いて、Ｉ／Ｏ要求をカーネルモードＩ／Ｏマネージャ４０６に渡す。Ｉ／Ｏマネージャ４０６は、Ｉ／Ｏ要求を、デバイスドライバに適切なＩ／Ｏ要求を記述するデータ構造であって、受信モジュール１０４に渡される、ＩＲＰに変換する。
【００５４】
図５に示す別の例では、受信モジュール１０４は、コンピューティングデバイス５００内に実装され得、受信モジュール１０４は、Ｉ／Ｏ要求をユーザモードオペレーティングシステムＡＰＩ  ５０４から処理するためのＩ／Ｏマネージャ５０６に統合される。いくつかのそのような実施形態では、要求プロセス２１６は、ユーザモードでＩ／Ｏ要求を開始し、オペレーティングシステムＡＰＩ  ５０４の適切な機能を呼び出すことによってＩ／Ｏ要求を発行し、これは次いで、受信モジュール１０４を含むカーネルモードＩ／Ｏマネージャ５０６にＩ／Ｏ要求を渡す。
【００５５】
図６に示す別の例では、受信モジュール１０４は、Ｌｉｎｕｘベースのデバイスなどの、Ｉ／Ｏマネージャを欠いているコンピューティング６００内に実装することができる。いくつかのそのような実施形態では、要求プロセス２１６は、ファイルシステム６０４を介してオペレーティングシステムカーネルが受信モジュール１０４にマップするＩ／Ｏ要求を開始する。
【００５６】
ステップ３０４では、本明細書に記載されるシステムのうちの１つ以上は、プロセス２１６が周辺デバイス２２０へのアクセスを得ることを許可されるかどうかを示すプロセス２１６のアクセス状態１２８を判定することができ、アクセス状態１２８は、プロセス２１６のコンテキスト特性２１８に基づく。いくつかの実施形態では、アクセス状態１２８は、プロセス２１６が周辺デバイス２２０へのアクセスを許可されるべきかどうかを示す既定のルール又は複数のルールに基づいて、コンテキスト特性２１８を評価することによって判定することができる。いくつかの実施形態では、アクセス状態１２８は、周辺デバイス２２０へのアクセスを許可又は拒否する権限を有するユーザからの入力に基づいて判定することができ、例えば、その入力は、プロセス２１６が周辺デバイス２２０へのアクセスを許可されるべきかどうかの指示を含む。
【００５７】
例えば、判定モジュール１０６は、試みられたアクセス要求が特定のエンティティに対して異常であると判定し得る。本明細書で使用するとき、用語「異常」は、一般に、統計的、予想される、及び／又は予測されるベースライン又は正常レベルからの異常又は偏差の統計的、分析される、及び／又は予測される測定値（例えば、閾値レベル）を満たすアクションを指す。また、本明細書で使用するとき、用語「コンテキスト特性」は、一般に、統計的、予想される、及び／又は予測されるベースライン又は正常レベルからの異常又は偏差の統計的、分析される、及び／又は予測される測定値（例えば、閾値レベル）を満たす検出アクションに関連して、セキュリティ又は予測分析が確認され得るプロセス２１６の任意の属性を指す。更に、本明細書で使用するとき、用語「アクセス状態」は、一般に、プロセス２１６が周辺デバイス２２０への許可された又は拒否されたアクセスであるかどうかを示す任意の値、フラット、スコア、又は測定値を指す。
【００５８】
判定モジュール１０６は、試みられたアクセス要求が様々な方法で異常であると判定し、アクセス状態１２８を適宜設定してもよい。いくつかの実施例では、判定モジュール１０６は、試みられたアクションが異常であると推定される程度を計算することによって、特定のエンティティに対して試みられたアクションが異常であると判定してもよい。更なる実施例では、判定モジュール１０６は、計算された程度が閾値を満たすと更に判定することによって、特定のエンティティに対して試みられたアクションが異常であると判定してもよい。例えば、判定モジュール１０６は、ルーチン又は異常のいずれかとして分類アクションのための閾値として機能する偏差レベル（例えば、標準偏差）を確立又は定義してもよい。
【００５９】
いくつかの実施例では、判定モジュール１０６は、任意の１次、２次、及び／又はｎ次の値の正常範囲を定義するように、上限及び／又は下限を確立してもよい。これらの値には、カウント（例えば、特定のファイル若しくはリソースのセットにアクセスする試行のカウント、ログイン試行のカウント、異なるネットワークデバイスのカウント、及び／又は１つ以上のネットワーク若しくは周辺デバイスに発行されたコマンドのカウント）、時刻、曜日、カレンダー日、及び／又はこれらの２次測定値（例えば、時間の観点からの速度）を挙げることができる。判定モジュール１０６は、手動設定、管理者設定、既定値、デフォルト値、特定のエンティティによる以前の行動の統計分析、及び／又は１つ以上の他のエンティティによる以前の行動の統計分析（例えば、同じカテゴリ、タイプ、ブランド、及び／又は機能を有する他のネットワークデバイスなどの、特定のエンティティに匹敵する他のエンティティ、並びに組織、管理特権のレベル、場所、及び／又はオフィス内で同じ又は類似の役割を有する他のユーザなど）の上限及び／又は下限をベースにし得る。
【００６０】
ステップ３０６では、本明細書に記載されるシステムのうちの１つ以上は、アクセス状態１２８が、周辺デバイス２２０へのアクセスを許可されていないプロセス２１６を示す場合、仮想周辺デバイス１２２からの仮想周辺出力１２４の開始に応じて、Ｉ／Ｏ要求１２６に応答することができる。いくつかの実施形態では、本明細書に記載される１つ以上のシステムはまた、プロセス２１６が周辺デバイス１２２へのアクセスを拒否されたという警告を、周辺デバイスに対する権限を有するユーザに生成することによって応答してもよい。いくつかの実施形態では、仮想周辺出力１２４は、プロセス２１６のアクセス状態１２８を示す情報を含むことができる。いくつかの実施形態では、仮想周辺出力１２４は、プロセス２１６が周辺デバイス１２２と互換性があるかどうかを示す情報を含むことができる。
【００６１】
本明細書で使用するとき、用語「仮想周辺デバイス」は、一般に、プロセス２１６などのプロセスによってアクセスされ得、物理的周辺デバイス２２０をエミュレートする、実行可能なリソース（例えば、ドライバ、方法、機能、及び／又は手順）の集合を指す。また本明細書で使用するとき、用語「仮想周辺出力」は、一般に、物理的周辺デバイス２２０の出力をエミュレートするのに好適なフォーマットで仮想周辺デバイス１２２から送信される任意の出力信号又はメッセージを指す。
【００６２】
本明細書で使用するとき、用語「周辺デバイス」は、一般に、プロセスから入力を受信し、及び／又はプロセスに出力を送信する、プロセスによってアクセスされ得るコンピュータデバイスの任意の内部又は外部構成要素を指す。
【００６３】
図７に示す一例では、仮想周辺デバイス１２２は、コンピューティングデバイス７００内に実装され得、その仮想周辺デバイス１２２が仮想ウェブカム７２２として具現化されている。仮想ウェブカム７２２は、Ｉ／Ｏ要求１２６、任意のＩ／Ｏ要求１２６をドロップすることなくプロセス２１６からの追加の後続のＩ／Ｏ要求１２６に応答して、ビデオストリームパケット７２４を生成するように構成される。ビデオストリームパケット７２４は、仮想周辺出力１２４の例として機能する。ビデオストリームパケット７２４は、プロセス２１６が実際の物理ウェブカム７３２へのアクセスを拒否されたことを提示する構成されたメッセージを含んでもよい。そのメッセージは、任意選択的に、許可又は互換性エラーの欠如など、アクセスが拒否された理由に関する追加情報も含んでもよい。次いで、メッセージは、実際のウェブカム７３２からのビデオストリームの代わりに、プロセス２１６を実行するユーザに表示することができる。一実施例では、仮想ウェブカム７２２は、Ｍｉｃｒｏｓｏｆｔ  Ｋｅｒｎｅｌ  Ｓｔｒｅａｍプロバイダクラスドライバに基づいて仮想ウェブカムをホストするフィルタドライバを使用して実装することができる。
【００６４】
図８に示す一例では、仮想周辺デバイス１２２は、仮想周辺デバイス１２２が仮想オーディオカード８２２として具現化されるコンピューティングデバイス８００内に実装され得る。仮想オーディオカード８２２は、Ｉ／Ｏ要求１２６、及び任意のＩ／Ｏ要求１２６をドロップすることなくプロセス２１６からの追加の後続のＩ／Ｏ要求１２６に応答して、オーディオストリームパケット８２４を生成するように構成される。オーディオストリームパケット８２４は、仮想周辺出力１２４の例として機能する。オーディオストリームパケット８２４は、プロセス２１６が実際のオーディオカード８３２からのオーディオ出力へのアクセスを拒否されたことを提示する構成されたメッセージを含んでもよい。そのメッセージは、任意選択的に、許可又は互換性エラーの欠如など、アクセスが拒否された理由に関する追加情報も含んでもよい。次いで、メッセージは、実際のオーディオカード８３２．からのオーディオストリームの代わりに、プロセス２１６を実行しているユーザに表示することができる。
【００６５】
上述のように、本明細書に記載されるシステム及び方法は、要求がデバイスドライバに送信される前に、周辺デバイスへのアクセスのためのＩ／Ｏ要求を受信することによって、コンピュータ周辺デバイスへのアクセスを制御することができる。本明細書に記載されるシステム及び方法は、周辺デバイスへのアクセスを求めるプロセスが、例えば、周辺所有者又は周辺デバイスに対する権限を有する他のユーザからのプロセス及び／又は入力の特性に基づいて、そのようなアクセスを許可されるべきかどうかを判定してもよい。アクセスが許可されるべきではないと判定された場合、要求された周辺デバイスをエミュレートする周辺デバイスの仮想バージョンへのアクセスに応答することによって、Ｉ／Ｏ要求は、依然として処理される。また、プロセスは、要求された周辺デバイスからの出力として期待されるフォーマットで、仮想周辺デバイスから仮想出力を受信する。仮想周辺デバイスは、仮想出力を用いて要求プロセスからの後続のＩ／Ｏ要求に応答し続けることができる。仮想出力は、周辺デバイスへのアクセスが拒否されたことを、プロセスに関連付けられたユーザに通知するのに好適な情報を含むことができ、アクセスが拒否された理由に関する情報を含むことができる。これにより、プロセスに関連付けられたユーザは、Ｉ／Ｏ要求が単純にドロップされた場合に生じ得る接続エラーを単に見るのではなく、拒否されたアクセスの理由を理解することが可能になる。
【００６６】
図９は、本明細書に記載され及び／又は図示される実施形態のうちの１つ以上を実装できる例示的なコンピューティングシステム９１０を示すブロック図である。例えば、コンピューティングシステム９１０のうちの全て又は一部分は、単独で又は他の要素と組み合わせてのいずれかで、本明細書に記載されるステップのうちの１つ以上（図３に示されるステップのうちの１つ以上など）を実施し得、及び／又はそれを実施するための手段であり得る。コンピューティングシステム９１０のうちの全て又は一部分はまた、本明細書に記載及び／若しくは図示される任意の他のステップ、方法、若しくはプロセスを実施してもよく、並びに／又はそれを実施するための手段であってもよい。
【００６７】
コンピューティングシステム９１０は、コンピュータ可読命令を実行することができる任意のシングル又はマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム９１０の例としては、非限定的に、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、ハンドヘルドデバイス、又は他の任意のコンピューティングシステム若しくはデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム９１０は、少なくとも１つのプロセッサ９１４及びシステムメモリ９１９を含んでもよい。
【００６８】
プロセッサ９１４は、一般に、データを処理すること又は命令を解釈及び実行することができる任意のタイプ又は形態の物理的処理ユニット（例えば、ハードウェア実装型中央処理ユニット）を表す。特定の実施形態において、プロセッサ９１４は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ９１４に、本明細書に記載され及び／又は図示される例示的な実施形態のうちの１つ以上の機能を実施させてもよい。
【００６９】
システムメモリ９１６は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる任意のタイプ又は形態の揮発性又は不揮発性の記憶デバイス又は媒体を表す。システムメモリ９１６の例としては、非限定的に、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、特定の実施形態において、コンピューティングシステム９１０は、揮発性メモリユニット（例えば、システムメモリ９１６など）及び不揮発性記憶デバイス（例えば、後に詳述するような一次記憶デバイス９３２など）の両方を含んでもよい。一実施例では、図１のモジュール１０２のうちの１つ以上は、システムメモリ９１６内にロードされ得る。
【００７０】
いくつかの実施例では、システムメモリ９１６は、プロセッサ９１４による実行のために、オペレーティングシステム９４０を記憶及び／又はロードし得る。一実施例では、オペレーティングシステム９４０は、コンピュータハードウェア及びソフトウェアリソースを管理し、並びに／又はコンピューティングシステム９１０上のコンピュータプログラム及び／又はアプリケーションに共通のサービスを提供するソフトウェアを含み及び／又はこれを表してもよい。オペレーティングシステム９４０の例としては、非限定的に、ＬＩＮＵＸ、ＪＵＮＯＳ、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ、ＷＩＮＤＯＷＳ  ＭＯＢＩＬＥ、ＭＡＣ  ＯＳ、ＡＰＰＬＥのＩＯＳ、ＵＮＩＸ、ＧＯＯＧＬＥ  ＣＨＲＯＭＥ  ＯＳ、ＧＯＯＧＬＥのＡＮＤＲＯＩＤ、ＳＯＬＡＲＩＳ、それらのうちの１つ以上の変形形態、及び／又は任意の他の好適なオペレーティングシステムが挙げられる。
【００７１】
特定の実施形態では、例示的なコンピューティングシステム９１０はまた、プロセッサ９１４及びシステムメモリ９１６に加えて、１つ以上の構成要素又は要素も含み得る。例えば、図９に示すように、コンピューティングシステム９１０は、メモリコントローラ９１８、Ｉ／Ｏコントローラ９２０、及び通信インターフェース９２２を含み得、これらのそれぞれは、通信基盤９１２を介して相互接続され得る。通信基盤９１２は、一般に、コンピューティングデバイスの１つ以上の構成要素間の通信を容易にすることができる、任意のタイプ又は形態の基盤を表す。通信基盤９１２の例としては、非限定的に、通信バス（産業標準構成（Industry Standard Architecture、ＩＳＡ）、周辺装置相互接続（Peripheral Component Interconnect、ＰＣＩ）、ＰＣＩエクスプレス（PCI Express、ＰＣＩｅ）、又は類似のバスなど）及びネットワークが挙げられる。
【００７２】
メモリコントローラ９１８は、一般に、メモリ若しくはデータを扱うこと、又はコンピューティングシステム９１０の１つ以上の構成要素間の通信を制御すること、ができる、任意のタイプ又は形態のデバイスを表す。例えば、特定の実施形態では、メモリコントローラ９１８は、通信基盤９１２を介して、プロセッサ９１４、システムメモリ９１６、及びＩ／Ｏコントローラ９２０の間の通信を制御してもよい。
【００７３】
Ｉ／Ｏコントローラ９２０は、一般に、コンピューティングデバイスの入出力機能を調整及び／又は制御することができる、任意のタイプ又は形態のモジュールを表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ９２０は、プロセッサ９１４、システムメモリ９１６、通信インターフェース９２２、ディスプレイアダプタ９２６、入力インターフェース９３０、及び記憶インターフェース９３４などの、コンピューティングシステム９１０の１つ以上の要素間のデータ転送を制御又は容易にし得る。
【００７４】
図９に示すように、コンピューティングシステム９１０はまた、ディスプレイアダプタ９２６を介してＩ／Ｏコントローラ９２０に連結された少なくとも１つのディスプレイデバイス９２４も含み得る。ディスプレイデバイス９２４は、一般に、ディスプレイアダプタ９２６によって転送された情報を視覚的に表示することができる、任意のタイプ又は形態のデバイスを表す。同様に、ディスプレイアダプタ９２６は、一般に、ディスプレイデバイス９２４上に表示するために通信基盤９１２から（又は当該技術分野において既知であるように、フレームバッファから）グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形態のデバイスを表す。
【００７５】
図９に示すように、例示的なコンピューティングシステム９１０はまた、入力インターフェース９３０を介してＩ／Ｏコントローラ９２０に連結された少なくとも１つの入力デバイス９２８も含み得る。入力デバイス９２８は、一般に、コンピュータ又は人間のいずれかが生成した入力を例示的なコンピューティングシステム９１０に提供することができる任意のタイプ又は形態の入力デバイスを表す。入力デバイス９２８の例としては、非限定的に、キーボード、ポインティングデバイス、音声認識デバイス、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の入力デバイスが挙げられる。本明細書に記載される周辺デバイス２２０及びその実施例はまた、入力デバイス９２８の例としても機能する。
【００７６】
それに加えて、又は代替的に、例示的なコンピューティングシステム９１０は、追加のＩ／Ｏデバイスを含み得る。例えば、例示的なコンピューティングシステム９１０は、Ｉ／Ｏデバイス９３６を含み得る。この実施例では、Ｉ／Ｏデバイス９３６は、コンピューティングシステム９１０との人間の相互作用を容易にするユーザインターフェースを含み得る及び／又はそれを表し得る。Ｉ／Ｏデバイス９３６の例としては、非限定的に、コンピュータマウス、キーボード、モニタ、プリンタ、モデム、カメラ、スキャナ、マイクロフォン、タッチスクリーンデバイス、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他のＩ／Ｏデバイスが挙げられる。
【００７７】
通信インターフェース９２２は、例示的なコンピューティングシステム９１０と１つ以上の追加のデバイスとの間の通信を容易にすることができる、任意のタイプ又は形態の通信デバイス又はアダプタを幅広く表す。例えば、特定の実施形態では、通信インターフェース９２２は、コンピューティングシステム９１０と、追加のコンピューティングシステムを含む私設又は公衆ネットワークとの間の通信を容易にし得る。通信インターフェース９２２の例としては、非限定的に、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース９２２は、インターネットなどのネットワークへの直接リンクを介してリモートサーバへの直接接続を提供し得る。通信インターフェース９２２はまた、例えば、ローカルエリアネットワーク（イーサネットネットワークなど）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラー電話接続、衛星データ接続、又は他の任意の好適な接続を通して、このような接続を間接的に提供してもよい。
【００７８】
特定の実施形態では、通信インターフェース９２２はまた、外部バス又は通信チャネルを介したコンピューティングシステム９１０と１つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されたホストアダプタも表し得る。ホストアダプタの例としては、非限定的に、小型コンピュータシステムインターフェース（Small Computer System Interface、ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（Universal Serial Bus、ＵＳＢ）ホストアダプタ、米国電気電子学会（Institute of Electrical and Electronics Engineers、ＩＥＥＥ）１３９４ホストアダプタ、アドバンストテクノロジーアタッチメント（Advanced Technology Attachment、ＡＴＡ）、パラレルＡＴＡ（Parallel ATA、ＰＡＴＡ）、シリアルＡＴＡ（Serial ATA、ＳＡＴＡ）、及び外部ＳＡＴＡ（External SATA、ｅＳＡＴＡ）ホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネットアダプタなどが挙げられる。通信インターフェース９２２はまた、コンピューティングシステム９１０が分散型又はリモートコンピューティングデバイスに関与することも可能にし得る。例えば、通信インターフェース９２２は、実行のために、リモートデバイスから命令を受信しても、リモートデバイスに命令を送信してもよい。
【００７９】
いくつかの実施例では、システムメモリ９１６は、プロセッサ９１４による実行のために、ネットワーク通信プログラム９３８を記憶及び／又はロードし得る。一実施例では、ネットワーク通信プログラム９３８は、コンピューティングシステム９１０が、別のコンピューティングシステム（図９には図示せず）とのネットワーク接続９４２を確立すること、及び／又は通信インターフェース９２２を介して他のコンピューティングシステムと通信すること、を可能にする、ソフトウェアを含み得る及び／又はそれを表し得る。この実施例では、ネットワーク通信プログラム９３８は、ネットワーク接続９４２を介して他のコンピューティングシステムに送信される発信トラフィックの流れを指示し得る。それに加えて、又は代替的に、ネットワーク通信プログラム９３８は、プロセッサ９１４と関連してネットワーク接続９４２を介して他のコンピューティングシステムから受信された着信トラフィックの処理を指示し得る。
【００８０】
図９にはこのようには示されていないが、ネットワーク通信プログラム９３８は、代替的に、通信インターフェース９２２に記憶及び／又はロードされ得る。例えば、ネットワーク通信プログラム９３８は、通信インターフェース９２２に組み込まれたプロセッサ及び／又は特定用途向け集積回路（ＡＳＩＣ）によって実行されるソフトウェア及び／又はファームウェアの少なくとも一部分を含み得る及び／又はそれを表し得る。
【００８１】
図９に示すように、例示的なコンピューティングシステム９１０はまた、記憶インターフェース９３４を介して通信基盤９１２に連結された、一次記憶デバイス９３２及びバックアップ記憶デバイス９３３も含み得る。記憶デバイス９３２及び９３３は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。例えば、記憶デバイス９３２及び９３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであり得る。記憶インターフェース９３４は、一般に、記憶デバイス９３２及び９３３とコンピューティングシステム９１０の他の構成要素との間でデータを転送するための、任意のタイプ又は形態のインターフェース又はデバイスを表す。一実施例では、図１からのデータストレージ１２０は、一次記憶デバイス９３２内に記憶及び／又はロードされ得る。
【００８２】
特定の実施形態では、記憶デバイス９３２及び９３３は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能な記憶ユニットから読み取る及び／又はそれに書き込むように構成され得る。好適な取り外し可能な記憶ユニットの例としては、非限定的に、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス９３２及び９３３はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令がコンピューティングシステム９１０内にロードされることを可能にするための、他の同様の構造体又はデバイスを含んでもよい。例えば、記憶デバイス９３２及び９３３は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み書きするように構成され得る。記憶デバイス９３２及び９３３は、コンピューティングシステム９１０の一部であっても、他のインターフェースシステムを介してアクセスされる別個のデバイスであってもよい。
【００８３】
他の多くのデバイス又はサブシステムが、コンピューティングシステム９１０に接続され得る。反対に、図９に示す構成要素及びデバイスの全てが、本明細書に記載及び／又は図示される実施形態を実践するために存在する必要があるわけではない。上記で言及したデバイス及びサブシステムはまた、図９に示されるものとは異なる手段で相互接続されてもよい。コンピューティングシステム９１０はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を用いてもよい。例えば、本明細書で開示する例示的な実施形態のうちの１つ以上は、コンピュータ可読媒体上で、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化されてもよい。「コンピュータ可読媒体」という用語は、本明細書で使用するとき、一般に、コンピュータ可読命令を格納又は保有することができる、任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、非限定的に、搬送波などの伝送型媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光学記憶媒体（例えば、コンパクトディスク（Compact Disk、ＣＤ）、デジタルビデオディスク（Digital Video Disk、ＤＶＤ）、及びブルーレイ（BLU-RAY）ディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュメディア）、並びに他の分散システムなどの非一時的媒体が挙げられる。
【００８４】
コンピュータプログラムを包含するコンピュータ可読媒体は、コンピューティングシステム９１０内にロードされ得る。コンピュータ可読媒体に記憶されたコンピュータプログラムのうちの全て又は一部分は、次いで、システムメモリ９１６内に、並びに／又は記憶デバイス９３２及び９３３の様々な部分内に記憶され得る。プロセッサ９１４によって実行されるとき、コンピューティングシステム９１０内にロードされたコンピュータプログラムは、プロセッサ９１４に、本明細書に記載及び／若しくは図示される例示的な実施形態のうちの１つ以上の機能を実施させ得、並びに／又はそれらを実施するための手段とならせ得る。それに加えて、又は代替的に、本明細書に記載及び／又は図示される例示的な実施形態のうちの１つ以上は、ファームウェア及び／又はハードウェアに実装されてもよい。例えば、コンピューティングシステム９１０は、本明細書に開示される例示的な実施形態のうちの１つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成され得る。
【００８５】
図１０は、クライアントシステム１０１０、１０２０、及び１０３０、並びにサーバ１０４０及び１０４５がネットワーク１０５０に連結され得る例示的なネットワークアーキテクチャ１０００のブロック図である。上で詳述したように、ネットワークアーキテクチャ１０００のうちの全て又は一部分は、単独で又は他の要素と組み合わせてのいずれかで、本明細書に開示されるステップのうちの１つ以上（図３に示されるステップのうちの１つ以上など）を実施し得、及び／又はそれを実施するための手段であり得る。ネットワークアーキテクチャ１０００のうちの全て又は一部分はまた、本開示に記載される他のステップ及び特徴を実施するために使用されてもよく、並びに／又はそれを実施するための手段であってもよい。
【００８６】
クライアントシステム１０１０、１０２０、及び１０３０は、一般に、図９の例示的なコンピューティングシステム９１０など、任意のタイプ又は形態のコンピューティングデバイス又はシステムを表す。同様に、サーバ１０４０及び１０４５は、一般に、様々なデータベースサービスを提供する及び／又は特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバ又はデータベースサーバなどのコンピューティングデバイス又はシステムを表す。ネットワーク１０５０は、一般に、例えば、イントラネット、ＷＡＮ、ＬＡＮ、ＰＡＮ、又はインターネットを含む、任意の電気通信ネットワーク又はコンピュータネットワークを表す。一実施例では、クライアントシステム１０１０、１０２０、及び／若しくは１０３０、並びに／又はサーバ１０４０及び／若しくは１０４５は、図１のシステム１００のうちの全て又は一部分を含み得る。
【００８７】
図１０に示すように、１つ以上の記憶デバイス１０６０（１）〜（Ｎ）は、サーバ１０４０に直接取り付けられ得る。同様に、１つ以上の記憶デバイス１０７０（１）〜（Ｎ）は、サーバ１０４５に直接取り付けられ得る。記憶デバイス１０６０（１）〜（Ｎ）及び記憶デバイス１０７０（１）〜（Ｎ）は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。特定の実施形態では、記憶デバイス１０６０（１）〜（Ｎ）及び記憶デバイス１０７０（１）〜（Ｎ）は、ネットワークファイルシステム（Network File System、ＮＦＳ）、サーバメッセージブロック（Server Message Block、ＳＭＢ）、又は共通インターネットファイルシステム（Common Internet File System、ＣＩＦＳ）など、様々なプロトコルを使用して、サーバ１０４０及び１０４５と通信するように構成された、ネットワーク接続ストレージ（Network-Attached Storage、ＮＡＳ）デバイスを表してもよい。
【００８８】
サーバ１０４０及び１０４５はまた、ストレージエリアネットワーク（Storage Area Network、ＳＡＮ）ファブリック１０８０に接続されてもよい。ＳＡＮファブリック１０８０は、一般に、複数の記憶デバイス間の通信を容易にすることができる、任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを表す。ＳＡＮファブリック１０８０は、サーバ１０４０及び１０４５と、複数の記憶デバイス１０９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ１０９５と、の間の通信を容易にし得る。また、ＳＡＮファブリック１０８０は、デバイス１０９０（１）〜（Ｎ）及びアレイ１０９５が、クライアントシステム１０１０、１０２０、及び１０３０にローカルに取り付けられたデバイスとして現れるような方式で、ネットワーク１０５０並びにサーバ１０４０及び１０４５を介し、クライアントシステム１０１０、１０２０、及び１０３０と記憶デバイス１０９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ１０９５との間の通信を容易にし得る。記憶デバイス１０６０（１）〜（Ｎ）及び記憶デバイス１０７０（１）〜（Ｎ）と同様に、記憶デバイス１０９０（１）〜（Ｎ）及びインテリジェント記憶アレイ１０９５は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。
【００８９】
特定の実施形態では、図９の例示的なコンピューティングシステム９１０を参照すると、図９の通信インターフェース９２２などの通信インターフェースは、各クライアントシステム１０１０、１０２０、及び１０３０とネットワーク１０５０との間の接続を提供するために使用され得る。クライアントシステム１０１０、１０２０、及び１０３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ１０４０又は１０４５上の情報にアクセスすることが可能であり得る。かかるソフトウェアは、クライアントシステム１０１０、１０２０、及び１０３０が、サーバ１０４０、サーバ１０４５、記憶デバイス１０６０（１）〜（Ｎ）、記憶デバイス１０７０（１）〜（Ｎ）、記憶デバイス１０９０（１）〜（Ｎ）、又はインテリジェント記憶アレイ１０９５によってホストされたデータにアクセスすることを可能にし得る。図１０は、データを交換するために（インターネットなどの）ネットワークを使用することを示しているが、本明細書に記載及び／又は図示される実施形態は、インターネット又は任意の特定のネットワークベースの環境に限定されない。
【００９０】
少なくとも１つの実施形態では、本明細書に開示される例示的な実施形態のうちの１つ以上の全て又は一部分は、コンピュータプログラムとしてコード化され、サーバ１０４０、サーバ１０４５、記憶デバイス１０６０（１）〜（Ｎ）、記憶デバイス１０７０（１）〜（Ｎ）、記憶デバイス１０９０（１）〜（Ｎ）、インテリジェント記憶アレイ１０９５、又はこれらの任意の組み合わせ上にロードされ、これらによって実行され得る。本明細書に開示される例示的な実施形態のうちの１つ以上の全て又は一部分はまた、コンピュータプログラムとしてコード化され、サーバ１０４０に記憶され、サーバ１０４５によって実行され、ネットワーク１０５０を通じてクライアントシステム１０１０、１０２０、及び１０３０に分散されてもよい。
【００９１】
上で詳述したように、コンピューティングシステム９１０及び／又はネットワークアーキテクチャ１０００の１つ以上の構成要素は、単独で又は他の要素と組み合わせてのいずれかで、周辺デバイスへのアクセスを制御するための例示的な方法の１つ以上のステップを実施し得、及び／又はそれを実施するための手段であり得る。
【００９２】
前述の開示は、特定のブロック図、フローチャート、及び実施例を使用して様々な実施形態を記載しているが、本明細書に記載及び／又は図示されるそれぞれのブロック図の構成要素、フローチャートの工程、動作、及び／又は構成要素は、個別に及び／又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア（若しくはそれらの任意の組み合わせ）の構成を使用して実装されてもよい。それに加えて、同じ機能性を達成するように他の多くのアーキテクチャを実装することができるので、他の構成要素内に包含される構成要素のいかなる開示も、本質的に例示とみなされるべきである。
【００９３】
いくつかの実施例では、図１の例示的なシステム１００のうちの全て又は一部分は、クラウドコンピューティング環境又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供してもよい。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしての基盤など）は、ウェブブラウザ又は他のリモートインターフェースを通してアクセス可能であってもよい。本明細書に記載される様々な機能は、リモートデスクトップ環境又は他の任意のクラウドベースのコンピューティング環境を通して提供されてもよい。
【００９４】
様々な実施形態では、図１の例示的なシステム１００のうちの全て又は一部分は、クラウドベースのコンピューティング環境内におけるマルチテナンシーを容易にしてもよい。換言すれば、本明細書に記載されるソフトウェアモジュールは、本明細書に記載される機能のうちの１つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成してもよい。例えば、本明細書に記載されるソフトウェアモジュールのうちの１つ以上は、２つ以上のクライアント（例えば、顧客）がサーバ上で作動しているアプリケーションを共有するのを可能にするように、サーバをプログラムしてもよい。このようにプログラムされたサーバは、複数の顧客（すなわち、テナント）の間で、アプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有してもよい。本明細書に記載されるモジュールのうちの１つ以上はまた、ある顧客が別の顧客のデータ及び／又は設定情報にアクセスできないように、顧客毎にマルチテナントアプリケーションのデータ及び／又は設定情報を分割してもよい。
【００９５】
様々な実施形態によれば、図１の例示的なシステム１００のうちの全て又は一部分は、仮想環境内で実装されてもよい。例えば、本明細書に記載されるモジュール及び／又はデータは、仮想機械内で常駐及び／又は実行してもよい。本明細書で使用するとき、「仮想機械」という用語は、一般に、仮想機械マネージャ（例えば、ハイパーバイザ）によってコンピューティングハードウェアから抽出される、任意のオペレーティングシステム環境を指す。それに加えて、又は代替的に、本明細書に記載されるモジュール及び／又はデータは、仮想化層内で常駐及び／又は実行してもよい。本明細書で使用するとき、「仮想化層」という用語は、一般に、オペレーティングシステム環境にオーバーレイする、並びに／あるいはそこから抽出される、任意のデータ層及び／又はアプリケーション層を指す。仮想化層は、基礎となる基本オペレーティングシステムの一部であるかのように仮想化層を提示する、ソフトウェア仮想化ソリューション（例えば、ファイルシステムフィルタ）によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションは、最初に基本ファイルシステム及び／又はレジストリ内の場所に方向付けられる呼び出しを、仮想化層内の場所にリダイレクトしてもよい。
【００９６】
いくつかの実施例では、図１の例示的なシステム１００のうちの全て又は一部分は、モバイルコンピューティング環境の部分を表してもよい。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子ブックリーダ、携帯情報端末、ウェアラブルコンピューティングデバイス（例えば、ヘッドマウントディスプレイを有するコンピューティングデバイス、スマートウォッチなど）などを含む、広範なモバイルコンピューティングデバイスによって実装されてもよい。いくつかの実施例では、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間での１つのみのフォアグラウンドアプリケーションの提示、リモート管理特性、タッチスクリーン特性、位置及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力を限定する制限されたプラットフォーム、アプリケーションのインストールを（例えば、認可されたアプリケーションストアからのみ生じるように）制限する制御などを含む、１つ以上の個別の特性を有することができる。本明細書で説明される様々な機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【００９７】
それに加えて、図１の例示的なシステム１００のうちの全て又は一部分は、情報管理のための１つ以上のシステムの部分を表してもよく、それと相互作用してもよく、それによって生成されるデータを消費してもよく、及び／又はそれによって消費されるデータを生成してもよい。本明細書で使用するとき、「情報管理」という用語は、データの保護、組織化、及び／又は記憶を指してもよい。情報管理のためのシステムの例としては、非限定的に、記憶システム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどを挙げることができる。
【００９８】
いくつかの実施形態では、図１の例示的なシステム１００のうちの全て又は一部分は、情報セキュリティのための１つ以上のシステムの部分を表してもよく、それによって保護されるデータを生成してもよく、及び／又はそれと通信してもよい。本明細書で使用するとき、「情報セキュリティ」という用語は、保護されたデータに対するアクセスの制御を指してもよい。情報セキュリティのためのシステムの例としては、非限定的に、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子証拠開示システムなどを挙げることができる。
【００９９】
いくつかの実施例によれば、図１の例示的なシステム１００のうちの全て又は一部分は、エンドポイントセキュリティのための１つ以上のシステムの部分を表してもよく、それと通信してもよく、及び／又はそれから保護を受けてもよい。本明細書で使用するとき、「エンドポイントセキュリティ」という用語は、不正及び／若しくは違法な使用、アクセス、並びに／又は制御からのエンドポイントシステムの保護を指してもよい。エンドポイント保護のためのシステムの例としては、非限定的に、アンチマルウェアシステム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどを挙げることができる。
【０１００】
本明細書に記載及び／又は図示されるプロセスパラメータ及び工程の順序は、単なる例として与えられるものであり、所望に応じて変更することができる。例えば、本明細書に図示及び／又は記載される工程は特定の順序で図示又は考察されることがあるが、これらの工程は、必ずしも図示又は考察される順序で実施される必要はない。本明細書に記載される及び／又は図示される様々な例示的な方法はまた、本明細書に記載される及び／又は図示される工程のうちの１つ以上を省略してもよく、又は開示されるものに加えて追加の工程を含んでもよい。
【０１０１】
様々な実施形態が、完全に機能的なコンピューティングシステムに関連して本明細書に記載され及び／又は図示されているが、これら例示的な実施形態のうちの１つ以上は、実際に配布を行うために使用されるコンピュータ可読記憶媒体の特定のタイプに関わらず、多様な形態のプログラム製品として配布され得る。本明細書に開示される実施形態はまた、特定のタスクを実施するソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体又はコンピューティングシステムに記憶されてもよい、スクリプト、バッチ、若しくは他の実行可能ファイルを含んでもよい。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態のうちの１つ以上を実施するようにコンピューティングシステムを構成してもよい。
【０１０２】
それに加えて、本明細書に記載されるモジュールのうちの１つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、１つの形態から別の形態へと変換してもよい。それに加えて、又は代替的に、本明細書に列挙されるモジュールのうちの１つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイスにデータを格納し、並びに／あるいは別の方法でコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び／又は物理的コンピューティングデバイスの他の任意の部分を、１つの形態から別の形態へと変換してもよい。
【０１０３】
上述の記載は、本明細書に開示される例示的な実施形態の様々な態様を他の当業者が最良に利用するのを可能にするために提供されてきた。この例示的な記載は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの修正及び変形が可能である。本明細書に開示される実施形態は、あらゆる点で例示的であり、限定的ではないものとみなされるべきである。本開示の範囲を決定する際に、添付の特許請求の範囲及びそれらの等価物を参照するべきである。
【０１０４】
別途記載のない限り、「〜に接続される」及び「〜に連結される」という用語（並びにそれらの派生語）は、本明細書及び特許請求の範囲で使用するとき、直接的接続及び間接的接続（すなわち、他の要素若しくは構成要素を介する）の両方を許容するものとして解釈されるものである。それに加えて、「ａ」又は「ａｎ」という用語は、本明細書及び特許請求の範囲で使用するとき、「〜のうち少なくとも１つ」を意味するものとして解釈されるものである。最後に、簡潔にするため、「含む」及び「有する」という用語（並びにそれらの派生語）は、本明細書及び特許請求の範囲で使用するとき、「備える」という単語と互換性があり、同じ意味を有する。
【図１】
2021528744.tif 000003
【図２】
2021528744.tif 000004
【図３】
2021528744.tif 000005
【図４】
2021528744.tif 000006
【図５】
2021528744.tif 000007
【図６】
2021528744.tif 000008
【図７】
2021528744.tif 000009
【図８】
2021528744.tif 000010
【図９】
2021528744.tif 000011
【図１０】
2021528744.tif 000012
【手続補正書】
【提出日】令和3年2月4日(2021.2.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
周辺デバイスへのアクセスを制御するためのコンピュータ実装方法であって、前記方法の少なくとも一部分が、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法が、
前記１つ以上のコンピューティングデバイスによって、前記周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信することと、
前記１つ以上のコンピューティングデバイスによって、前記入力／出力要求が、前記周辺デバイスへのアクセスを試みる前記プロセスに対して異常であるかどうかを判定することであって、前記判定は、前記入力／出力要求が前記プロセスの異常の閾値レベルを超えていることを示す、判定することと、
前記１つ以上のコンピューティングデバイスによって、前記プロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記プロセスのアクセス状態を判定することであって、前記アクセス状態は、前記プロセスのコンテキスト特性に基づく、判定することと、
前記要求が前記異常の閾値レベルを超えている場合、及び前記アクセス状態が、前記周辺デバイスへのアクセスを許可されていない前記プロセスを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記１つ以上のコンピューティングデバイスによって、前記入力／出力要求に応答することと、を含む、コンピュータ実装方法。
【請求項２】
前記アクセス状態の前記判定が、
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づいて前記コンテキスト特性を評価すること、及び
ユーザから前記１つ以上のコンピューティングデバイスによって、前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかの指示を受信することのうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記仮想周辺出力が、
前記プロセスの前記アクセス状態を示す情報、及び
前記プロセスが前記周辺デバイスと互換性があるかどうかを示す情報のうちの少なくとも１つを含む、請求項１又は２に記載のコンピュータ実装方法。
【請求項４】
前記１つ以上のコンピューティングデバイスによって、前記仮想周辺デバイスからの前記仮想周辺出力を用いて、前記プロセスからの後続の入力／出力要求に応答することを更に含む、請求項１〜３のいずれかに記載のコンピュータ実装方法。
【請求項５】
前記１つ以上のコンピューティングデバイスによって、前記プロセスが前記周辺デバイスへのアクセスを拒否されたという警告を、前記周辺デバイスに関連付けられたユーザに生成することを更に含む、請求項１〜４のいずれかに記載のコンピュータ実装方法。
【請求項６】
前記１つ以上のコンピューティングデバイスによる、前記入力／出力要求への前記応答が、少なくとも１つのビデオクラスドライバを使用して物理的周辺デバイスをエミュレートすることを含む、請求項１〜５のいずれかに記載のコンピュータ実装方法。
【請求項７】
前記周辺デバイスがウェブカムであり、前記仮想周辺デバイスが仮想ウェブカムであり、前記仮想周辺出力がビデオストリームである、請求項１〜６のいずれかに記載のコンピュータ実装方法。
【請求項８】
周辺デバイスへのアクセスを制御するためのシステムであって、前記システムが、
前記周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信する、メモリ内に記憶された、受信するための手段と、
メモリ内に記憶された、判定するための手段であって、
前記入力／出力要求が、前記周辺デバイスへのアクセスを試みる前記プロセスに対して異常であるかどうかを判定することであって、前記判定は、前記入力／出力要求が前記プロセスの異常の閾値レベルを超えていることを示す、判定することと、
前記プロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記プロセスのアクセス状態を判定するとであって、前記アクセス状態が、前記プロセスのコンテキスト特性に基づく、判定することと、を実施する、判定するための手段と、
前記要求が前記異常の閾値レベルを超えている場合、及び前記アクセス状態が前記周辺デバイスへのアクセスを許可されていない前記プロセスを示す場合、前記仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記入力／出力要求に応答する、メモリ内に記憶された、応答するための手段と、
前記受信するための手段、前記判定するための手段、及び前記応答するための手段を実行するように構成された、少なくとも１つの物理プロセッサと、を備える、システム。
【請求項９】
前記判定するための手段が、前記アクセス状態を、
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかを示す既定のルールに基づく前記コンテキスト特性の評価、及び
前記プロセスが前記周辺デバイスへのアクセスを許可されるべきかどうかの、ユーザから受信した、指示のうちの少なくとも１つに基づいて少なくとも部分的に判定する、請求項８に記載のシステム。
【請求項１０】
前記仮想周辺出力が、
前記プロセスの前記アクセス状態を示す情報、及び
前記プロセスが前記周辺デバイスと互換性があるかどうかを示す情報のうちの少なくとも１つを含む、請求項８又は９に記載のシステム。
【請求項１１】
前記応答するための手段が、前記仮想周辺デバイスからの前記仮想周辺出力を用いて、前記プロセスからの後続の入力／出力要求に応答する、請求項８〜１０のいずれかに記載のシステム。
【請求項１２】
前記プロセスが前記周辺デバイスへのアクセスを拒否されたという警告を、前記周辺デバイスに関連付けられたユーザに生成する警告生成のための手段を更に備え、
前記少なくとも１つの物理的プロセッサが、前記警告生成のための手段を実行するように更に構成される、請求項８〜１１のいずれかに記載のシステム。
【請求項１３】
前記判定する手段が、前記アクセス状態が前記周辺デバイスへのアクセスを許可されていない前記プロセスを示すと判定することに応答して、前記応答するための手段は、少なくとも１つのビデオクラスドライバを使用して、物理的周辺デバイスをエミュレートする、請求項８〜１２のいずれかに記載のシステム。
【請求項１４】
前記周辺デバイスがウェブカムであり、前記仮想周辺デバイスが仮想ウェブカムである、請求項８〜１３のいずれかに記載のシステム。
【請求項１５】
非一時的コンピュータ可読媒体であって、１つ以上のコンピュータ実行可能命令を含み、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、
前記周辺デバイスへのアクセスを試みるプロセスに関連する入力／出力要求を受信させ、
前記入力／出力要求が、前記周辺デバイスへのアクセスを試みる前記プロセスに対して異常であるかどうかの判定であって、前記入力／出力要求が前記プロセスの異常の閾値レベルを超えていることを示す、判定をさせ、
前記プロセスが前記周辺デバイスへのアクセスを得ることを許可されるかどうかを示す前記プロセスのアクセス状態であって、前記プロセスのコンテキスト特性に基づく前記アクセス状態を判定させ、
前記要求が前記異常の閾値レベルを超えている場合、及び前記アクセス状態が前記周辺デバイスへのアクセスを許可されていないことを示す場合、仮想周辺デバイスからの仮想周辺出力の開始に応じて、前記入力／出力要求に応答させる、非一時的コンピュータ可読媒体。
【国際調査報告】
2021528744.tif 000013
2021528744.tif 000014
2021528744.tif 000015