(57)【特許請求の範囲】
【請求項１】
オーディオデータへの不正アクセスを防止する方法であって、
記憶工程と、インストール工程と、受信工程と、判定工程と、制御工程とを備え、
前記記憶工程では、オーディオエンドポイントデバイスから受信したオーディオデータをaudiodg.exeプロセスがデータバッファに記憶し、
前記インストール工程では、前記オーディオのセッションに関連付けられたソフトウェアドライバをコンピュータのメモリにインストールし、前記ソフトウェアドライバは、不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成され、
前記受信工程では、前記コンピュータのプロセッサにより、前記データバッファに記憶されたオーディオデータへのアクセスを要求するソフトウェアアプリケーションからプロセスIDデータを受信し、
前記判定工程では、前記プロセッサにより、前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定し、
前記制御工程では、前記ソフトウェアドライバを前記プロセッサが制御することにより、前記不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止する、方法。
【請求項２】
前記オーディオデータへのアクセスを要求するアプリケーションが不正なソフトウェアアプリケーションであると判定された場合、前記ソフトウェアドライバにより前記オーディオデータをゼロに変換する工程をさらに含む、請求項１に記載の方法。
【請求項３】
前記ソフトウェアアプリケーションによる前記データバッファに記憶された前記オーディオデータへのアクセスの要求を、前記プロセッサにより監視し遮断する工程をさらに含む、請求項１に記載の方法。
【請求項４】
前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定する判定工程は、
前記要求をしたアプリケーションが信頼されているか信頼されていないかを判定するため当該アプリケーションのアクティビティを監視することと、
既知のウイルスのシグネチャのデータベースにアクセスし前記要求をしたアプリケーションのシグネチャを比較することで、当該要求をしたアプリケーションをスキャンすることと、
ユーザから、前記要求をしたアプリケーションからの前記オーディオデータへのアクセスを許可するかどうかのコマンドを受信することと、
の少なくとも１つを含む、請求項１に記載の方法。
【請求項５】
前記オーディオエンドポイントデバイスから受信した前記オーディオデータを前記データバッファに直接記憶する工程と、
前記ソフトウェアドライバのみが、前記オーディオデータへのアクセスを許可する工程と、をさらに含む、請求項１に記載の方法。
【請求項６】
前記オーディオデータへのアクセスを要求した前記アプリケーションが承認アプリケーションである場合に、ソフトウェアドライバに前記オーディオデータへのアクセスを許可するよう命令する工程と、
前記ソフトウェアドライバにより、前記オーディオデータをオーディオストリームとして処理する工程と、
前記ソフトウェアドライバにより、前記オーディオデータを前記承認ソフトウェアアプリケーションへ伝送する工程と、をさらに含む、請求項１に記載の方法。
【請求項７】
前記メモリ内に、前記オーディオセッションの複数のオーディオストリームとそれぞれ対応する複数のソフトウェアドライバをインストールする工程と、
前記プロセッサにより、複数のオーディオストリームのうちの１つへのアクセスを要求した少なくとも１つのソフトウェアアプリケーションからプロセスIDデータを受信する工程と、
前記プロセッサにより、前記オーディオストリームへのアクセスを要求した少なくとも１つのアプリケーションが不正なソフトウェアアプリケーションかどうかを判定する工程と、
前記プロセッサにより、前記判定された不正なソフトウェアアプリケーションによる前記オーディオストリームへのアクセスを防止するため、前記各ソフトウェアドライバを制御する工程と、をさらに含み、
前記ソフトウェアドライバはそれぞれ、不正なソフトウェアアプリケーションからのアクセスを防止するよう構成される、請求項１に記載の方法。
【請求項８】
オーディオデータへの不正アクセスを防止するシステムであって、
データバッファと、メモリと、プロセッサとを備え、
前記プロセッサは、
audiodg.exeプロセスにより、オーディオエンドポイントデバイスから受信したオーディオデータをデータバッファに記憶し、
前記オーディオのセッションに関連付けられ、不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成されたソフトウェアドライバを前記メモリにインストールし、
前記データバッファに記憶されたオーディオデータへのアクセスを要求するソフトウェアアプリケーションからのプロセスIDデータを受信し、
前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定し、
前記ソフトウェアドライバを制御し、判定を受けた前記不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成される、システム。
【請求項９】
前記オーディオデータへのアクセスを要求するアプリケーションが不正なソフトウェアアプリケーションであると判定された場合、前記ソフトウェアドライバが前記オーディオデータをゼロに変換する、請求項８に記載のシステム。
【請求項１０】
前記プロセッサはさらに、前記ソフトウェアアプリケーションによる前記データバッファに記憶された前記オーディオデータへのアクセスの要求を監視し遮断するよう構成される、請求項８に記載のシステム。
【請求項１１】
前記プロセッサはさらに、
前記要求をしたアプリケーションが信頼されているか信頼されていないかを判定するため、当該アプリケーションのアクティビティを監視することと、
既知のウイルスのシグネチャのデータベースにアクセスし前記要求をしたアプリケーションのシグネチャを比較することで、当該要求をしたアプリケーションをスキャンすることと、
ユーザから、前記要求をしたアプリケーションからの前記オーディオデータへのアクセスを許可するかどうかのコマンドを受信することと、
の少なくとも１つを基に、前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定するよう構成される、請求項８に記載のシステム。
【請求項１２】
前記プロセッサはさらに、
前記オーディオエンドポイントデバイスから受信した前記オーディオデータを前記データバッファに直接記憶し、
前記ソフトウェアアプリケーションによる前記オーディオデータへのアクセスのみを許可するよう構成される、請求項８に記載のシステム。
【請求項１３】
前記プロセッサはさらに、前記オーディオデータへのアクセスを要求した前記アプリケーションが承認アプリケーションである場合に、ソフトウェアドライバに前記オーディオデータへのアクセスを許可するよう命令するよう構成され、
前記ソフトウェアドライバは、前記オーディオデータをオーディオストリームとして処理し、当該オーディオデータを前記判定により承認されたソフトウェアアプリケーションへ伝送するよう構成される、請求項８に記載のシステム。
【請求項１４】
前記プロセッサはさらに、
前記メモリ内に、前記オーディオセッションの複数のオーディオストリームとそれぞれ対応する複数のソフトウェアドライバをインストールし、
複数のオーディオストリームのうちの１つへのアクセスを要求した少なくとも１つのソフトウェアアプリケーションからプロセスIDデータを受信し、
前記オーディオストリームへのアクセスを要求した少なくとも１つのアプリケーションが不正なソフトウェアアプリケーションかどうかを判定し、
前記判定された不正なソフトウェアアプリケーションによる前記オーディオストリームへのアクセスを防止するため、前記各ソフトウェアドライバを制御するよう構成され、
前記ソフトウェアドライバはそれぞれ、不正なソフトウェアアプリケーションからのアクセスを防止するよう構成される、請求項８に記載のシステム。
【請求項１５】
オーディオデータへの不正なアクセスを防止するためのコンピュータ実行可能命令を記憶する、非一時的コンピュータ可読記憶媒体であって、
記憶命令と、インストール命令と、受信命令と、判定命令と、制御命令とを備え、
前記記憶命令は、audiodg.exeプロセスにより、オーディオエンドポイントデバイスから受信したオーディオデータをデータバッファに記憶させ、
前記インストール命令は、前記オーディオのセッションに関連付けられたソフトウェアドライバを、コンピュータのメモリにインストールさせ、前記ソフトウェアドライバは、不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成され、
前記受信命令は、前記データバッファに記憶されたオーディオデータへのアクセスを要求するソフトウェアアプリケーションからのプロセスIDデータを受信させ
前記判定命令は、前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定させ、
前記制御命令は、前記ソフトウェアドライバを制御し、判定を受けた前記不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止させる、非一時的コンピュータ可読記憶媒体。
【請求項１６】
前記オーディオデータへのアクセスを要求するアプリケーションが不正なソフトウェアアプリケーションであると判定された場合に前記オーディオデータをゼロに変換させる命令をさらに含む、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記ソフトウェアアプリケーションによる、前記データバッファに記憶された前記オーディオデータへのアクセスの要求を監視し遮断させる命令をさらに含む、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記要求をしたアプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定させる判定命令は、
当該アプリケーションのアクティビティを監視させる命令と、
既知のウイルスのシグネチャのデータベースにアクセスし前記要求をしたアプリケーションのシグネチャを比較することで、当該要求をしたアプリケーションをスキャンさせる命令と、
ユーザから、前記要求をしたアプリケーションからの前記オーディオデータへのアクセスを許可するかどうかのコマンドを受信させる命令と、の少なくとも１つの命令を含む、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記オーディオエンドポイントデバイスから受信した前記オーディオデータを前記データバッファに直接記憶させる命令と、
前記ソフトウェアアプリケーションによる前記オーディオデータへのアクセスのみを許可させる命令とをさらに含む、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記オーディオデータへのアクセスを要求した前記アプリケーションが承認アプリケーションである場合に、ソフトウェアドライバに前記オーディオデータへのアクセスを許可させる命令と、
前記ソフトウェアドライバにより、前記オーディオデータをオーディオストリームとして処理させる命令と、
前記ソフトウェアドライバにより、前記オーディオデータを前記判定により承認されたソフトウェアアプリケーションへ伝送させる命令と、をさらに含む、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項２１】
前記メモリ内に、前記オーディオセッションの複数のオーディオストリームとそれぞれ対応する複数のソフトウェアドライバをインストールさせる命令と、
複数のオーディオストリームのうちの１つへのアクセスを要求した少なくとも１つのソフトウェアアプリケーションからプロセスIDデータを受信させる命令と、
前記オーディオストリームへのアクセスを要求した少なくとも１つのアプリケーションが不正なソフトウェアアプリケーションかどうかを判定させる命令と、
前記判定された不正なソフトウェアアプリケーションによる前記オーディオストリームへのアクセスを防止するため、前記各ソフトウェアドライバを制御させる命令とをさらに含み、
前記ソフトウェアドライバはそれぞれ、不正なソフトウェアアプリケーションからのアクセスを防止するよう構成される、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、2015年4月25日に出願されたロシア特許出願第2016116000号の関連出願であり、米国特許法第119条によってこの出願に基づく優先権を主張し、本明細書中に参考として援用する。
【０００２】
本開示は、データの損失を防止することに関し、特に、マイクロフォンデータへの不正アクセスを防止するシステム及びその方法に関するものである。
【背景技術】
【０００３】
現代社会では、ユーザは多くのサイバー上の脅威にさらされている。その一つは、盗聴を目的とした、ユーザのマイクロフォンへの不正アクセスである。ユーザのコンピュータ上で実行されるプロセスの一部であるマイクロフォンデータへのアクセスを制御するためには、オペレーティングシステム内の特定の要求にフィルタをするか、又は、アクセスを要求するプロセスを識別するために要求データのコンテキストへアクセスして、アクセス権限のないこれらのプロセスをブロックする必要がある。Windows XP及びより古いオペレーティングシステムでは、この機能は、「KSmixer.sys」カーネルコンポーネント（Windowsカーネルストリーミング技術）領域内のトラフィックを遮断することで実現されていた。遮断中のトラフィックのフレームワーク内にあるマイクロフォンデータの読み出し要求は、特殊なフィルタを介して、当該マイクロフォンデータを読み出すプロセスのコンテキストで実行されていた。
【０００４】
Windows Vistaの登場に伴って、多数のカーネルコンポーネントと１つのユーザモードからなる新しいアーキテクチャであるWASAPIが開発された。WASAPIでは、Windowsカーネルストリーミング技術は「基本的な変形」により残された一方、オーディオトラフィックは全て、「ポートドライバ「portcls.sys」に登録された新しいオーディオドライバのプライベートCOMインタフェースを介するようになった。このようなオーディオドライバは、ダイレクトメモリアクセス（DMA）コントローラの助けを借りて、オーディオトラフィックをユーザモードバッファ内で一度に終了させることで実現でき、プロセッサの関与や補助的なコードが必要ない。そしてこのバッファは、保護されたプロセスである「audiodg.exe」に割り付けられ、この同じプロセス「audiodg.exe」のコンテキストにおいて、データはプロセッサの助けを借りて、このバッファからユーザプロセスのバッファにコピーされる。つまり、Windows Vista以降、Windowsカーネルストリーミング技術における制御フィルタは全く不適当なものとなっている。
【０００５】
以上のことから、マイクロフォンからのオーディオトラフィックを遮断することのでき、且つ同マイクロフォンからのデータを読み出すプロセスのコンテキストと関連付けられている方法によってオーディオデータの送信を保護することが必要となっていた。
【発明の概要】
【０００６】
本願では、オーディオデータをマイクロフォンからプロセスへ伝送することによるオーディオデータへの不正アクセスを防止するシステム、方法、及びコンピュータプログラム製品が開示される。
【０００７】
１つの例示的な態様によれば、オーディオデータへの不正アクセスを防止する方法が開示される。本態様によれば、方法は、記憶工程と、インストール工程と、受信工程と、判定工程と、制御工程とを備え、前記記憶工程では、オーディオエンドポイントデバイスから受信したオーディオデータをaudiodg.exeプロセスがデータバッファに記憶し、前記インストール工程では、前記オーディオのセッションに関連付けられたソフトウェアドライバをコンピュータのメモリにインストールし、前記ソフトウェアドライバは、不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成され、前記受信工程では、前記コンピュータのプロセッサにより、前記データバッファに記憶されたオーディオデータへのアクセスを要求するソフトウェアアプリケーションからプロセスIDデータを受信し、前記判定工程では、前記プロセッサにより、前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定し、前記制御工程では、前記ソフトウェアドライバを前記プロセッサが制御することにより、前記不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止する。
【０００８】
他の１つの例示的な態様によれば、方法は、前記オーディオデータへのアクセスを要求するアプリケーションが不正なソフトウェアアプリケーションであると判定された場合、前記ソフトウェアドライバにより前記オーディオデータをゼロに変換する工程をさらに含む。
【０００９】
他の１つの例示的な態様によれば、方法は、前記ソフトウェアアプリケーションによる前記データバッファに記憶された前記オーディオデータへのアクセスの要求を、前記プロセッサにより監視し遮断する工程をさらに含む。
【００１０】
他の１つの例示的な態様によれば、前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定する判定工程は、前記要求をしたアプリケーションが信頼されているか信頼されていないかを判定するため、当該アプリケーションのアクティビティを監視することと、既知のウイルスのシグネチャのデータベースにアクセスし前記要求をしたアプリケーションのシグネチャを比較することで、当該要求をしたアプリケーションをスキャンすることと、前記ユーザから、前記要求をしたアプリケーションからの前記オーディオデータへのアクセスを許可するかどうかのコマンドを受信することと、の少なくとも１つを含む。
【００１１】
他の１つの例示的な態様によれば、方法は、前記オーディオエンドポイントデバイスから受信した前記オーディオデータを前記データバッファに直接記憶する工程と、前記ソフトウェアアプリケーションのみが、前記オーディオデータへのアクセスを許可する工程と、をさらに含む。
【００１２】
他の１つの例示的な態様によれば、方法は、前記オーディオデータへのアクセスを要求した前記アプリケーションが承認アプリケーションである場合に、ソフトウェアドライバに前記オーディオデータへのアクセスを許可するよう命令する工程と、前記ソフトウェアドライバにより、前記オーディオデータをオーディオストリームとして処理する工程と、前記ソフトウェアドライバにより、前記オーディオデータを前記判定された承認されたソフトウェアアプリケーションへ伝送する工程と、をさらに含む。
【００１３】
他の１つの例示的な態様によれば、方法は、前記メモリ内に、前記オーディオセッションの複数のオーディオストリームとそれぞれ対応する複数のソフトウェアドライバをインストールする工程と、前記プロセッサにより、複数のオーディオストリームのうちの１つへのアクセスを要求した少なくとも１つのソフトウェアアプリケーションからプロセスIDデータを受信する工程と、前記プロセッサにより、前記オーディオストリームへのアクセスを要求した少なくとも１つのアプリケーションが不正なソフトウェアアプリケーションかどうかを判定する工程と、前記プロセッサにより、前記判定された不正なソフトウェアアプリケーションによる前記オーディオストリームへのアクセスを防止するため、前記各ソフトウェアドライバを制御する工程と、をさらに含み、前記ソフトウェアドライバはそれぞれ、不正なソフトウェアアプリケーションからのアクセスを防止するよう構成される。
【００１４】
他の１つの例示的な態様によれば、オーディオデータへの不正アクセスを防止するシステムが開示される。本態様によれば、システムは、データバッファと、メモリと、プロセッサとを備え、前記プロセッサは、audiodg.exeプロセスにより、オーディオエンドポイントデバイスから受信したオーディオデータをデータバッファに記憶し、前記オーディオのセッションに関連付けられ、不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成されたソフトウェアドライバを前記メモリにインストールし、前記データバッファに記憶されたオーディオデータへのアクセスを要求するソフトウェアアプリケーションからのプロセスIDデータを受信し、前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定し、前記ソフトウェアドライバを制御し、前記判定された不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成される。
【００１５】
他の１つの例示的な態様によれば、オーディオデータへの不正なアクセスを防止するためのコンピュータ実行可能命令を記憶する、非一時的コンピュータ可読媒体が開示される。本態様によれば、記憶命令と、インストール命令と、受信命令と、判定命令と、制御命令とを備え、前記記憶命令は、audiodg.exeプロセスにより、オーディオエンドポイントデバイスから受信したオーディオデータをデータバッファに記憶させ、前記インストール命令は、前記オーディオのセッションに関連付けられたソフトウェアドライバを、コンピュータのメモリにインストールさせ、前記ソフトウェアドライバは、不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止するよう構成され、前記受信命令は、前記データバッファに記憶されたオーディオデータへのアクセスを要求するソフトウェアアプリケーションからのプロセスIDデータを受信させ、前記判定命令は、前記オーディオデータへのアクセスを要求する前記アプリケーションが不正なソフトウェアアプリケーションであるかどうかを判定させ、前記制御命令は、前記ソフトウェアドライバを制御し、前記判定された不正なソフトウェアアプリケーションによる前記オーディオデータへのアクセスを防止させる、非一時的コンピュータ可読媒体が提供される。
【００１６】
上述した実施形態の簡単な説明は、本発明の基本的な理解を提供するのに役立つ。この概要は、全ての考えられる態様の詳細な概要ではなく、全ての態様の鍵となるものや決定的な要素を特定することを意図していないし、本発明の全ての態様を描写することも意図していない。その唯一の目的は、前置きとして、１つ又は複数の態様を表し、その後、本発明のより詳細な説明に続くものである。これを達成するため、本発明の１つ又は複数の態様が説明されて、特許請求の範囲においても主張される。
【図面の簡単な説明】
【００１７】
添付の図面は、発明の詳細な説明とともに本発明の１つ又は複数の態様を説明し、それらの原理と実施を説明するのに役立つものであり、本明細書の一部として組み込まれ、またその一部を構成する。
【００１８】
【図１】Windowsオーディオスタックの新たな高レベルモデルを示すブロック図である。
【００１９】
【図２】例示的な態様に係るオーディオサブシステムを示すブロック図である。
【００２０】
【図３】例示的な態様に係るマイクロフォンデータへの不正アクセスを防止するシステムを示すブロック図である。
【００２１】
【図４】例示的な態様に係るマイクロフォンデータへの不正アクセスを防止する方法を示すフローチャートである。
【００２２】
【図５】本発明に係るシステムと方法が実装できる汎用コンピュータシステムの例を示す図である。
【発明を実施するための形態】
【００２３】
本発明の例示的な態様では、オーディオデータをマイクロフォンからプロセスへと伝送することによるオーディオデータへの不正アクセスを防止するシステム、方法、及びコンピュータプログラム製品が開示される。当業者であれば、以下の記載はあくまでも例示であり、あらゆる制限をも意図するものではないことが理解されよう。本発明の利益を享受する当業者であれば、他の態様も容易に示唆されることであろう。添付の図面では、その詳細を示すための参照符号が付されている。図面と以下の記載において、同一の又はそれに相当する項目については、同一の参照符号を用いるものとする。
【００２４】
信頼性を高め、オーディオデータを扱うアプリケーションの開発を簡略化するため、Microsoftは、Windows Vistaに始まる現代のオペレーティングシステムで使用されるオーディオスタックを大幅に再設計している。図１は、新たなWindowsオーディオスタックの高レベルモデルを示すブロック図である。このモデルの基本的なコンポーネント（構成要素）を、以下に列挙する。なお、図１に示されるコンポーネントは、網羅的なものではなく、本願の文脈上用いられるコンポーネントであり、且つ／又は新たなオーディオスタックモデルのコンテキストにおいてオーディオデータを扱う原則を理解するのに重要なコンポーネントであるにすぎない。
【００２５】
WindowsオーディオセッションAPI（WASAPI１０１）は、アプリケーション１００とオーディオエンドポイントデバイス１０７の間のオーディオデータストリームの制御を可能にするソフトウェアインタフェースである。本願では、「オーディオエンドポイントデバイス」、「オーディオターミナルデバイス」又は「オーディオエンドポイント」の用語は同義的に使用され、例えば、マイクロフォンと考えることができる。なお、マイクロフォンは、これと接続されているオーディオアダプタに組み込まれてもよく、また、USBアダプタやデバイスに接続され、次にオーディオアダプタに接続されてもよい。
【００２６】
いずれの場合でも、各オーディオストリームは１つのオーディオセッションの一部である。ここで、オーディオセッションは、アプリケーション１００と特定のオーディオエンドポイントデバイス１０７（例えば、マイクロフォン１０８）の間の全てのストリームの組み合わせである。Windowsオペレーティングシステムは、１つのオーディオセッション内で各ストリームを個別に処理し、また、オーディオセッション全体におけるボリューム等の特定のパラメータを制御することを可能にする。なお、オーディオセッションは、オーディオデータレンダリングストリーム単体でもオーディオデータキャプチャストリーム単体でも構成することができる。ただし、本願では、オーディオデータキャプチャストリームのみを説明する。アプリケーション１００は、共有モードと排他モードの２つのモードでWASAPIソフトウェアインタフェースを使用する。１つのアプリケーションが排他モードを使用することにより、他の全てのアプリケーションによるオーディオエンドポイントデバイスへのアクセスがブロックされる。コンポーネントであるWindowsオーディオデバイスグラフアイソレーション１０３は、１つのオーディオエンドポイントデバイス１０７から来たオーディオデータに対する共有アクセスをまとめるために使用される。
【００２７】
Windowsオーディオデバイスグラフアイソレーション１０３は、オーディオエンドポイントデバイス１０７から来たオーディオデータをアプリケーション１００へ転送するよう設計されたオーディオスタックコンポーネントである。Windowsオーディオデバイスグラフアイソレーション１０３は、中央プロセッサのリソースのみを使用して、１つのオーディオセッション中のオーディオストリームのデータの様々な変換を行う。例えば、Windowsオーディオデバイスグラフアイソレーション１０３は、複数の異なるアプリケションからのオーディオストリームを、Windowsの設定において指定される同一の形式、つまり、同一のチャネル数、デジタル化周波数、量子化の程度にすることができる。また、Windowsオーディオデバイスグラフアイソレーション１０３は、オーディオストリームのミキシング（mixing）を行う。加えて、オーディオデータキャプチャストリームの場合には、Windowsオーディオデバイスグラフアイソレーション１０３は、いくつかのアプリケーション１００への転送のため、オーディオデータをコピーする。Windowsオーディオデバイスグラフアイソレーション１０３は、ユーザモードで起動される、保護されたプロセスである「audiodg.exe」として実現される。
【００２８】
Windowsオーディオサービス１０４は、Windowsオペレーティングシステム内のサービスであり、オーディオデータストリームを生成し、制御するよう設計されている。このオーディオスタックコンポーネントは、アプリケーション１００が、保護された「audiodg.exe」プロセスとやり取りすることを許可するが、「audiodg.exe」プロセスへの直接アクセスは、アプリケーション１００側に限定されている。Windowsオーディオサービス１０４はまた、Windowsオーディオポリシーを実現するコンポーネントであり、オペレーティングシステムにおいて、オーディオセッションの共有モードでアクセス可能なオーディオストリームに適用されるルール群を有している。
【００２９】
オーディオドライバ１０６は、上述したオーディオスタックモデルの中間層であり、上述したオーディオスタックのアーキテクチャを維持する様々なシステムドライバの組み合わせを有するほか、他のメーカのコンポーネントのサポートを可能にするドライバも有している。例えば、PCIバス及びPCI Expressバスと接続されるオーディオアダプタでは、「ポートクラス」（portcls.sys）というシステムドライバがWindowsオペレーティングシステムに提供される。このドライバは、様々なオーディオアダプタとしての機能を実現するためのポートドライバ群を有している。また、USBバスと接続されるオーディオアダプタの場合は、「AVストリーム」クラス（Ks.sys）と「USBオーディオ」クラス（Usbaudio.sys）というシステムドライバがWindowsオペレーティングシステムに提供される。オーディオドライバ１０６層で実現される新たなオーディオスタックモデルの主な特徴は、Microsoftウェーブリアルタイム（WaveRT）技術の実現である。この技術により、中央プロセッサが直接関与することなく、オーディオエンドポイントデバイスがユーザモードのバッファにオーディオデータを記録することが可能となり、記録されたデータが保護された「audiodg.exe」プロセスによりバッファから読み出されることで、Windowsオーディオデバイスグラフアイソレーション・コンポーネント１０３が実現される。他のプロセスからのこのバッファへのアクセスは禁止され、オペレーティングシステム側において制御される。
【００３０】
本願に係るオーディオエンドポイントデバイス１０７は、オーディオデータ伝送路の一端に位置するデバイスであり、伝送路は、アプリケーション１００から開始されるか、アプリケーション１００で終了する。オーディオエンドポイントデバイスの例としては、マイクロフォン１０８、ヘッドフォン、音響スピーカ、CDプレーヤ等が挙げられるが、これらに限定されるものではない。オーディオエンドポイントデバイス１０７は、オーディオアダプタに接続されるか、又はオーディオアダプタの一部であってもよい。
【００３１】
Microsoftオーディオエンドポイントビルダ１０５は、新しいオーディオエンドポイントデバイス１０７を検出し、また、すでにあるオーディオエンドポイントデバイス１０７を追跡・制御するよう設計されたWindowsオペレーティングシステムのサービスである。
【００３２】
Windows.Devices.Enumeration１０２は、アプリケーション１００がMicrosoftオーディオエンドポイントビルダサービス１０５とやり取りすることを許可するソフトウェアインタフェースであり、すでにあるオーディオエンドポイントデバイス１０７の情報、及びオーディオデータのレンダリング又はキャプチャのためのオーディオエンドポイントデバイス１０７の使用情報を取得する。
【００３３】
以下の説明では、本願により実現される範囲内において、Windowsオペレーティングシステムのオーディオサブシステムを構成するオーディオスタックコンポーネントについて説明する。このオーディオサブシステムのブロック図が、図２に示される。図２は、オーディオエンドポイントデバイス（マイクロフォン２０６）から受け取っているオーディオデータキャプチャストリームから構成されたオーディオセッションにおいて、プロセス２００に共有モード（WASAPI共有）のアクセスが与えられるシナリオを示すものである。図２では、プロセス２００は、その際に実行されているアプリケーションを意味する。アプリケーションが受動的な命令のセットである場合、プロセスはこれらの命令を即時実行することである。各プロセスは一意の識別子であるプロセスID（つまり、PID）を有しており、これにより特定のプロセスを識別することが可能となっている。
【００３４】
マイクロフォンデータへの不正アクセスを防止するシステム及びその方法の困難さは、プロセスとオーディオエンドポイントデバイスの間を行き来する全てのオーディオストリームが、Windowsオーディオデバイスグラフアイソレーション・コンポーネント２０２を実現する単一の保護された「audiodg.exe」プロセスのコンテキストであるという事実にある。プロセスが保護されている、つまりこのプロセスに対するアクセス権が制限されているので、多くの処理の実行時に、ユーザモードの標準的なAPIファンクションを使ってこのプロセスとやり取りすることは不可能である。したがって、ユーザモードの標準的なAPIファンクションを使用する他のプロセスは、「audiodg.exe」プロセスの内部データに関する情報を要求することはできない。Windowsオーディオデバイスグラフアイソレーション・コンポーネント２０２により実現される、保護された「audiodg.exe」プロセスと、各プロセス２００とがやり取りをするため、オペレーティングシステムのWindowsオーディオサービス２０１は、プロセス間を行き来する（クロスプロセスの）特別なバッファ２０７を生成する。そして、このバッファ２０７を介してマイクロフォン２０６等のオーディオエンドポイントデバイスのうちの１つからオーディオデータが伝送される。上述したように、オーディオエンドポイントデバイス２０５の追跡及び追加は、オペレーティングシステムのWindowsマイクロソフトオーディオエンドポイントビルダサービス２０４の助けを借りて行われる。
【００３５】
マイクロフォン２０６のようなオーディオエンドポイントデバイスと、保護されたプロセスであるaudiodg.exe２０２とのやり取りは、ユーザモードでアクセス可能な特別なバッファを介しても行われる。オーディオデータは、中央プロセッサの関与なしにマイクロフォン２０６から直接バッファ２０３に行き、Windowsオーディオデバイスグラフアイソレーション・コンポーネント２０２に読み取られるか、逆に、中央プロセッサのリソースのみを利用して処理される。つまり、ソフトウェアにより、オーディオアダプタのリソースの関与なしに、オーディオエンドポイントデバイス２０５が接続されるか又はオーディオエンドポイントデバイス２０５がオーディオアダプタの一部を形成することで、処理される。
【００３６】
Windowsオーディオデバイスグラフアイソレーション・コンポーネント２０２の主なタスクは、オーディオエンドポイントデバイスであるマイクロフォン２０６からプロセス２００へのオーディオデータの伝送と、単一のオーディオセッションにおけるオーディオストリームデータの様々な変換である。オーディオストリームデータの変換は、上述したWaveRT技術のミニポートドライバ（オーディオ処理オブジェクト（APO）として知られている）の助けを借りて行われる。ここで、オーディオ処理オブジェクトは、２つのタイプに区別される。２つのタイプとは、グローバルエフェクト（GFX APO２１１と略される）と、ローカルエフェクト（LFX APO２１１と略される）である。オーディオデータキャプチャストリームからなるオーディオセッションにおいて、マイクロフォン２０６から入力されたオーディオストリームに対してグローバルエフェクトオーディオ処理オブジェクト（GFX APO１１２）が用いられる。そして、Windowsオーディオデバイスグラフアイソレーション・コンポーネント２０２は、Windowsオーディオサービス２０１からオーディオストリームの生成を要求されている各プロセス２００のために、グローバルエフェクトオーディオ処理オブジェクト（GFX APO１１２）の助けを借りて、独立したオーディオストリームの生成を行う。
【００３７】
１つの例示的な態様によれば、独立したオーディオストリームの各々は単一のプロセスと対応し、ローカルエフェクトオーディオ処理オブジェクト（LFX APO２１１）の助けを借りて処理される。Windowsオーディオデバイスグラフアイソレーション（つまり、audiodg.exe）に読み込まれたLFX APO２１１は、バッファにオーディオデータを記録する。そして、オーディオデータはそこからアプリケーションによって読み出される。なお、上述したように、audiodg.exeは保護されたプロセスであり、システムや方法は、Windowsオーディオサービスの特別なサービス（すなわち、「audiosrv.exe」）を介してしか、audiodg.exeプロセスとやり取りすることができない。したがって、オーディオストリームを生成するため、アプリケーションはaudiosrvサービスにアクセスする。これに対して、audiosrvサービスは、当該アプリケーションのための新たなスレッドを割り当てるためにコマンドを送信し、同時に新たなオーディオストリームの生成を要求したアプリケーションにIDを与える。
【００３８】
１つの例示的な態様によれば、独立したオーディオストリームのために使用されるローカルエフェクトオーディオ処理オブジェクトLFX APO２１１の各々は、同一のものでも異なったものでも良い。ローカルエフェクト処理オブジェクトLFX APO２１１の助けを借りた、独立したオーディオストリーム各々のデータの操作の性質もまた、異なっていても良い。なぜなら、オーディオデータ処理オブジェクトのパラメータはリアルタイムで制御可能だからである。ローカルエフェクト処理オブジェクトLFX APO２１１は、プロセスごとに独立して動作することができる。結果として、ローカルエフェクト処理オブジェクトLFX APO２１１は、該当するプロセスに対応するオーディオストリームに追加されることになる。ローカルエフェクトオーディオ処理オブジェクトLFX APO２１１はまた、個別に無効にすることもできる。結果として、ローカルエフェクトオーディオ処理オブジェクトLFX APO２１１は、該当するプロセスに対応するオーディオストリームから削除されることになる。ローカルエフェクト処理オブジェクトLFX APO２１１は、WaveRTミニポートドライバの形で実現される。ここで、WaveRTミニポートドライバは、対応するレコードをシステムレジストリに追加することにより、オペレーティングシステムにインストールされ、各オーディオエンドポイントデバイス２０５に関連させて登録されるものである。そして、ローカルエフェクト処理オブジェクトLFX APO２１１は、オーディオサブシステムによって自動的にインストールされ、オーディオエンドポイントデバイスに関連する新たなオーディオストリームそれぞれを処理する。このオーディオエンドポイントデバイスに対して、当該ローカルエフェクト処理オブジェクトLFX APO２１１が登録されている。
【００３９】
共有アクセスモード（WASAPI共有）のプロセスは、マイクロフォン２０６から届くオーディオデータへのアクセスを受信するため、Windowsオーディオサービス２０１への要求を定式化し、これを送信する。この要求は、プロセスID（PID）を含む様々なパラメータを含んでいる。Windowsオーディオサービス２０１は、新たなデータストリームを生成するためのリモートプロシージャコール（RPC）要求を定式化し、Windowsオーディオデバイスグラフアイソレーション・コンポーネント２０２に送信する。この際、Windowsオーディオサービス２０１は、このRPC要求の複数のパラメータのうち、オーディオストリームの生成を要求するプロセスID（PID）を伝送する。Windowsオーディオサービス２０１は、特別なクロスプロセスバッファ２０７を生成する。これにより、マイクロフォン２０６からオーディオデータが、オーディオストリームの生成を要求したプロセスに伝送される。これに対して、Windowsオーディオデバイスグラフアイソレーション２０２は、上述した特別なバッファ２０７に関連した独立したオーディオストリームを生成する。オーディオデータは、特別なバッファ２０７を介して、当該オーディオストリームの生成を要求したプロセスに伝送される。そして、最終的に、オーディオサブシステムは、生成されたオーディオストリームの処理のため、マイクロフォン２０６のために登録されたローカルエフェクトオーディオ処理オブジェクトLFX APO２１１をインストールする。
【００４０】
図３は、マイクロフォンデータへの不正アクセスを防止するシステムを示すブロック図である。このシステムは、２つのサブシステムを含んでいる。それは、図２に示される上述したオーディオサブシステムと、マイクロフォンデータへのアクセスを制御する、上述したオーディオサブシステムと統合されたサブシステムである。オーディオサブシステムは、オーディオストリーム制御モジュール３０１を含むことができる。プロセスは、オーディオストリームの生成及び制御のためのAPI関数を介して、このオーディオストリーム制御モジュール３０１とやり取りする。そして、１つの態様によれば、オーディオストリーム制御モジュール３０１は、Windowsオーディオサービス２０１とすることができる。また、オーディオサブシステムは、オーディオストリームミキシング・処理モジュール３０２を含むことができる。これは、アプリケーションとオーディオエンドポイントデバイスの間のオーディオストリームを統合し、また、フィルタの助けを借りてオーディオストリームを処理するよう構成される。１つの例示的な態様において、オーディオストリームミキシング・処理モジュール３０２は、保護されたプロセスのWindowsオーディオデバイスグラフアイソレーション２０２とすることができる。さらに、オーディオサブシステムは、オーディオエンドポイントデバイスを追加し追跡するよう構成された、オーディオエンドポイントデバイス制御モジュール３０６を含むことができる。１つの例示的な態様において、オーディオエンドポイントデバイス制御モジュール３０６は、Windowsオーディオエンドポイントビルダサービス２０４とすることができる。
【００４１】
マイクロフォンデータへのアクセスを制御するためのサブシステムは、RPCトラフィックフィルタモジュール３１０、オーディオストリーム遮断モジュール３１１、及びアクセス認証モジュール３１２を含むことができる。RPCトラフィックフィルタモジュール３１０は、オーディオエンドポイントデバイス（マイクロフォン）と関連するオーディオストリーム生成のためのRPC要求を検出し、当該オーディオストリームの生成を要求されたプロセスID（PID）を決定するため、オーディオストリーム制御モジュール３０１とオーディオストリームミキシング・処理モジュール３０２の間のRPCトラフィックを監視するよう構成される。この設計は、マイクロフォン３０５からのオーディオデータを受信するプロセス３００を識別するという、上述した課題を解決する。ここで、プロセス３００とマイクロフォン３０５の間を行き来する全てのオーディオストリームは、単一の保護されたプロセスである「audiodg.exe」（オーディオストリームミキシング・処理モジュール３０２）のコンテキストである。
【００４２】
オーディオストリーム遮断モジュール３１１は、オーディオストリームミキシング・処理モジュール３０２内のローカルエフェクトオーディオ処理オブジェクトLFX APO２１１として、オーディオエンドポイントデバイス（マイクロフォン３０５）と関連したオーディオセッションの新たなオーディオストリームそれぞれに対してインストールされる。１つの例示的な態様では、オーディオストリーム遮断モジュール３１１は、WaveRTミニポートドライバのようなドライバの形態である。オーディオサブシステムは、オーディオエンドポイントデバイス３０４群の各オーディオエンドポイントデバイスに関連する、オーディオセッション内の新たなオーディオストリームそれぞれに対して、オーディオストリーム遮断モジュール３１１を自動的にインストールする。オーディオストリーム遮断モジュール３１１は、ローカルエフェクトオーディオ処理オブジェクトLFX APO２１１として登録される。１つの例示的な態様では、上述したオーディオストリーム遮断モジュール３１１の自動インストールは、オーディオストリームミキシング・処理モジュール３０２により行われる。インストール後、オーディオストリームに対してインストールされたオーディオストリーム遮断モジュール３１１は、当該オーディオストリームのデータへアクセスすることに関するプロセスの認証チェック要求をアクセス認証モジュール３１２に送信する。
【００４３】
アクセス認証モジュール３１２は、チェックを実行するため、上述した認証チェックが要求されたかどうかに関するプロセスIDを、RPCトラフィックフィルタモジュール３１０から受信するか、又はRPCトラフィックフィルタモジュール３１０に要求する。ところで、オーディオストリーム遮断モジュール３１１は、どのプロセスが当該オーディオストリーム遮断モジュール３１１をインストールすることになったオーディオストリームに対応するプロセスであるかの情報を持っていない。また、RPCトラフィックフィルタモジュール３１０も、そのような情報は持っていない。オーディオストリーム遮断モジュール３１１によりディスパッチされた要求と、RPCトラフィックフィルタモジュール３１０により得られたプロセスIDを整合させることは、オーディオストリームとプロセスを整合させることと同じ関係であり、これは、アクセス認証モジュール３１２により行われる。
【００４４】
オーディオストリーム遮断モジュール３１１の主な目的は、不正なプロセスがオーディオストリームデータにアクセスすることを防止することである。したがって、オーディオストリーム遮断モジュール３１１は、オーディオストリームの生成を要求するプロセスが不正であることがアクセス認証モジュール３１２により判明した場合、当該オーディオストリームのデータをゼロ化する。
【００４５】
アクセス認証モジュール３１２は、RPCトラフィックフィルタモジュール３１０及びオーディオストリーム遮断モジュール３１１と接続され、上述した、マイクロフォン３０５等のオーディオエンドポイントデバイスに関連したオーディオストリームのデータにアクセスするためのプロセスIDにより、プロセス認証のチェックを行うよう構成される。プロセス認証モジュールは、オーディオエンドポイントデバイス３０４群の１つのオーディオエンドポイントデバイスに関連するオーディオストリームデータへのアクセスを得るプロセスの認証を独立してチェックし、また、１つ又は追加のセキュリティモジュールによりチェックを受けているプロセスに関する要求を送信する。
【００４６】
具体的には、例示的な態様によれば、プロセス認証モジュールは、ある特定のモジュールに対し特定のプロセスの評価を照会し、そのモジュールの応答に基づいて応答を決定する。例えば、プロセス認証モジュールがPIDをアンチウイルスモジュールへ転送すれば、それが信頼されたプロセスであるかどうか、つまり「感染していない」プロセスであるかどうかの情報が返される。また、一方、そのアンチウイルスモジュールが知られていない場合は、プロセス認証モジュールはそのプロセスに関する一連の評価を行い、悪質なコードがないかスキャンし、結果を返すことができる。したがって、この態様によれば、プロセス認証モジュールは、任意のローカル又はリモートセキュリティモジュールに対して要求を送信し、PIDとともにプロセスを示して、特定のプロセスに関するモジュールの評定の評価を要求することができる。これらのモジュールは、アンチウイルスモジュール、HIPSモジュール（アプリケーション制御）、ファイアウォール、システムウォッチャー、及び当業者にとって既知である、プロセスを評価可能な他の任意のモジュールとすることができる。この（特定の）プロセスの評定に基づく複数のモジュールのセットを受信した後、プロセス認証モジュールPAMは、全ての評定が「このプロセスは悪意のあるものではない」というものであったプロセスのみを認証する。
【００４７】
１つの例示的な態様によれば、付加的なセキュリティモジュールは、プロセスのアクティビティを制御するモジュールを含むことができる。プロセスのアクティビティを制御するモジュールは、下記のプロセスの一部の動作を規制（regulate）するよう設計される。
・ファイルシステムやシステムレジストリへのアクセス
・他のプロセスとのやり取り
・全てのプロセスの、以下のものへの分類：信頼されたもの／信頼されていないもの／弱い制限のあるプロセス／強い制限のあるプロセス
また、他の態様によれば、付加的なセキュリティモジュールはアンチウイスルモジュールを含んでいても良い。アンチウイスルモジュールは、シグネチャ（既知のウイルス及び他の悪意のあるアプリケーションの記述）のデータベースの助けを借りてウイルスを探索し、対応するオブジェクト及びこれと関連するデータを除去又は隔離するよう設計される。他の態様によれば、付加的なセキュリティモジュールは、脅威無効化モジュールをさらに含んでいても良い。脅威無効化モジュールは、要求されていないコンテンツを検出し、リアルタイムでの攻撃や脅威を発見し、全ての不審なプロセスを終了させる措置をとり、インターネットトラフィックを閉鎖するとともに、システムをその最後の既知の安全な状態に復元するよう構成される。さらに他の態様によれば、付加的なセキュリティモジュールは、ユーザフィードバックモジュールを含んでいても良い。ユーザフィードバックモジュールは、マイクロフォンデータへのアクセスを得るためのプロセスの試行をユーザに警告することができ、ユーザは当該プロセスがマイクロフォンにアクセスしてよいかを選択することができる。また、ユーザフィードバックモジュールは、デフォルトとして、マイクロフォンへの全てのアクセスをブロックするオプションをユーザに提供することもできる。
【００４８】
したがって、アクセス認証モジュール３１２は、外部のセキュリティモジュールの評定に基づいて、認証されていないプロセスを識別することができる。例えば、プロセスが悪意のあるものであるか又はマイクロフォンへのアクセスが認証されていないものであれば、当該プロセスを不正なものであるとして識別することができる。
【００４９】
１つの例示的な態様では、アクセス認証モジュール３１２はオーディオエンドポイントデバイス制御モジュール３０６と接続され、オーディオエンドポイントデバイス３０４群に新たなオーディオエンドポイントデバイスが追加されたことを確認する。新しいオーディオエンドポイントデバイスの各々に対し、アクセス認証モジュール３１２は、オーディオストリーム遮断モジュール３１１をローカルエフェクトオーディオ処理オブジェクトLFX APO２１１として登録する。別の例示的な態様では、アクセス認証モジュール３１２は、システムレジストリの全てのレコードの変更及び削除を防止する。ここで、システムレジストリは、オーディオストリーム遮断モジュール３１１がローカルエフェクトオーディオ処理オブジェクトLFX APO２１１としてリスト化したものである。
【００５０】
図４は、マイクロフォンデータへの不正アクセスを防止する方法の例示的な態様を示すフローチャートである。このフローチャートに示すように、ステップ４０１において、オーディオストリーム遮断モジュール３１１を、ローカルエフェクトオーディオ処理オブジェクトLFX APOとしてオーディオストリームミキシング・処理モジュール３０２にインストールする。ここで、このインストールはアクセス認証モジュール３１２の助けを借りて、また、オーディオエンドポイントデバイス制御モジュール３０６によって確認された各オーディオエンドポイントデバイス（マイクロフォン３０５）に対して行われる。ローカルエフェクトオーディオ処理オブジェクトLFX APOは、各エンドポイントデバイス（マイクロフォン３０５）と関連する新たなオーディオストリームのそれぞれに対するオーディオストリームミキシング・処理モジュール３０２として用いられる。そして、当該オーディオストリームミキシング・処理モジュール３０２に対してローカルエフェクトオーディオ処理オブジェクトLFX APOがインストールされる。
【００５１】
次に、ステップ４０２において、RPCトラフィックフィルタモジュール３１０を用いて、オーディオストリーム制御モジュール３０１とオーディオストリームミキシング・処理モジュール３０２の間のRPCトラフィックを監視し、オーディオエンドポイントデバイス（マイクロフォン３０５）に関連したオーディオストリームの生成のRPC要求を抽出し、上記オーディオストリームの生成の要求に対してプロセスIDを決定する。
【００５２】
オーディオストリームミキシング・処理モジュール３０２は、新しいオーディオストリームの生成中、この新たなオーディオストリームに関連するオーディオエンドポイントデバイスに対してインストールされたオーディオストリームのローカルエフェクト処理モジュールLFX APOを、当該ストリームに適用する。ここで、ステップ４０１において、各オーディオエンドポイントデバイス（マイクロフォン）に対して、オーディオストリームのローカルエフェクト処理モジュールLFX APOとしてオーディオストリーム遮断モジュール３１１をインストールした結果、ステップ４０３において、オーディオエンドポイントデバイス（マイクロフォン）に関連した新たなオーディオストリームに対してオーディオストリーム遮断モジュール３１１が与えられる。そして、ステップ４０３において、オーディオストリーム遮断モジュール３１１は、初期化直後に、アクセス認証モジュール３１２に認証の要求を送信する。
【００５３】
ステップ４０４において、この要求に応答して、アクセス認証モジュール３１２は、ステップ４０２で受け取ったオーディオストリームの生成を要求するプロセスのIDを用いて、上述したオーディオストリームデータへアクセスするプロセスの認証をチェックする。ステップ４０４でのチェック結果に基づいて、ステップ４０５において、オーディオストリーム遮断モジュール３１１は、上述したオーディオストリームの生成を要求したプロセスがアクセス認証モジュール３１２の助けを借りて不正であると発見された場合、上述したオーディオストリームのデータをゼロ化する。
【００５４】
図５は、本態様に係るシステムと方法が実装できる汎用コンピュータ・システム（パーソナル・コンピュータやサーバ等の例を示している。図示の通り、コンピュータ・システム２０は、ＣＰＵ２１と、システムメモリ２２と、ＣＰＵ２１と関連付けられたメモリを含む様々なシステムコンポーネントを接続するシステムバス２３とを含む。システムバス２３は、バスメモリ又は、バスメモリコントローラ、周辺バス、及びローカルバスを次々含む従来より公知のあらゆるバス構造としても実現され、これらはどのような他のバスアーキテクチャとも通信可能である。システムメモリは、リードオンリーメモリ（ＲＯＭ）２４及びランダムアクセスメモリ（ＲＡＭ）２５を含む。基本的な入出力システム（ＢＩＯＳ）２６は、ＲＯＭ２４の使用によってオペレーティングシステムをロードする際等、パーソナル・コンピュータ２０の要素間の情報の伝達を担う基本的な手順を含む。
【００５５】
パーソナル・コンピュータ２０は、データの読み書きのためのハードディスク２７、取り外し可能な磁気ディスク２９の読み書きのための磁気ディスクドライブ２８、及びＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、その他の光学メディア等の光学ディスク３１の読み書きのための光学式ドライブ３０を含む。ハードディスク２７、磁気ディスクドライブ２８、及び光学式のドライブ３０は、ハードディスクインターフェース３２、磁気ディスクインターフェース３３、及び光学式のドライブインターフェース３４それぞれを横切るシステムバス２３と接続される。ドライブ及び対応するコンピュータ情報メディアは、コンピュータ命令、データ構造体、プログラムモジュール、及びパーソナル・コンピュータ２０の他のデータのストレージのための電源依存のモジュールである。
【００５６】
本発明は、ハードディスク２７、取り外し可能な磁気ディスク２９及び取り外し可能な光ディスク３１を用いるシステムの実装を提供するものであるが、コンピュータに読み込み可能な形式でデータを保存できるフラッシュメモリカード、デジタルのディスク、ランダムアクセスのメモリ（ＲＡＭ）等の他のタイプのコンピュータ情報メディア５６を使用してもよいことに留意されたい。また、これはコントローラ５５を介してシステムバス２３に接続される。
【００５７】
コンピュータ２０は、ファイルシステム３６を有し、ここに記録されたオペレーティングシステム３５が保持される。ここで、オペレーティングシステム３５は、図２に示すオーディオサブストリーム６０と、図３に示す、マイクロフォンのデータへのアクセスを制御するサブシステム６１を含む。また、コンピュータ２０は、追加のプログラムアプリケーション３７、他のプログラムモジュール３８、及びプログラムデータ３９を有する。ユーザは、入力デバイス（キーボード４０、マウス４２）を用いてコマンドと情報をパーソナル・コンピュータ２０に入力することができる。他の入力デバイス（不図示）：マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることもできる。そのような入力デバイスは、通常、システムバスに接続しているシリアルポート４６を通じてコンピュータ・システム２０に差し込まれるが、それらは、他の方法、例えばパラレル・ポート、ゲームポート、又は一般的なシリアルバス（ＵＳＢ）などにより接続してもよい。ディスプレイ機器のモニタ４７又は他のタイプは、また、ビデオアダプタ４８等のインターフェースと交差するシステムバス２３に接続している。モニタ４７に加えて、パーソナル・コンピュータは、スピーカー、プリンタ等の他の周辺の出力デバイス（不図示）を接続できる。
【００５８】
パーソナル・コンピュータ２０は、１つ又は複数のリモートコンピュータ４９とのネットワーク接続を用いて、ネットワーク環境で操作することができる。リモートコンピュータ（又はコンピュータ）４９は、図５に示すように、パーソナル・コンピュータ２０の性質として説明した上述の要素全ての大多数を有するパーソナル・コンピュータ又はサーバでもある。ルータ、ネットワークステーション、ピア接続の機器、又は他のネットワークノード等の他の機器もまた、かかるコンピュータ・ネットワークで存在し得るものである。
【００５９】
ネットワーク接続は、ローカルエリアコンピュータ・ネットワーク（ＬＡＮ）５０及びワイドエリアコンピュータ・ネットワーク（ＷＡＮ）を形成することができる。そのようなネットワークは、企業のコンピュータ・ネットワーク及び社内ネットワークで利用され、それらはたいていインターネットにアクセスすることができる。ＬＡＮ又はＷＡＮネットワークにおいて、パーソナルコンピュータ２０は、ネットワークアダプタ又はネットワークインターフェース５１に交差するローカルエリアネットワーク５０に接続されている。ネットワークが用いられる時には、パーソナルコンピュータ２０は、通信にインターネット等のワイドエリアコンピュータ・ネットワークを実現するために、モデム５４又は他のモジュールを使用することができる。内部又は外部の機器であるモデム５４は、シリアルポート４６によりシステムバス２３と接続される。かかるネットワーク接続は、単なる一例であり、ネットワークの正確な構成を示すものではない。すなわち、技術の通信モジュールによって、あるコンピュータから他のコンピュータへの接続を確立する他の方法（Ｂｌｕｅｔｏｏｔｈ接続等）もあることに留意されたい。
【００６０】
様々な実施形態において、ハードウェア、ソフトウェア、ファームウェア、又はこれらのあらゆる組み合わせにおいて、ここで説明されたシステム及びメソッドを実施し得る。ソフトウェアにおいて実装される場合は、メソッドは非一時的コンピュータ可読媒体の１つ又は複数の命令又はコードとして保存され得る。コンピュータ可読メディアは、データストレージを含む。あくまでも例であり限定するものではないが、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、フラッシュメモリ、若しくは他のタイプの電気、磁気、光学式の記憶媒体、又はその他のメディアであってもよい。すなわち、これらによって命令又はデータ構造体という形で、要求されたプログラムコードを運ぶか又は保存することができ、汎用コンピュータのプロセッサによってアクセスすることができる。
【００６１】
様々な実施形態で、本発明のシステム及びメソッドが、モジュールとして実装され得る。ここで用語「モジュール」は、実世界の機器、コンポーネント、又はハードウェアを用いて実装されたコンポーネント配置であり、例えばＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の、又は例えばモジュールの機能を実行するマイクロプロセッサシステムや命令セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という２つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる（図５において詳述したもの等）。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
【００６２】
なお、実施形態の通常の機能のうちの全てをここで開示しているわけではない。本発明の何れの実施形態を開発する場合においてでも、開発者の具体的な目標を達成するためには多くの実施に係る特別な決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたい。そのような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとってはエンジニアリングの日常であると理解されたい。
【００６３】
さらに、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語又は表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたし。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、珍しい又は特別な意味を帰することは意図されていない。
【００６４】
本明細書で開示された様々な態様は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。さらに、態様及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。
【図１】
0006307126.tif 000002
【図２】
0006307126.tif 000003
【図３】
0006307126.tif 000004
【図４】
0006307126.tif 000005
【図５】
0006307126.tif 000006