(57)【要約】【課題】複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステム、メソッド、およびコンピュータ可読媒体を提供する。【解決手段】アンチウィルスソフトウェアアプリケーションなどのユーザモードアプリケーションは、共通情報モデルを通じてファイルシステム操作へのアクセス権を得、それにより、アンチウィルスソフトウェアのベンダがカーネルモードフィルタを作成する必要がなくなる。アンチウィルスソフトウェアアプリケーションがファイルシステム操作を利用できるとき、本発明では、コンピューティングデバイスにインストールされた各アンチウィルスソフトウェアアプリケーションにスキャンを行わせて、データがマルウェアであるかどうかを判定させることができる。【選択図】図４
2006134307.tif 000002
【特許請求の範囲】
【請求項１】
複数のアンチウィルスソフトウェアアプリケーションを含むコンピューティングデバイスにおいて、前記アンチウィルスソフトウェアアプリケーションの知識基盤を統合してマルウェアの実行または拡散を阻止する、コンピュータによって実施される方法であって、
（ａ）要求が満たされる前に該要求を傍受するステップと、
（ｂ）前記要求に関係しているファイルへのアクセス権を前記アンチウィルスソフトウェアアプリケーションに提供するステップと、
（ｃ）前記アンチウィルスソフトウェアアプリケーションに、前記要求に関係している前記ファイルを分析させて、該ファイルがマルウェアを含むかどうかを判定させるステップと、
（ｄ）前記ファイルがマルウェアを含む場合、前記要求が満たされることを阻止するステップと
を備えることを特徴とする方法。
【請求項２】
前記ファイルがマルウェアを含まない場合、前記要求が満たされることを許可するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記アンチウィルスソフトウェアアプリケーションによって分析された前記ファイルの状態を追跡するためのデータベースを作成するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記データベースは、前記ファイルの状態を表す変数にファイルインデックス値を関連付けることを特徴とする請求項３に記載の方法。
【請求項５】
前記データベース中で変数に前記ファイルインデックス値を関連付けるステップは、
（ａ）前記ファイルインデックス値が前記データベースに入力されているかどうかを判定するステップと、
（ｂ）前記ファイルインデックス値が前記データベースにない場合、
（ｉ）ボリュームにある各ファイルの一意のファイルインデックス値を保持するデータ構造から前記ファイルインデックス値を得るステップと、
（ｉｉ）前記ファイルインデックス値を前記データベースに入力するステップと
を含むことを特徴とする請求項４に記載の方法。
【請求項６】
（ａ）前記ファイルがマルウェアを含む場合、前記ファイルがマルウェアを含むことを示す変数を、前記データベースでファイルインデックス値に関連付けるステップと、
（ｂ）逆に、前記ファイルがマルウェアを含まない場合は、前記ファイルがマルウェアを含まないことを示す変数を、前記データベース中で前記ファイルインデックス値に関連付けるステップと
をさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
クエリーに応答して、前記ファイルインデックス値に関連付けられた前記変数を答えるステップをさらに備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記データベースで前記ファイルインデックス値に関連付けられる前記変数は、２ビットからなることを特徴とする請求項６に記載の方法。
【請求項９】
ボリュームにある各ファイルの一意のファイルインデックス値を保持する前記データ構造は、マスタファイルテーブルであることを特徴とする請求項５に記載の方法。
【請求項１０】
前記要求を傍受するステップは、該要求が、コンピューティングデバイスをマルウェアにさらす可能性を有するかどうかを判定するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
コンピューティングデバイスをマルウェアにさらす可能性のない要求は、
（ａ）新しいファイルを作成させるコマンド、
（ｂ）データを含まないファイルを対象とするファイルオープンコマンド、および
（ｃ）ディレクトリを対象とするコマンド
を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記アンチウィルスソフトウェアアプリケーションに、前記要求に関係しているファイルへのアクセス権を与えるステップは、
（ａ）ファイルマッピングセクションオブジェクトを作成するステップと、
（ｂ）前記ファイルマッピングセクションオブジェクトがサービスアプリケーションからアクセスできるようにするステップと、
（ｃ）前記アンチウィルスソフトウェアアプリケーションからアクセスできる、前記ファイルマッピングセクションオブジェクトに基づく前記ファイルのビューを作成するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項１３】
前記ファイルのビューは、一度に１つのアンチウィルスソフトウェアアプリケーションからアクセスすることができることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記サービスアプリケーションは、前記アンチウィルスソフトウェアアプリケーションが前記ファイルにアクセスする要求をスケジュールすることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記ファイルマッピングセクションオブジェクトがサービスアプリケーションからアクセスできるようにするステップは、前記サービスアプリケーションに関連付けられた前記オブジェクトテーブルに前記ファイルマッピングセクションオブジェクトを挿入するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記アンチウィルスソフトウェアアプリケーションは、カーネルモードフィルタを実装することなく、前記要求に関係している前記ファイルにアクセスすることを特徴とする請求項１に記載の方法。
【請求項１７】
前記アンチウィルスソフトウェアアプリケーションは、ファイルハンドルを作成せずに、前記要求に関係している前記ファイルにアクセスすることを特徴とする請求項１に記載の方法。
【請求項１８】
前記アンチウィルスソフトウェアアプリケーションに、前記要求に関係している前記ファイルを分析させて、該ファイルがマルウェアを含むかどうかを判定させるステップは、
（ａ）ユーザモードで実行される前記アンチウィルスソフトウェアアプリケーションと通信するサービスアプリケーションを作成するステップと、
（ｂ）前記アンチウィルスソフトウェアアプリケーションに、前記サービスアプリケーションに登録させ、走査プロファイルを作成させるステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項１９】
前記走査プロファイルは、アンチウィルスソフトウェアアプリケーションがいつ前記ファイルにアクセスするかを規定することを特徴とする請求項１８に記載の方法。
【請求項２０】
前記走査プロファイルは、いつアンチウィルスソフトウェアアプリケーションが前記コンピューティングデバイスからマルウェアの感染を除去するかを規定することを特徴とする請求項１８に記載の方法。
【請求項２１】
前記ファイルがマルウェアを含む旨の判定は、前記ファイルを分析したすべての前記アンチウィルスソフトウェアアプリケーションが、マルウェアのシグネチャーの特徴を識別したときに行われることを特徴とする請求項１に記載の方法。
【請求項２２】
前記ファイルがマルウェアを含む旨の判定は、前記ファイルを分析した前記アンチウィルスソフトウェアアプリケーションの多数がマルウェアのシグネチャーの特徴を識別したときに行われることを特徴とする請求項１に記載の方法。
【請求項２３】
前記ファイルがマルウェアを含む旨の判定は、前記アンチウィルスソフトウェアアプリケーションによって生成された結果のセットの加重値を計算し、前記加重値が所定の閾値より高いかどうかを判定することによって行われることを特徴とする請求項１に記載の方法。
【請求項２４】
アンチウィルスソフトウェアアプリケーションの知識基盤を統合してマルウェアの実行または拡散を防ぐシステムであって、
（ａ）入力要求または出力要求を満たすことが可能なプログラムモジュールと、
（ｂ）前記アンチウィルスソフトウェアアプリケーションがマルウェアを検出すると、前記要求が満たされることを阻止するように動作するカーネルモードサービスアプリケーションと、
（ｃ）前記アンチウィルスソフトウェアアプリケーション間のスキャンをスケジュールするように動作するユーザモードサービスアプリケーションと
を備えることを特徴とするシステム。
【請求項２５】
前記アンチウィルスソフトウェアアプリケーションに、前記要求に関係しているファイルへのアクセス権を与えるデータマッピングモジュールをさらに備えることを特徴とする請求項２４に記載のシステム。
【請求項２６】
前記データマッピングモジュールは、一度に１つのアンチウィルスソフトウェアアプリケーションが前記ファイルにアクセスすることを許可することを特徴とする請求項２５に記載のシステム。
【請求項２７】
前記カーネルモードサービスアプリケーションは、前記ユーザモードサービスアプリケーションと通信して前記要求を傍受し、前記アンチウィルスソフトウェアアプリケーションに前記ファイルを分析させ、前記ファイルがマルウェアを含むかどうかを判定させることを特徴とする請求項２４に記載のシステム。
【請求項２８】
前記アンチウィルスソフトウェアアプリケーションによって分析された前記ファイルの状態を追跡することが可能なスキャンキャッシュをさらに備えることを特徴とする請求項２７に記載のシステム。
【請求項２９】
アンチウィルスソフトウェアアプリケーションは、前記ユーザモードサービスアプリケーションに登録し、前記アンチウィルスソフトウェアアプリケーションに前記ファイルを分析させる前記要求を規定することを特徴とする請求項２４に記載のシステム。
【請求項３０】
ボリュームと、変数にファイルインデックス値を関連付けるデータベースとを含むコンピューティングデバイスにおいて、ファイルの状態が識別された旨の通知を受け取るのに応答して前記ファイルの状態を追跡する、コンピュータによって実施される方法であって、
（ａ）前記ファイルのファイルインデックス値が前記データベースに含まれるかどうかを判定するステップと、
（ｂ）前記ファイルのファイルインデックス値が前記データベースに含まれない場合、
（ｉ）前記ファイルのファイルインデックス値を取得し、
（ｉｉ）前記ファイルインデックス値を前記データベースに挿入するステップと、
（ｃ）前記ファイルインデックス値に関連付けられた前記変数の値を、前記ファイルの状態を表すように設定するステップと
を備えることを特徴とする方法。
【請求項３１】
前記変数は、
（ａ）マルウェアに感染している、
（ｂ）マルウェアの感染がない、および
（ｃ）マルウェアの感染に関して不明
を含む３つの状態の１つを表すことができることを特徴とする請求項３０に記載の方法。
【請求項３２】
マルウェアへの感染に関して前記ファイルの状態が不明である場合、アンチウィルスソフトウェアアプリケーションに前記ファイルを分析させ、前記ファイルがマルウェアを含むかどうかを判定させるステップをさらに備えることを特徴とする請求項３１に記載の方法。
【請求項３３】
（ａ）前記アンチウィルスソフトウェアアプリケーションが、前記ファイルがマルウェアを含むと判定した場合、前記データベース中の前記ファイルインデックス値に関連付けられる前記変数の値を、マルウェアに感染していることを表す値に設定するステップと、
（ｂ）逆に、前記アンチウィルスソフトウェアアプリケーションが、前記ファイルがマルウェアを含まないと判定した場合、前記データベース中で前記ファイルインデックス値に関連付けられる前記変数の値を、マルウェアへの感染がないことを表す値に設定するステップと
をさらに備えることを特徴とする請求項３２に記載の方法。
【請求項３４】
前記ファイルのファイルインデックス値を取得するステップは、前記ボリュームに格納されたファイルの属性を追跡するデータ構造にクエリーするステップを含むことを特徴とする請求項３０に記載の方法。
【請求項３５】
前記データベースに前記ファイルインデックス値を挿入するステップは、前記データベースのエントリを、割り当てられた増設メモリであるより大きなデータベースにコピーするステップを含むことを特徴とする請求項３０に記載の方法。
【請求項３６】
前記のより大きなデータベースに割り当てられる前記増設メモリは、前記データベースに割り当てられる前記メモリの何割（ｐｅｒｃｅｎｔａｇｅ）かであることを特徴とする請求項３５に記載の方法。
【請求項３７】
前記データベースは、削除されたファイルに関連付けられたファイルインデックス値を含み、削除されたファイルに関連付けられた変数は、新しいファイルを作成させるコマンドをインターセプトするのに応答して、マルウェアに感染していないことを表す値に変更されることを特徴とする請求項３０に記載の方法。
【請求項３８】
ボリュームと、変数にファイルインデックス値を関連付けるデータベースとを含むコンピューティングデバイスで実行されると、ユーザモードアプリケーションに前記ファイルのデータへのアクセス権を与える方法を実行するコンピュータ実行可能命令を担持するコンピュータ可読媒体であって、前記方法は、
（ａ）前記ファイルのファイルインデックス値が前記データベースに含まれるかどうかを判定するステップと、
（ｂ）前記ファイルのファイルインデックス値が前記データベースに含まれない場合、
（ｉ）前記ファイルのファイルインデックス値を取得し、
（ｉｉ）前記ファイルインデックス値を前記データベースに挿入するステップと、
（ｃ）前記ファイルインデックス値に関連付けられた前記変数の値を、前記ファイルの状態を表すように設定するステップと
を備えることを特徴とするコンピュータ可読媒体。
【請求項３９】
前記変数は、
（ａ）マルウェアに感染している、
（ｂ）マルウェアへの感染がない、および
（ｃ）マルウェアへの感染に関して不明
を含む３つの状態の１つを表すことができることを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４０】
マルウェアへの感染に関して前記ファイルの状態が不明である場合、アンチウィルスソフトウェアアプリケーションに前記ファイルを分析させ、前記ファイルがマルウェアを含むかどうかを判定させるステップをさらに備えることを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４１】
（ａ）前記アンチウィルスソフトウェアアプリケーションが、前記ファイルがマルウェアを含むと判定した場合、前記データベース中で前記ファイルインデックス値に関連付けられた前記変数の値を、マルウェアに感染していることを表す値に設定するステップと、
（ｂ）逆に、前記アンチウィルスソフトウェアアプリケーションが、前記ファイルがマルウェアを含まないと判定した場合、前記データベース中で前記ファイルインデックス値に関連付けられた前記変数の値を、マルウェアに感染していないことを表す値に設定するステップと
をさらに備えることを特徴とする請求項４０に記載のコンピュータ可読媒体。
【請求項４２】
前記ファイルのファイルインデックス値を取得するステップは、前記ボリュームに格納されたファイルの属性を追跡するデータ構造にクエリーするステップを含むことを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４３】
前記データベースに前記ファイルインデックス値を挿入するステップは、前記データベースのエントリを、割り当てられた増設メモリであるより大きなデータベースにコピーするステップを含むことを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４４】
前記のより大きなデータベースに割り当てられる前記増設メモリは、前記データベースに割り当てられる前記メモリの何割かであることを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４５】
前記データベースは、削除されたファイルに関連付けられたファイルインデックス値を含み、削除されたファイルに関連付けられた変数は、新しいファイルを作成させるコマンドをインターセプトするのに応答して、マルウェアへの感染がないことを表す値に変更されることを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４６】
ユーザモードアプリケーション、カーネルモードアプリケーション、およびファイルを含むコンピューティングデバイスにおいて、前記ユーザモードアプリケーションに前記ファイルのデータへのアクセス権を与える、コンピュータによって実施される方法であって、
（ａ）前記ユーザモードアプリケーションのためのインターフェースを作成するステップと、
（ｂ）前記カーネルモードアプリケーションにファイルマッピングセクションオブジェクトを作成させるステップと、
（ｃ）前記インターフェースに、前記ファイルマッピングセクションオブジェクトにアクセスするのに必要な情報を提供するステップと、
（ｄ）前記ファイルのビューを作成するステップと
を備えることを特徴とする方法。
【請求項４７】
要求に応答して前記ユーザモードアプリケーションにファイルデータを送信するステップをさらに備え、前記要求は、アプリケーションプログラムインターフェース呼び出しとして行われることを特徴とする請求項４６に記載の方法。
【請求項４８】
前記ユーザモードアプリケーションは、データのコンフリクトを生じずに、ファイルデータへのアクセス権を得ることを特徴とする請求項４７に記載の方法。
【請求項４９】
前記ユーザモードアプリケーションは、アンチウィルスソフトウェアアプリケーションであることを特徴とする請求項４６に記載の方法。
【請求項５０】
前記インターフェースは、前記アンチウィルスソフトウェアアプリケーションが走査プロファイルを作成することを可能にすることを特徴とする請求項４９に記載の方法。
【請求項５１】
前記走査プロファイルは、前記アンチウィルスソフトウェアアプリケーションが前記ファイルのデータを読み出す場合を規定することを特徴とする請求項５０に記載の方法。
【請求項５２】
前記走査プロファイルは、前記アンチウィルスソフトウェアアプリケーションが前記コンピューティングデバイスのマルウェアへの感染を除去する場合を規定することを特徴とする請求項５０に記載の方法。
【請求項５３】
前記アンチウィルスソフトウェアアプリケーションは、前記ファイルのデータをマルウェアのシグネチャーの特徴と比較することを特徴とする請求項４９に記載の方法。
【請求項５４】
前記カーネルモードアプリケーションにファイルマッピングセクションオブジェクトを作成させるステップは、オペレーティングシステムにアプリケーションプログラムインターフェース呼び出しを行うステップを含むことを特徴とする請求項４６に記載の方法。
【請求項５５】
前記インターフェースに前記ファイルマッピングセクションオブジェクトにアクセスするのに必要な情報を提供するステップは、前記インターフェースに関連付けられた前記オブジェクトテーブルに前記セクションオブジェクトを挿入するステップを含むことを特徴とする請求項５４に記載の方法。
【請求項５６】
前記ファイルのビューを作成するステップは、前記インターフェースが利用できる前記メモリ空間にある現在のビューを除去するステップを含むことを特徴とする請求項４６に記載の方法。
【請求項５７】
ユーザモードアプリケーション、カーネルモードアプリケーション、およびファイルを含むコンピューティングデバイスで実行されると、前記ユーザモードアプリケーションに前記ファイルのデータへのアクセス権を与える方法を実行するコンピュータ実行可能命令を担持するコンピュータ可読媒体であって、前記方法は、
（ａ）前記ユーザモードアプリケーションのためのインターフェースを作成するステップと、
（ｂ）前記カーネルモードアプリケーションにファイルマッピングセクションオブジェクトを作成させるステップと、
（ｃ）前記インターフェースに、前記ファイルマッピングセクションオブジェクトにアクセスするのに必要な情報を提供するステップと、
（ｄ）前記ファイルのビューを作成するステップと
を備えることを特徴とするコンピュータ可読媒体。
【請求項５８】
要求に応答して前記ユーザモードアプリケーションにファイルデータを送信するステップをさらに備え、前記要求は、アプリケーションプログラムインターフェース呼び出しとして行われることを特徴とする請求項５７に記載のコンピュータ可読媒体。
【請求項５９】
要求が行われると、前記ユーザモードアプリケーションは、ファイルデータへの排他的なアクセス権を与えられることを特徴とする請求項５８に記載のコンピュータ可読媒体。
【請求項６０】
前記ユーザモードアプリケーションは、アンチウィルスソフトウェアアプリケーションであることを特徴とする請求項５７に記載のコンピュータ可読媒体。
【請求項６１】
前記インターフェースは、前記アンチウィルスソフトウェアアプリケーションが走査プロファイルを作成することを可能にすることを特徴とする請求項６０に記載のコンピュータ可読媒体。
【請求項６２】
前記走査プロファイルは、前記アンチウィルスソフトウェアアプリケーションが前記ファイルのデータを読み出す場合を規定することを特徴とする請求項６１に記載のコンピュータ可読媒体。
【請求項６３】
前記走査プロファイルは、前記アンチウィルスソフトウェアアプリケーションが前記コンピューティングデバイスのマルウェアへの感染を除去する場合を規定することを特徴とする請求項６１に記載のコンピュータ可読媒体。
【請求項６４】
前記アンチウィルスソフトウェアアプリケーションは、前記ファイルのデータをマルウェアのシグネチャーの特徴と比較することを特徴とする請求項６０に記載のコンピュータ可読媒体。
【請求項６５】
前記カーネルモードアプリケーションにファイルマッピングセクションオブジェクトを作成させるステップは、オペレーティングシステムにアプリケーションプログラムインターフェース呼び出しを行うステップを含むことを特徴とする請求項５７に記載のコンピュータ可読媒体。
【請求項６６】
前記インターフェースに前記ファイルマッピングセクションオブジェクトにアクセスするのに必要な情報を提供するステップは、前記インターフェースに関連付けられた前記オブジェクトテーブルに前記セクションオブジェクトを挿入するステップを含むことを特徴とする請求項６５に記載のコンピュータ可読媒体。
【請求項６７】
前記ファイルのビューを作成するステップは、前記インターフェースが利用できる前記メモリ空間にあるビューを除去するステップを含むことを特徴とする請求項５７に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングデバイスに関し、より詳細には、マルウェア（コンピュータウィルス、ワーム、スパイウェアなどの破壊工作ソフト、悪意のこもったソフトウェア）からのコンピューティングデバイスの保護に関する。
【背景技術】
【０００２】
ますます多くのコンピュータとその他のコンピューティングデバイスがインターネットなどの各種ネットワークを通じて相互に接続されているのに従い、特にネットワークあるいは情報のストリームを通じて伝達される侵入や攻撃に対するコンピュータセキュリティの重要性が増している。当業者には認識されるように、そうした攻撃は、無論これらに限らないが、コンピュータウィルス、コンピュータワーム、システムコンポーネントの置き換え、サービス開始拒否(ｄｅｎｉａｌ ｏｆ ｓｅｒｖｉｃｅ ａｔｔａｃｋｓ)、あるいは正当なシステム機能の悪用／濫用などを含む様々な形で行われ、これらはすべて、１つまたは複数のコンピュータシステムの脆弱性を不正な目的に利用する。当業者は、こうした各種のコンピュータ攻撃は、技術的に互いに別個のものであると理解されると思われるが、本発明では、説明を簡潔にするために、インターネットなどのコンピュータネットワークで拡がる悪意のあるすべてのコンピュータプログラムを、以降ではまとめてコンピュータマルウェア、あるいは単にマルウェア（ｍａｌｗａｒｅ）と称する。
【０００３】
コンピュータシステムがコンピュータマルウェアによって攻撃される、あるいはマルウェアに「感染」した時、マイナスの結果は様々な形をとり、それらには、システムデバイスを使用不可にする；、ファームウェア、アプリケーション、またはデータファイルを消去または破損させる；潜在的に機密性のあるデータをネットワーク上の別の場所に転送する；コンピュータシステムをシャットダウンさせる；あるいはコンピュータシステムをクラッシュさせる、などが含まれる。コンピュータマルウェアのすべてではなくとも多くのさらに別の悪質な側面は、感染したコンピュータシステムを利用して他のシステムを感染させることである。
【０００４】
コンピュータマルウェア、具体的にはコンピュータウィルスおよびワームに対する従来の防御の１つは、市販のアンチウィルスソフトウェアアプリケーションである。概説すると、アンチウィルスソフトウェアアプリケーションは、データをスキャンして、コンピュータマルウェアに関連する識別可能なパターンを探す。コンピュータマルウェアに関連するパターンを検出すると、アンチウィルスソフトウェアアプリケーションは、そのマルウェアを隔離するか、マルウェアを削除することにより、対応することができる。不都合なことに、アンチウィルスソフトウェアアプリケーションは、通例、既知の識別可能なコンピュータマルウェアにだけ一番うまく機能する。多くの場合、これは、データ中のパターンを、マルウェアの「シグネチャー」（電子メールなどのメッセージの末尾に付加される、発信者の氏名や連絡先などを記述した行：署名ともいう）と称されるものと照合することによって行われる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通例、既存のアンチウィルスソフトウェアアプリケーションによって行われる大半の動作は、オペレーティングシステムが「ユーザモード」の時に行われる。当業者などには知られるように、アンチウィルスソフトウェアアプリケーションのようなコンピュータプログラムは、「カーネルモード」か「ユーザモード」のいずれかで実行することができる。「カーネルモード」とは、オペレーティングシステムの最も特権を与えられ、保護されるレベルで行われる処理を指す。カーネルモードプログラムは、常に保護されたメモリに常駐し、基本的なオペレーティングシステムサービスを提供する。「ユーザモード」とは、カーネルモードデータへのアクセスを利用できないアプリケーション層で行われる処理を指す。以前は、カーネルモードから利用することができる情報および機能へのアクセスを必要とするアンチウィルスソフトウェアアプリケーションのベンダ（メーカ又は販売会社）は、オペレーティングシステムとのインターフェースをとるカーネルモードフィルタを構築する必要があった。不都合なことに、各アンチウィルスソフトウェアのベンダは、コンピューティングデバイスで行われることが予定される、入出力（以降では「Ｉ／Ｏ」と称する）などのカーネルモードから利用することができる機能にアクセスするための独自のフィルタを開発する必要があった。さらに、各アンチウィルスソフトウェアアプリケーションが、基本的に同じタスクを行うための対応するカーネルモードフィルタを有する場合、コンピューティングデバイスには、すべてカーネルにロードされたいくつかの異なるフィルタで、重複したコードが実行されるという動作上の負担がかかる。既存技術のさらに別の不都合点は、ユーザモードインターフェースに整合性と画一性がなく、エラーが生じやすいことである。したがって、アンチウィルスソフトウェアのベンダがカーネルモードフィルタを実装する必要なしに、コンピューティングデバイスで行われることが予定されるＩ／Ｏをアンチウィルスソフトウェアアプリケーションが利用することができるメカニズム（仕組み）が必要とされる。
【０００６】
数多くのソフトウェアのベンダが、アンチウィルスソフトウェアアプリケーションを販売し、増え続けるマルウェアのシグネチャーのデータベースを保持・整備している。実際、アンチウィルスソフトウェアのベンダの最も重要な資産の１つは、既知のマルウェアから集められたシグネチャーの知識基盤（知識ベースともいう）である。しかし、市販のアンチウィルスソフトウェアアプリケーションは、互いに互換性があるとは限らない。例えば、場合によっては、２つの異なるアンチウィルスソフトウェアアプリケーションがコンピューティングデバイスにインストールされると、データのコンフリクト（衝突）が生じるということが知られている。その結果、ユーザは、コンピューティングデバイスに複数のアンチウィルスソフトウェアアプリケーションをインストールし、それぞれのアプリケーションの知識基盤の利益を享受することができない。そのため、同じコンピューティングデバイスにインストールされた複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合する機構が必要とされる。
【課題を解決するための手段】
【０００７】
本発明は、複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合してコンピューティングデバイスに関連付けられたデータがマルウェアであるかどうかを判定する機構を提供することにより、上記で明らかにした必要性に対処する。本発明の一態様は、アンチウィルスソフトウェアアプリケーションが、共通情報モデル（ｃｏｍｍｏｎ ｉｎｆｏｒｍａｔｉｏｎ ｍｏｄｅｌ）を通じて、Ｉ／Ｏ要求に関係しているデータにアクセスできるようにする方法である。共通情報モデルは、一般にはカーネルモードフィルタから利用することができる機能を提供することにより、アンチウィルスソフトウェアのベンダがカーネルモードフィルタを作成する必要をなくする。そして、共通情報モデルは、アンチウィルスソフトウェアアプリケーションに、コンピューティングデバイスと関連つけられているデータをスキャンさせて、データがマルウェアであるかどうかを判定させることができる。マルウェアが検出されると、そのマルウェアを読み出す、記憶する、または実行する試みは阻止される。
【０００８】
本発明の別の態様は、コンピューティングデバイスに関連付けられたファイルが以前にマルウェアと識別されているかどうか、または以前に安全であることが確かめられているかどうかを判定する方法である。本発明のこの態様は、１つまたは複数のアンチウィルスソフトウェアアプリケーションがファイルをスキャンする際に、ファイルに変数を関連付けることを含む。この変数は、ファイルがマルウェアであるかどうかを示し、後に再呼び出しされることができる。例えば、この変数は、ユーザがファイルを実行することを試みる時に再呼び出しされることができる。変数が、ファイルがマルウェアであると示す場合は、ユーザによるファイルを実行する試みは失敗する。逆に、変数が、ファイルがマルウェアでないことを示す場合、ファイルを実行する試みは成功し、アンチウィルスソフトウェアアプリケーションがファイルの重複したスキャンを行うことは必要とされない。
【０００９】
本発明の別の態様は、アンチウィルスソフトウェアアプリケーションがファイルデータにアクセスすることを可能にする非常に効率的な方法である。本発明のこの態様は、１つまたは複数のアンチウィルスソフトウェアアプリケーションによってスキャンを行うために使用されるファイルマッピングセクションオブジェクトを作成することを含む。そして、アンチウィルスアプリケーションとのインターフェースをとるユーザモードアプリケーションに、ファイルマッピングセクションオブジェクトにアクセスするために使用することができるデータが与えられる。最後に、アンチウィルスソフトウェアアプリケーションによってアクセスされることができるファイルのビューが生成される。本発明のこの態様は、アンチウィルスソフトウェアアプリケーションに基本的なファイルシステム操作のセットを提供し、それによって、スキャンが行われる速度が向上する。
【００１０】
本発明のさらに別の実施形態では、複数のアンチウィルスソフトウェアの知識基盤を統合するコンピューティングデバイスが提供される。このコンピューティングデバイスは、セキュリティサービスアプリケーション、１つまたは複数のアンチウィルスソフトウェアアプリケーション、および、スキャンキャッシュ（ｓｃａｎ ｃａｃｈｅ）とデータマッピングモジュールを含む汎用セキュリティフィルタを含む。汎用セキュリティフィルタとセキュリティサービスアプリケーションは、共同で機能して、アンチウィルスソフトウェアアプリケーションに共通情報モデルを提供する。共通情報モデルにより、アンチウィルスソフトウェアアプリケーションは、コンピューティングデバイスで行われることが予定されるＩ／Ｏ要求にアクセスすることができる。Ｉ／Ｏ要求がインターセプト（傍受）されると、アンチウィルスソフトウェアアプリケーションは、共通情報モデルと対話してスキャン（ウイルス・チェック）をスケジュールすることができる。スキャンが行われる時、セキュリティサービスアプリケーションは、コンピューティングデバイスにインストールされた異なるアンチウィルスソフトウェアアプリケーションを認識しており、データのコンフリクトを防ぐことができる。
【００１１】
さらに別の実施形態では、コンテンツ、すなわち本明細書に記載される方法に従ってコンピューティングデバイスを動作させるプログラムとともにコンピュータ可読媒体が提供される。
【００１２】
前述の本発明の態様とそれに伴う利点・効果の多くは、添付図面と併せて以下の詳細な説明を参照することによってそれらがより理解されると、より容易に理解されよう。
【発明を実施するための最良の形態】
【００１３】
本発明によれば、複数のアンチウィルスソフトウェアアプリケーションの知識基盤（ｋｎｏｗｌｅｄｇｅ ｂａｓｅ）を統合する（ａｇｇｒｅｇａｔｅ）、システム、メソッド、およびコンピュータ可読媒体が提供される。アンチウィルスソフトウェアアプリケーションなどのユーザモードアプリケーションには、共通情報モデルを通じてＩ／Ｏ要求などのファイルシステム操作へのアクセス権が与えられ、それにより、アンチウィルスソフトウェアのベンダがカーネルモードフィルタを作成する必要がなくなる。Ｉ／Ｏ要求がインターセプト（傍受）されると、本発明は、コンピューティングデバイスにインストールされた各アンチウィルスソフトウェアアプリケーションに、スキャンを行わせてその要求に関係しているデータがマルウェアであるかどうかを判定させることができる。本発明は、アンチウィルスソフトウェアアプリケーションのコンテクストで説明するが、当業者および他の者は、本発明は他の分野のソフトウェア開発にも適用できることを認識されよう。したがって、ここに記載される本発明の実施形態は、本質的に例示的なものであり、制限的なものとは解釈すべきでない。
【００１４】
図１は、従来技術によって構成されたコンピューティングデバイス１００のブロック図である。コンピューティングデバイス１００は、これらに限定しないが、パーソナルコンピューティングデバイス、サーバベースのコンピューティングデバイス、携帯情報端末、携帯電話、何らかの種のメモリを有する他の電子デバイスなどを含む各種のデバイスでよい。図示を容易にするため、また本発明の理解には重要でないため、図１には、キーボード、マウス、プリンタ、あるいは他のＩ／Ｏデバイス、ディスプレイなど、多くのコンピューティングデバイスが有する一般的なコンポーネントは示さない。
【００１５】
図１に示すコンピューティングデバイス１００は、ハードウェアプラットフォーム１０２、オペレーティングシステム１０４、およびアプリケーションプラットフォーム１０６を含む。図示を簡単にするため、また本発明の理解に重要でないため、図１には、中央演算処理装置、メモリ、ハードドライブなど、ハードウェアプラットフォーム１０２に通例含まれるコンポーネントは図示しない。また、同じ理由から、図１には、オペレーティングシステム１０４およびアプリケーションプラットフォーム１０６のコンポーネントも図示しない。
【００１６】
図１に示すように、コンピューティングデバイス１００のコンポーネントは、最下層のハードウェアプラットフォーム１０２および最上層のアプリケーションプラットフォーム１０６とともに階層化される。図１の階層化は、本発明は、階層環境で実施されることが好ましいことを表す。コンピューティングデバイス１００に含まれる各層は、低い層ではシステムに依存する。より具体的には、アプリケーションプラットフォーム１０６は、オペレーティングシステム１０４の上で実行され、ハードウェアプラットフォーム１０２のコンポーネントに直接アクセスすることはできない。代わりに、アプリケーションプラットフォーム１０６によるハードウェアプラットフォーム１０２へのアクセスは、オペレーティングシステム１０４によって管理される。当業者および他の者に知られるように、オペレーティングシステム１０４は、アプリケーションプラットフォーム１０６が利用することができるサービスを規定するアプリケーションプログラミングインターフェース（「ＡＰＩ」）をアプリケーションプラットフォーム１０６に提供する。
【００１７】
図２は、Ｉ／Ｏ要求に関係しているデータへのアクセス権をアンチウィルスソフトウェアアプリケーションに与える従来技術の手法を説明するのに適したブロック図である。当業者および他の者に知られるように、コンピュータユーザは、ハードドライブ、フロッピー（登録商標）ディスク、ランダムアクセスメモリ、コンパクトディスク（「ＣＤ」）などのメモリデバイスにデータを読み書きする必要性を常に有する。例えば、大半のソフトウェアアプリケーションによって提供される一般的な操作の１つは、メモリデバイスに記憶されたファイルを開き、そのファイルの内容をコンピュータディスプレイに表示することである。しかし、ファイルを開くと、そのファイルに関連付けられたマルウェアを実行させる可能性があるので、アンチウィルスソフトウェアアプリケーションは、通例、開く動作が満たされる前に、ファイルのスキャンまたは他の分析を行う。マルウェアが検出された場合、スキャンを行ったアンチウィルスソフトウェアアプリケーションは、例えばファイルを開く動作を失敗させることにより、マルウェアの実行を阻止することができる。また、アンチウィルスソフトウェアアプリケーションは、マルウェアを除去する、またはマルウェアを「隔離所」（quarantine）に入れるオプションをコンピュータユーザに提示する場合もある。
【００１８】
当業者および他の者に知られるように、コンピューティングデバイスで行われるＩ／Ｏ要求は、Ｉ／Ｏシステムと称されるオペレーティングシステム１０４（図１）のコンポーネントによって扱われる。マルウェアからコンピューティングデバイスを保護するために、Ｉ／Ｏ要求が受け取られると、アンチウィルスソフトウェアアプリケーションにその事が通知される。次いで図２を参照して、Ｉ／Ｏ要求に関係しているデータへのアクセスをアンチウィルスソフトウェアアプリケーションに提供する周知のプロセスを説明する。図２に示すコンピューティングデバイス１００は、Ｉ／Ｏシステム２００、ローカルまたはリモートのＩ／Ｏデバイス２０２、ユーザアプリケーション２０４、アンチウィルスフィルタ２０６〜２１０、および、ユーザモードまたはカーネルモードに常駐するアンチウィルスソフトウェアアプリケーション／ドライバ２１２〜２１６を含む。Ｉ／Ｏを行う要求がユーザアプリケーション２０４などのユーザアプリケーションから生成されると、Ｉ／Ｏシステム２００がその要求を受け取る。図２に示すように、ユーザアプリケーションはユーザモードで動作し、カーネルモードのＩ／Ｏシステム２００によって満たされるＩ／Ｏ要求を生成する。要求が満たされる前に、Ｉ／Ｏ要求が満たされる予定であることがアンチウィルスフィルタ２０６、２０８、および２１０に通知されることができる。それに応答して、アンチウィルスフィルタ２０６、２０８、および２１０はそれぞれ、Ｉ／Ｏ要求に関係しているデータをスキャンすべきことを、各自のアンチウィルスソフトウェアアプリケーション／ドライバ２１２、２１４、および２１６に指示することができる。Ｉ／Ｏ要求に関係しているデータがマルウェアである場合、アンチウィルスソフトウェアアプリケーション／ドライバは、Ｉ／Ｏ要求が満たされることを阻止するように構成されることができる。逆に、Ｉ／Ｏ要求がマルウェアに関連しない場合、Ｉ／Ｏシステム２００は、Ｉ／Ｏ要求を満たさせる。例えば、Ｉ／Ｏシステム２００は、一部のシステムではハードドライブ、フロッピー（登録商標）ディスク、フラッシュメモリ、テープドライブ、コンパクトディスク（「ＣＤ」）などのローカルのハードウェアデバイスであるＩ／Ｏデバイス２０２にデータを書き込ませることができる。あるいは、Ｉ／Ｏデバイス２０２は、ネットワーク接続を通じてコンピューティングデバイス１００に接続されたリモートのハードウェアデバイスであってもよい。
【００１９】
不都合なことに、図２に示す、Ｉ／Ｏ要求に関係しているデータへのアクセス権をアンチウィルスソフトウェアアプリケーションに与える従来技術の手法には、アンチウィルスソフトウェアのベンダが各自カーネルモードフィルタを開発することが必要となるという不利点がある。図２に示すように、アンチウィルスフィルタ２０６、２０８、２１０は、特定のアンチウィルスソフトウェアアプリケーションとの関連でしか使用されることができない。さらに、各アンチウィルスソフトウェアアプリケーションが、基本的に同じタスクを行うカーネルモードフィルタを維持するので、コンピュータシステムには、重複したコードが同時にメモリにロードされるという動作上の負担がかかる。
【００２０】
不都合なことに、図２に示す、Ｉ／Ｏ要求に関係しているデータへのアクセス権をアンチウィルスソフトウェアアプリケーションに与える従来技術の手法には、コンピューティングデバイスからのマルウェアの除去を妨げる可能性があるという不都合点もある。２つ以上のアンチウィルスソフトウェアアプリケーションが同じコンピューティングデバイスにインストールされると、データのコンフリクトが生じることが分かっている。例えば、２つのアンチウィルスソフトウェアアプリケーションが、コンピューティングデバイスに記憶されたあるファイルがマルウェアに感染していると判断する可能性がある。第１のアンチウィルスソフトウェアアプリケーションは、ファイルデータを削除することにより、ファイルの「感染を駆除」することを試みる可能性がある。しかし、第１のアンチウィルスソフトウェアアプリケーションがファイルデータを削除する試みを行うと、通例は第２のアンチウィルスソフトウェアアプリケーションにそのことが通知される。この場合、第２のアンチウィルスソフトウェアアプリケーションは、感染したファイルへのアクセスを阻止するように構成されている場合がある。また、第１のアンチウィルスソフトウェアアプリケーションは、第２のアンチウィルスソフトウェアアプリケーションなどの他のアプリケーションが、感染したファイルにアクセスすることを阻止するように構成されている場合がある。明らかに、この状況では、マルウェアは、第１のアンチウィルスソフトウェアアプリケーションによっても、第２のアンチウィルスソフトウェアアプリケーションによっても削除されることができない。
【００２１】
図３は、本発明による、Ｉ／Ｏ要求に関係しているデータへのアクセスをアンチウィルスソフトウェアアプリケーションに提供する手法を説明するのに適したブロック図である。以下に、本発明が実施されることが可能な適切なコンピューティングデバイス３００の１つの例示的な概要を提供する。図３に示すコンピューティングデバイス３００は、上記で図２を参照して説明した同じ名前のコンポーネントと同じように動作することが可能ないくつかのコンポーネントを含む。コンピューティングデバイス３００は、Ｉ／Ｏシステム３０２、Ｉ／Ｏデバイス３０４、ユーザアプリケーション３０６、アンチウィルスソフトウェアアプリケーション３０８、３１０、３１２、セキュリティサービスアプリケーション３１４、および、スキャンキャッシュ３１８とデータマッピングモジュール３２０を含む汎用セキュリティフィルタ３１６を含む。本発明によって実施される、ソフトウェアによって実施されるルーチンは、セキュリティサービスアプリケーション３１４と、スキャンキャッシュ３１８およびデータマッピングモジュール３２０を含む汎用セキュリティフィルタ３１６とに含まれる。図３に示すように、セキュリティサービスアプリケーション３１４はユーザモードで実行され、汎用セキュリティフィルタ３１６はカーネルモードで実行される。おおまかに説明すると、本発明によって実施されるルーチンは、アンチウィルスソフトウェアアプリケーション３０８、３１０、３１２などのユーザモードアプリケーションが、Ｉ／Ｏシステム３０２によって満たされることが予定されるＩ／Ｏ要求に関係しているデータにアクセスする方法を提供する。図３に示すように、アンチウィルスソフトウェアアプリケーション３０８、３１０、３１２は、カーネルモードフィルタを使用せずに機能することができる。また、コンピューティングデバイス３００を使用して、複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合して、データをスキャンし、データがマルウェアに感染しているかどうかを判定することができる。図３およびそれに付随するテキストではアンチウィルスソフトウェアアプリケーションを使用して本発明の実施形態を説明するが、本発明のソフトウェアによって実施されるルーチンは、他のタイプのアプリケーションとの関連で使用することができる。同様に、本発明のソフトウェアによって実施されるルーチンは、アプリケーションの代わりに、特定の機能を行うサービスと通信することができる。したがって、図３に示すコンピューティングデバイス３００のコンポーネントは、限定的なものではなく、例示的なものと解釈すべきである。
【００２２】
上述したように、本発明のソフトウェアによって実施されるルーチンの一部は、汎用セキュリティフィルタ３１６に置かれる。本発明の一実施形態についての一般的な説明では、汎用セキュリティフィルタ３１６は、ユーザアプリケーション３０６などのユーザアプリケーションから行われるＩ／Ｏ要求を傍受する。それに応答して、汎用セキュリティフィルタ３１６は、コンピューティングデバイス３００内へのマルウェアの拡散あるいは実行を阻止するルーチンを行う。より具体的には、汎用セキュリティフィルタ３１６は、セキュリティサービスアプリケーション３１４（下記で説明する）と通信して、アンチウィルスソフトウェアアプリケーションに、要求に関係しているファイルを分析させ、そのファイルがマルウェアを含んでいるかどうかを判定させる。マルウェアが検出された場合は、汎用セキュリティフィルタ３１６は、Ｉ／Ｏシステム３０２と通信し、要求が満たされることを阻止するように働く。
【００２３】
図３に示すように、汎用セキュリティフィルタ３１６は、本発明がＩ／Ｏシステム３０２からインターセプトされたＩ／Ｏ要求を分析する速度を向上させるスキャンキャッシュ３１８を含む。例えば、当業者および他の者に知られるように、ユーザアプリケーションは、同じファイルを対象とする連続したＩ／Ｏ要求を頻繁に行う。この場合、本発明は、最初のＩ／Ｏ要求を傍受し、アンチウィルスソフトウェアアプリケーション３０８、３１０、３１２にそのファイルをスキャンさせ、ファイルがマルウェアに感染していないことを確認させる。ファイルが感染していない場合、続くＩ／Ｏ要求は、ファイルのスキャンをトリガしない。代わりに、スキャンキャッシュ３１８が、ファイルがマルウェアに感染しているかどうかに関するファイルのステータス（状態）を追跡して、不必要なスキャンが行われないようにする。ファイルは、（１）マルウェアであることが判明、（２）安全であることが判明、（３）不明、に分類される。ファイルのスキャンは多くのリソース（資源）を使うプロセスなので、不要なスキャンが行われないようにすることによって本発明の速度が向上する。下記でさらに詳しく説明するように、スキャンキャッシュ３１８は、マルウェアの拡散または実行を阻止する目的のシステムに加えて、ファイルの状態を追跡する他のシステムと併せて使用することができる。例えば、ソフトウェアアプリケーションの中には、ユーザがデータを補助ハードウェアデバイスに「バックアップ」あるいは保存できるものがある。その場合、ソフトウェアアプリケーションは、補助ハードウェアデバイスがそのファイルの最新のバージョンを有するかどうかに関して、コンピューティングデバイス上の各ファイルの状態を追跡する。スキャンキャッシュ３１８をそのタイプのシステムと併せて使用して、コンピューティングデバイス上のファイルの状態を追跡することができる。
【００２４】
汎用セキュリティフィルタ３１６は、アンチウィルスソフトウェアアプリケーション３０８、３１０、３１２がファイルをスキャンする確実性と速度を向上させるデータマッピングモジュール３２０を含む。通例、最近のアンチウィルスソフトウェアアプリケーションがファイルを開く動作をインターセプトすると、ファイルデータを読み出すために使用される第２のファイルハンドル（ｆｉｌｅ ｈａｎｄｌｅ）が開かれる。しかし、当業者および他の者に知られるように、ファイルは、複数のアプリケーションが同時にファイルにアクセスできないように「ロック」されている場合がある。その場合、別のアプリケーションがファイルを「ロック」していると、アンチウィルスソフトウェアアプリケーションは、データを読み出すことができない場合がある。さらに、新しいハンドルを開くと、別のアプリケーションがファイルを開けなくなる可能性があり、その結果従来技術ではアプリケーションが失敗していた。しかし、データマッピングモジュール３２０は、第２のファイルハンドルを作成することを必要とせずに、アンチウィルスソフトウェアアプリケーション３０８、３１０、３１２などのアプリケーションに、ファイルデータへのアクセスを与える。データマッピングモジュール３２０は、代わりに、ファイルデータをそこから読み出すことができる低レベルのオブジェクトへのアクセスをアプリケーションに与える。低レベルのオブジェクトへのアクセスは、別のアプリケーションがファイルを「ロック」しているかどうかに関係なく利用することができる。また、第２のファイルハンドルを作成するには、相当の計算リソースが必要となる。そのため、アンチウィルスソフトウェアアプリケーションが低レベルのオブジェクトを使用してファイルデータを読み出せるようにすることにより、アンチウィルスソフトウェアアプリケーションがマルウェアのスキャンを行うことができる速度が上がる。下記でさらに詳しく説明するように、データマッピングモジュール３２０は、ファイルデータを読み出す他のシステムと併せて使用することができる。例えば、一部のソフトウェアアプリケーションは、ファイルがハードウェアデバイスに記憶される前にファイルを暗号化し、ハードウェアデバイスから取出しが行われる時にファイルを復号する。その場合、データマッピングモジュール３２０を使用して、暗号化アプリケーションがファイルのデータにアクセスする効率的な方式を提供することができる。
【００２５】
図３に示すように、コンピューティングデバイス３００は、諸機能の中でも特にコンピューティングデバイス３００にインストールされたアンチウィルスソフトウェアアプリケーションとのインターフェースとして機能するセキュリティサービスアプリケーション３１４を含む。セキュリティサービスアプリケーション３１４は、アンチウィルスソフトウェアアプリケーションが、走査プロファイル（ｓｃａｎｎｉｎｇ ｐｒｏｆｉｌｅ）を登録し、作成することを可能にする。走査プロファイルは、アンチウィルスアプリケーションが「興味深い」と認識するＩ／Ｏ要求を識別する。例えば、走査プロファイルは、Ｉ／Ｏ要求が、マルウェアの感染に関して「不明」の状態を有するファイルを対象とする時に、アンチウィルスソフトウェアアプリケーションがスキャン（走査）を行うことを示すことができる。あるいは、走査プロファイルは、特定タイプのＩ／Ｏ要求が生成された時にアンチウィルスソフトウェアアプリケーションがスキャンを行うように規定されることもできる。いずれにせよ、アンチウィルスソフトウェアアプリケーションは、セキュリティサービスアプリケーション３１４に登録し、スキャンが行われる状況を規定するプロファイルを作成する。セキュリティサービスアプリケーション３１４は、登録された異なるアンチウィルスソフトウェアアプリケーション間のスキャンをスケジュールする役割を担う。
【００２６】
本発明の実施は、図３に示す例示的コンピューティングデバイス３００に限定されない。例えば、図３とそれに伴うテキストは、ユーザモードで実行されるアンチウィルスソフトウェアアプリケーション３０８、３１０、３１２について述べる。しかし、本発明のソフトウェアによって実施されるルーチンは、カーネルモードで実行されるアンチウィルスソフトウェアフィルタと通信するように構成してもよい。また、同図には、コンピューティングデバイス３００は、ユーザアプリケーション３０６からＩ／Ｏ要求を受け取るものとして示している。しかし、当業者および他の者に知られるように、Ｉ／Ｏ要求は、リモートコンピューティングデバイス間の通信に使用されるプロトコルなど他の供給源から受け取られる場合もある。さらに、Ｉ／Ｏデバイス３０４は、同図では、コンピューティングデバイス３００のコンポーネントであるハードウェアデバイスとなっている。しかし、Ｉ／Ｏデバイス３０４は、ネットワーク接続を通じてコンピューティングデバイス３００に接続されたリモートのハードウェアデバイスであってもよい。あるいは、Ｉ／Ｏ要求は、ハードウェアデバイスを対象としない場合もある。代わりに、Ｉ／Ｏ要求は、これらに限らないが、パイプ、通信リソース、ディスクデバイス、コンソール（操作卓）、メールスロット（郵便物投入口）など、ファイル作成コマンドを使用してアクセスされることが可能なオブジェクトを対象とする場合がある。したがって、図３に示すコンピューティングデバイス３００のコンポーネントは、限定的ではなく、例示的なものと解釈されたい。
【００２７】
図４は、複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合するための例示的一メソッド４００の流れ図である。要約すると、メソッド４００は、共通情報モデルを通じてアンチウィルスソフトウェアアプリケーションをＩ／Ｏ要求に接触させる。Ｉ／Ｏ要求が生成されると、メソッド４００は、コンピューティングデバイスにインストールされた１つまたは複数のアンチウィルスソフトウェアアプリケーションによるスキャンが必要であるかどうかを判定する。スキャンが必要である場合、メソッド４００は、生成されたＩ／Ｏ要求のタイプに「関与した」（ｉｎｔｅｒｅｓｔｅｄ）アンチウィルスソフトウェアアプリケーションを識別する。共通情報モデルを通じて、１つまたは複数のアンチウィルスソフトウェアアプリケーションがスキャンを行って、そのＩ／Ｏ要求にマルウェアが関係しているかどうかを判定することができる。引き続き、図１〜図３とそれに伴う説明を参照して、図４に示す複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合する例示的メソッド４００を説明する。
【００２８】
判定ブロック４０２で、メソッド４００は、アイドルの状態を保ち、通例はＩ／Ｏシステム３０２（図３）などのオペレーティングシステムのカーネルモードコンポーネントによって受け取られるＩ／Ｏ要求を待つ。当業者には理解されるように、Ｉ／Ｏ要求は、各種のメカニズムを通じて生成されることができる。例えば、ワードプロセッシングプログラムのユーザが、ドロップダウンメニューまたは他のグラフィック方式の入力システムから「オープンファイル」（ファイルを開く）コマンドを発行させることができる。「オープンファイル」コマンドを満たすために、ワードプロセッシングプログラムは、メモリデバイスからファイルデータを得ることを要求するＡＰＩコール（ＡＰＩ呼び出し）を発行することができる。別の例として、ウェブブラウザプログラムのユーザが、リモートコンピュータからファイルをダウンロードするためのコマンドを発行する場合がある。このコマンドを満たすために、ウェブブラウザプログラムは、Ｉ／Ｏデバイス３０４（図３）などのハードウェアデバイスにデータストリームを記憶するためのＡＰＩコールを発行することができる。Ｉ／Ｏ要求が生成されると、Ｉ／Ｏシステム３０２は、ハードウェアデバイスと対話してその要求を満たす。しかし、メソッド４００は、Ｉ／Ｏシステム３０２によって満たされる前にＩ／Ｏ要求をインターセプト（傍受）して、マルウェアの実行および／または拡散を未然に防ぐ。
【００２９】
判定ブロック４０４で、メソッド４００は、ブロック４０２で受け取られたＩ／Ｏ要求が、新しいファイルを作成させるコマンドであるかどうかを判定する。ブロック４０２でインターセプトされる可能性のあるＩ／Ｏ要求のタイプの１つは、新しいファイルを作成させるものである。このタイプの要求は、コンピューティングデバイスをマルウェアにさらすことはない。下記のブロック４２２で説明するように、新しいファイルを作成させるコマンドは、メソッド４００によって受け取られる他のＩ／Ｏ要求とは異なる形で扱われる。新しいファイルを作成させるコマンドは、最近のオペレーティングシステムで利用することができる多種のコマンドの１つを使用して生成されることができる。例えば、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムの場合には、「ＣｒｅａｔｅＦｉｌｅ」ＡＰＩなど、新しいファイルを作成する専用のＡＰＩを使用して新しいファイルが作成されることができる。あるいは、ある状況では、ｏｐｅｎ、ｏｖｅｒｗｒｉｔｅ、ｓｕｐｅｒｓｅｄｅのＡＰＩなど他のＡＰＩを使用して新しいファイルが作成されることができる。ブロック４０４で受け取られた要求が新しいファイルを作成させるコマンドである場合には、メソッド４００は、下記のブロック４２２に進む。これに対して、要求が新しいファイルを作成させるコマンドでない場合には、メソッド４００はブロック４０６に進む。
【００３０】
判定ブロック４０６で、メソッド４００は、ブロック４０２でインターセプトされたＩ／Ｏ要求が、コンピューティングデバイスをマルウェアにさらす可能性を持つかどうかを判定する。当業者および他の者に知られるように、Ｉ／Ｏ要求の中には、コンピューティングデバイスをマルウェアにさらす可能性がないものがある。例えば、Ｉ／Ｏ要求が「オープンファイル」コマンドであり、指定されたファイルにデータがまったくない場合には、そのコマンドの要求に応じても、コンピューティングデバイスがマルウェアにさらされることはない。同様に、ブロック４０２で受け取られるＩ／Ｏ要求は、ディレクトリを開く、または閉じるコマンドである場合もある。その場合、Ｉ／Ｏ要求は、コンピューティングデバイスをマルウェアにさらすことはない。当業者および他の者には、この他のタイプのＩ／Ｏ要求が、コンピューティングデバイスをマルウェアにさらす可能性を持たないことが理解されよう。したがって、上記の例は、限定的なものでなく、例示的なものと解釈されたい。ブロック４０２で受け取られた要求がコンピューティングデバイスをマルウェアにさらす可能性を持たない場合には、メソッド４００は、下記のブロック４２６に進む。これに対し、ブロック４０２で受け取られた要求がコンピューティングデバイスをマルウェアにさらす可能性を持つ場合には、メソッド４００はブロック４０８に進む。
【００３１】
ブロック４０８で、メソッド４００は、スキャンキャッシュ３１８などのデータベースにクエリーし、ブロック４０２で受け取られたＩ／Ｏ要求の対象となるファイルの状態を識別する。下記でさらに詳しく説明するように、１つまたは複数のアンチウィルスソフトウェアアプリケーションがマルウェアに関してファイルをスキャンする際には、ファイルに変数が関連付けられる。この変数は、（１）マルウェアであることが判明、（２）正常であることが判明、（３）不明、を含む３つの可能な状態の１つを表す。
【００３２】
例示の目的で、単なる例として、例示的スキャンキャッシュ３１８の内容を図５に示す。ここで図示するように、スキャンキャッシュ３１８は、３つの列からなり、各列は、複数の項目を含む。これら列は、ファイルインデックス５０２、第１ビット５０４、および第２ビット５０６として特定される。ファイルインデックス５０２のフィールドは、ファイルを一意に識別するために使用できる値を保持する。当業者および他の者に知られるように、メモリデバイスは、通例、ボリュームと称される論理単位に区分される。各ボリュームは、そのボリューム上のファイルについての情報が記憶される中心の位置を有する。例えば、Ｗｉｎｄｏｗｓ（登録商標）ＮＴファイルシステム（「ＮＴＦＳ」）は、ボリュームにある各ファイルについてのレコードを保持するマスタファイルテーブル（「ＭＦＴ」）を維持する。ファイルが作成されると、そのファイルの新しいレコードがＭＦＴに記憶され、ファイル属性を記憶するために所定量の空間が割り当てられる。例えば、各ファイルには、ＭＦＴにおけるそのファイルの場所を表す一意のファイルインデックスが割り当てられる。下記でさらに詳しく説明するように、本発明により１つまたは複数のアンチウィルスソフトウェアアプリケーションによってファイルがスキャンされる際には、そのファイルに関連付けられたＭＦＴのインデックス値が、スキャンキャッシュ３１８のファイルインデックス５０２フィールドに入力される。第１ビット５０４および第２ビット５０６フィールドは、それぞれ、ファイルの状態を総合的に識別する値を格納する。例えば、第１ビット５０４フィールドと第２ビット５０６フィールドはどちらも、「０」または「１」のいずれかの値を保持する。本発明の一実施形態では、第１ビット５０４フィールドが「１」を含み、第２ビット５０６フィールドが「０」を含む場合、ファイルの状態は「マルウェアであることが判明」になる。あるいは、第１ビット５０４フィールドが「０」を含み、第２ビット５０６フィールドが「１」を含む場合、ファイルの状態は、「正常であることが判明」になる。また、第１ビット５０４フィールドが「０」を含み、第２ビット５０６フィールドが「０」を含む場合は、ファイルの状態は「不明」になる。図５には特定の属性を有するスキャンキャッシュ３１８を示すが、当業者は、スキャンキャッシュ３１８は、ここに挙げられるすべての属性より多い属性でも、少ない属性でも動作することが可能であることを理解されよう。
【００３３】
ファイルの状態を追跡する従来の手法は、スキャンキャッシュ３１８と比べると、エラーが生じやすく、多くのリソースを必要とする。例えば、ファイルがマルウェアに感染したかどうかを追跡する周知の技術の１つは、ハッシュテーブルを用いる。Ｉ／Ｏ要求がインターセプトされると、文字列によるファイル名をハッシュキーとして使用してハッシュテーブルが検索される。しかし、ファイル名は、常にファイルを一意に識別するとは限らない。例えば、ユーザがファイルを参照する「リンク」を作成した場合、そのファイルは、２つ以上のファイル名に関連付けられる場合がある。その場合、ハッシュテーブルは、同じファイルに対して複数のエントリを含む場合がある。その結果、ファイルが２つ以上のファイル名で参照される場合には、アンチウィルスソフトウェアアプリケーションは、不必要なスキャンを行う可能性がある。上記のように、スキャンキャッシュ３１８は、ＭＦＴから得られる一意のファイルインデックスを使用してファイルを識別するため、重複したスキャンが行われない。また、ハッシュキーを計算する、あるいは文字列によるファイル名を検索することは、ビットマップにビットをクエリーすることと比べると、リソースを多く必要とする。例えば、ハッシュテーブルは、通例、メモリを非常に多く消費するので、最終的には新しいファイルを収容するためにハッシュテーブルのエントリが除去される。しかし、スキャンキャッシュ３１８のエントリは、必要とするメモリが少量なので、新しいエントリに対応するためにエントリが除去されることがない。
【００３４】
上記のように、スキャンキャッシュ３１８は、１つまたは複数のファイルの状態を追跡する他のシステムと併せて使用することができる。単なる例として、スキャンキャッシュ３１８は、（１）補助ハードウェアデバイスへの記憶に関してのファイルの状態を追跡する「バックアップ」アプリケーション、（２）ファイルが暗号化されているかどうかを追跡する暗号化／解読アプリケーション、（３）ファイルが不適切な内容を含むかどうかを追跡する内容フィルタリングアプリケーション、と併せて実施することができる。当業者および他の者に知られるように、追加的なデータを記憶するためのビットをスキャンキャッシュ３１８に加えて、そのようなタイプのシステムの要求に対応することができる。
【００３５】
図４に戻り、判定ブロック４１０で、メソッド４００は、ファイルに関連付けられた状態が「正常であることが判明」であるかどうか、すなわちマルウェアへの感染がないかどうかを判定する。本発明の例示的実施形態では、ファイルが「正常であることが判明」であるかどうかに関する判定は、スキャンキャッシュ３１８に保持されるビット情報など、データベースで保持されるデータを分析することによって行われる。データベースにクエリーし、ファイルインデックスに関連付けられた情報を分析することは、当技術分野で一般に知られる技術を使用して行うことができるので、本発明で用いられるその技術の説明は、ここでは提供しない。ファイルが「正常であることが判明」と識別された場合、メソッド４００は、下記のブロック４２６に進む。これに対して、ファイルが「正常であることが判明」以外の状態に関連付けられている場合、メソッド４００は、ブロック４１２に進む。
【００３６】
判定ブロック４１２で、メソッド４００は、ファイルに関連付けられた状態が「マルウェアであることが判明」であるかどうかを判定する。ファイルが「正常であることが判明」と識別される場合と同様に、ファイルが「マルウェアであることが判明」であるかどうかの判定は、スキャンキャッシュ３１８に保持されているビット情報など、データベースに保持されているデータを分析することによって行われる。ファイルの状態が「マルウェアであることが判明」と識別された場合には、メソッド４００は、下記のブロック４２８に進む。これに対して、ファイルが不明の状態に関連付けられている場合には、メソッド４００はブロック４１４に進む。
【００３７】
ブロック４１４で、メソッド４００は、ユーザモードで実行されるアンチウィルスソフトウェアアプリケーションにファイルデータへのアクセス権を与える。ブロック４１４に達した場合、ファイルに関連付けられた状態は「不明」であり、メソッド４００は、１つまたは複数のアンチウィルスソフトウェアアプリケーションに、ブロック４０２でインターセプトされたＩ／Ｏ要求の対象となるファイルをスキャンさせる。本発明は、ファイルデータにアクセスする効率的な方式をアンチウィルスソフトウェアアプリケーションに提供し、そのためマルウェアのスキャンを迅速に行うことができる。以下で、図６を参照して、アンチウィルスソフトウェアアプリケーションにファイルデータへのアクセス権を与える方法の一実施形態を後述する。
【００３８】
ブロック４１６で、メソッド４００は、ブロック４０２で受け取られたＩ／Ｏ要求の対象となるファイルのスキャンを行うアンチウィルスソフトウェアアプリケーションを選択する。先に図３を参照して述べたように、本発明の態様では、アンチウィルスソフトウェアアプリケーションが走査プロファイルを登録し、作成することができる。走査プロファイルは、アンチウィルスソフトウェアアプリケーションにとって「関与している」（ｉｎｔｅｒｅｓｔｉｎｇ）Ｉ／Ｏ要求を規定する（ｄｅｆｉｎｅ）。メソッド４００は、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションの走査プロファイルを調べ、インターセプトされたＩ／Ｏ要求に「関与している」アンチウィルスソフトウェアアプリケーションを順次選択する。
【００３９】
ブロック４１８で、メソッド４００は、選択されたアンチウィルスソフトウェアアプリケーションに、データをスキャンさせ、ブロック４０２で受け取られたＩ／Ｏ要求の対象となるファイルがマルウェアに感染しているかどうかを判定させる。上記のように、アンチウィルスソフトウェアアプリケーションは通例、感染が存在するかどうかを判定する際に、データのパターンをマルウェアの「シグネチャー」と照合する。しかし、次第に、アンチウィルスソフトウェアアプリケーションは、予防型のマルウェア検出手法を用いるようになっている。例えば、一部のアンチウィルスアプリケーションは、仮想動作環境の内側でデータを「実行」させることにより、プログラムの振る舞いをエミュレートする。仮想動作環境のリソースの悪用／濫用が検出された場合、アンチウィルスソフトウェアアプリケーションは、ファイルがマルウェアに感染していると判定する。いずれにせよ、ブロック４１８で、選択されたアンチウィルスソフトウェアアプリケーションは、ファイルデータを得、ファイルデータがマルウェアに感染しているかどうかを判定する動作を行う。下記で図６を参照してさらに詳しく説明するように、ファイルデータは、登録されたアンチウィルスソフトウェアアプリケーションが利用できる共通情報モデルを使用して得ることができる。
【００４０】
マルウェアへの感染が存在するかどうかの判定を行うのに加えて、アンチウィルスソフトウェアアプリケーションは、ブロック４１８で修復措置をとることができる。当業者および他の者に知られるように、最近のアンチウィルスソフトウェアアプリケーションは、マルウェアと識別されたデータを削除するか、マルウェアの感染を他の形で修復することができる場合がある。ブロック４１８でマルウェアが検出された場合、選択されたアンチウィルスソフトウェアアプリケーションは、修復措置をとることを許される。アンチウィルスソフトウェアアプリケーションは一度に１つしか選択されることができないので、ブロック４１８でとられる修復措置は、データコンフリクトの可能性なく行われる。言い方を変えると、メソッド４００は、アンチウィルスソフトウェアアプリケーションによってとられる修復措置が順次行われるようにスケジュールし、これは、データビュー（ｄａｔａ ｖｉｅｗ）が他のアンチウィルスソフトウェアアプリケーションに関して整合のとれたものになることを意味する。
【００４１】
判定ブロック４２０で、メソッド４００は、別のアンチウィルスソフトウェアアプリケーションが選択されるかどうかを判定する。先に述べたように、メソッド４００を使用して複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合して、マルウェアの存在を検出することができる。別のアンチウィルスソフトウェアアプリケーションが選択されない場合、メソッド４００は、下記のブロック４２２に進む。逆に、別のアンチウィルスソフトウェアアプリケーションが選択される場合は、メソッド４００は、ブロック４１６に戻り、ブロック４０２でインターセプトされたＩ／Ｏ要求に「関与した」すべてのアンチウィルスソフトウェアアプリケーションがスキャンを行うことができるまで、ブロック４１６から４２０が繰り返される。
【００４２】
ブロック４２２で、ファイルの状態が、スキャンキャッシュ３１８などのデータベースに記憶される。上記のように、特定の事例では、メソッド４００は、アンチウィルスソフトウェアアプリケーションにファイルデータをスキャンさせ、ファイルがマルウェアに感染しているかどうかの判定を行わせることができる。本発明の一例示的実施形態では、１つまたは複数のアンチウィルスソフトウェアアプリケーションがマルウェアの存在を検出し、感染を修復することができない場合には、ファイルは、スキャンキャッシュ３１８内で「マルウェアであることが判明」とマークされる。この実施形態では、どのアンチウィルスソフトウェアアプリケーションもマルウェアの存在を検出しない場合、ファイルは、スキャンキャッシュ３１８で「正常であることが判明」とマークされる。当業者および他の者には、ファイルがマルウェアに感染したことを判定することが可能な他の実施形態があることが理解されよう。例えば、メソッド４００は、ファイルがスキャンキャッシュ３１８で「マルウェアと判明」と識別されるには、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションの大多数がマルウェアを検出することを必要とすることができる。より一般的には、メソッド４００は、アンチウィルスソフトウェアアプリケーションによって生成される結果セットの加重値を計算するシステムとともに実施することができる。その場合には、加重値が閾値量を超えると、ファイルがスキャンキャッシュ３１８で「マルウェアであることが判明」とマークされる。アプリケーションから受け取られる入力に基づいて加重値を計算するシステムは当技術分野で一般に知られるので、そうしたシステムについてのさらなる説明は、ここでは提供しない。
【００４３】
上記でブロック４０４で説明したように、ブロック４０２でインターセプトされるＩ／Ｏ要求は、新しいファイルを作成させるコマンドである場合がある。その場合は、コンピューティングデバイスをマルウェアにさらすことなく、コマンドを満たすことができる。ブロック４２２で、コマンドの対象であるファイルの状態がスキャンキャッシュ３１８で「正常であることが判明」と識別される。上記ブロック４０８で述べたように、本発明の一実施形態では、ＭＦＴから一意のファイルインデックス値が取得され、その値を使用してスキャンキャッシュ３１８のファイルを識別する。ただし、コンピューティングデバイスからファイルが削除されると、ＭＦＴは、削除されるファイルに関連付けられたファイルインデックス値を新しいファイルに再割り当てすることができる。本発明は、ファイルが削除される時にスキャンキャッシュ３１８に記録されたファイルの状態を変更しない。その代わりに、新しいファイルを作成させるコマンドが受け取られると、本メソッドは、削除されるファイルの状態を、コマンドの対象となるファイルの状態に、単に上書きする。
【００４４】
上記のように、メソッド４００は、ファイルの状態をスキャンキャッシュ３１８などのデータベースに記憶させる。事例によっては、スキャンキャッシュ３１８がファイルシステムの増大に対応できるように、ブロック４２２で追加的な管理手順を行うことができる。例えば、本発明の一実施形態では、Ｉ／Ｏ要求が、スキャンキャッシュ３１８にエントリを維持していない、以前に識別されなかったファイルを対象とする場合には、より大きなスキャンキャッシュが作成される。小さなスキャンキャッシュ３１８のコンテンツ（内容）が、以前に識別されなかったファイルの状態と併せて、大きなスキャンキャッシュにコピーされる。この実施形態の最適化は、スキャンキャッシュ３１８に割り当てられたメモリを、まだＩ／Ｏ要求の対象となっていない追加的なファイルについて、以前に識別されなかったファイルを収容するために必要な最小の割合を超える所定の割合だけ増大させる。
【００４５】
判定ブロック４２４で、メソッド４００は、ファイルに関連付けられた状態が「マルウェアであることが判明」であるかどうかを判定する。新しいファイルを作成させるコマンドがインターセプトされた場合、または、状態が「不明」のファイルが１つまたは複数のアンチウィルスソフトウェアアプリケーションによってスキャンされる場合に、メソッド４００は、ブロック４２４に達する。いずれの場合も、ファイルに関連付けられた状態がスキャンキャッシュ３１８などのデータベースに記憶される。したがって、ブロック４２４のファイルがマルウェアに感染しているかどうかの判定は、以前に記憶されたデータを再呼び出しすることによって行われる。ファイルの状態がマルウェアと識別された場合、メソッド４００は、下記のブロック４２８に進む。それに対して、ファイルがマルウェアと識別されない場合、メソッド４００はブロック４２６に進む。
【００４６】
ブロック４２６で、メソッド４００は、プログラムの実行を、Ｉ／Ｏシステム３０２（図３）などのオペレーティングシステムのコンポーネントに戻す。先に述べたように、メソッド４００は、Ｉ／Ｏ要求が満たされる前にＩ／Ｏ要求をインターセプトして、マルウェアの実行および／または拡散を防ぐ。ブロック４２６に達した場合、ブロック４０２でインターセプトされたＩ／Ｏ要求は、コンピューティングデバイスをマルウェアに感染させることがないか、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションによってスキャンされ、マルウェアではないと識別されたデータに関連するか、のいずれかである。いずれの場合も、Ｉ／Ｏ要求を満たしてもマルウェアが実行および／または拡散することはない。したがって、プログラムの実行がＩ／Ｏシステム３０２に返された後で、Ｉ／Ｏ要求は従来技術に従って満たされる。そして、メソッド４００はブロック４３０に進み、終了する。
【００４７】
ブロック４２８で、メソッド４００は、プログラムの実行をＩ／Ｏシステム３０２などのオペレーティングシステムのコンポーネントに戻す。しかし、ブロック４２８に達した場合、ブロック４０２でインターセプトされたＩ／Ｏ要求は、マルウェアの実行および／または拡散につながる可能性がある。そのため、プログラムの実行がＩ／Ｏシステム３０２に返された後で、Ｉ／Ｏ要求は失敗し、コンピュータユーザにマルウェアの感染が通知される。メソッド４００は次いでブロック４３０に進み、終了する。
【００４８】
本発明の実施は、図４に示す例示的メソッド４００に限定されない。例えば、メソッド４００は、別個の開始と終了を有するものと図示している。しかし、本発明の実際の実施形態では、Ｉ／Ｏ要求は、連続したプロセスでインターセプトされる。あるＩ／Ｏ要求を満たす結果、マルウェアが実行しおよび／または拡散すると、確信するのに足る情報が存在する場合には、メソッド４００は、そのＩ／Ｏ要求を失敗させる。また、本発明は、上記の例に限定されない。例えば、メソッド４００は、主としてファイルデータをスキャンするコンテクストで説明した。しかし、当業者は、本発明の範囲から逸脱せずに、メソッド４００を使用して他のデータの単位をスキャンしてよいことを理解されよう。
【００４９】
図６は、高度に最適化された方式でアンチウィルスソフトウェアアプリケーションにファイルデータへのアクセスを与えるために、図４を参照して上述したメソッド４００と併せて使用することが可能な、例示的な一アクセスメソッド６００の流れ図である。要約すると、メソッド６００は、スキャンを行うために１つまたは複数のアンチウィルスソフトウェアアプリケーションによって使用されるセクションオブジェクトを作成することを含む。そして、アンチウィルスソフトウェアアプリケーションとのインターフェースをとるユーザモードアプリケーションに、セクションオブジェクトにアクセスするのに必要な情報が与えられる。最後に、１つまたは複数のアンチウィルスソフトウェアが基本的なファイルシステム操作を行うことを可能にするセクションオブジェクトのビュー（一覧表）が作成される。引き続き図１〜５とそれに伴う説明を参照して、図６に示す例示的なアクセスメソッド６００を説明する。
【００５０】
判定ブロック６０２で、アクセスメソッド６００は、スキャン要求が受け取られるまでアイドル状態となる。先に述べたように、セキュリティサービスアプリケーション３１４（図３）が、コンピューティングデバイス３００にインストールされたアンチウィルスソフトウェアアプリケーションとのインターフェースとして機能する。アンチウィルスソフトウェアアプリケーションは、そのアンチウィルスソフトウェアアプリケーションがスキャンを行う状況を規定する走査プロファイルを作成することができる。ブロック６０２で、セキュリティサービスアプリケーション３１４（図３）が、アンチウィルスソフトウェアアプリケーションからスキャン要求を受け取る。２つのユーザモードアプリケーション間での要求の通信は、当技術分野で一般に知られる技術を使用して実施することができるので、このような技術についてのさらなる説明はここでは提供しない。
【００５１】
ブロック６０４で、１つまたは複数のアンチウィルスソフトウェアアプリケーションによってスキャンされるファイルのセクションオブジェクトが作成される。当業者および他の者に知られるように、セクションオブジェクトは、カーネルモードアプリケーションとユーザモードアプリケーションがデータを共有することを可能にする。本発明の一例示的実施形態では、セキュリティサービスアプリケーション３１４が汎用セキュリティフィルタ３１６に要求を行って、スキャンされるファイルのセクションオブジェクトを作成させる。図２に示すように、ファイルマッピングセクションオブジェクトが作成される前に、オペレーティングシステム１０４は、ユーザモードからカーネルモードに切り替わる。より具体的には、オペレーティングシステム１０４は、ユーザモードで実行されるセキュリティサービスアプリケーション３１４が、カーネルモードで実行される汎用セキュリティフィルタ３１６に要求を行った後にユーザモードからカーネルモードに切り替わる。カーネルモードへの切り替えが完了すると、汎用セキュリティフィルタ３１６は、スキャン対象のファイルを識別し、ファイルマッピングセクションオブジェクトを作成させる関数を呼び出すことによって要求に応答する。
【００５２】
ブロック６０６で、スキャンされるファイルにアクセスするのに必要な情報が、ユーザモードアプリケーションに入手できるようにされる。より具体的には、ブロック６０４で作成されたファイルマッピングセクションオブジェクトが、汎用セキュリティフィルタ３１６により、セキュリティサービスアプリケーション３１４のオブジェクトテーブルに挿入される。当業者および他の者に知られるように、最近のオペレーティングシステムは通例、所定のドメインの内側でプログラムを実行する。例えば、一部のオペレーティングシステムでは、プログラムは、オブジェクトテーブルと称されるそのプログラムに独自のデータ構造で参照されるオブジェクトにのみアクセスすることができる。ブロック６０４で作成されたセクションオブジェクトをセキュリティサービスアプリケーション３１４に関連付けられたオブジェクトテーブルに挿入することにより、ブロック６０４で作成されたセクションオブジェクトが、セキュリティサービスアプリケーション３１４から利用できるようになる。図２に示すように、ファイルマッピングセクションオブジェクトがセキュリティサービスアプリケーション３１４のオブジェクトテーブルに挿入されると、オペレーティングシステム１０４は、カーネルモードからユーザモードに切り替わる。
【００５３】
判定ブロック６０８で、アクセスメソッド６００は、アイドルのままとなり、アンチウィルスソフトウェアアプリケーションがファイルデータを要求するのを待つ。先に述べたように、Ｉ／Ｏ動作がインターセプトされると、１つまたは複数のアンチウィルスソフトウェアアプリケーションは、共通情報モデルと対話してスキャンをスケジュールすることができる。スキャンを完了するために、アンチウィルスソフトウェアアプリケーションは、基本的なファイルシステム操作を行う必要がある場合がある。例えば、通例、アンチウィルスソフトウェアアプリケーションは、ファイルデータを「読み出し」、そのデータを既知のマルウェアのシグネチャーと比較する。本発明によれば、アンチウィルスソフトウェアアプリケーションは、セキュリティサービスアプリケーション３１４に登録されたアプリケーションが利用することのできる共通情報モデルを使用して基本的なファイルシステム操作を行うことができる。本発明の一実施形態では、共通情報モデルは、ＡＰＩのセットの形態で、登録されたアプリケーションが利用することができる。いずれの場合も、判定ブロック６０８で、アクセスメソッド６００は、アイドルの状態になり、アンチウィルスソフトウェアがファイルデータを要求するのを待つ。
【００５４】
判定ブロック６１０で、アクセスメソッド６００は、スキャンされるファイルのビューをセキュリティサービスアプリケーション３１４のメモリ空間にマッピングする必要があるかどうかを判定する。特に一意のファイルの複数のスキャンが同時に行われる可能性があるので、セキュリティサービスアプリケーション３１４の仮想アドレス空間の効率的な使用を実現するために、ファイルの「ビュー」をアプリケーションのメモリ空間にマッピングして、アプリケーションがファイルデータの一部にアクセスできるようにすることができる。すべてのファイルデータが一度にアプリケーションのメモリ空間にロードされない場合もあるので、現在のビューから得られないデータが要求されると、新しいビューがマッピングされる。ブロック６０８で要求されるデータが、セキュリティサービスアプリケーション３１４のメモリ空間にマッピングされたビューから入手できない場合、アクセスメソッド６００は、新しいビューをマッピングする必要があると判断し、ブロック６１２に進む。対して、ブロック６０８で要求されるデータが、セキュリティサービスアプリケーション３１４のメモリ空間にマッピングされたビューから入手できる場合は、アクセスメソッド６００は、下記のブロック６１４に進む。
【００５５】
ブロック６１２で、ブロック６０４で作成されたセクションオブジェクトのビューがマッピングされて、セキュリティサービスアプリケーション３１４などのユーザモードアプリケーションが、ファイルデータの要求を満たすことができるようになる。セキュリティサービスアプリケーション３１４は、スキャンされるファイルを識別する、汎用セキュリティフィルタ３１６から提供されるデータを得る。セキュリティサービスアプリケーション３１４のメモリ空間にすでにビューがマッピングされている場合、アクセスメソッド６００は、オペレーティングシステム１０４に、その現在のビューを除去させるＡＰＩ呼び出しを行う。次いで、セキュリティサービスアプリケーション３１４は、オペレーティングシステム１０４に、新しいビューをマッピングさせる別のＡＰＩ呼び出しを行う。それに応答して、オペレーティングシステム１０４は、要求されるデータを得ることができるファイルのビューをマッピングする。Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムのコンテクストでは、「ＭａｐＶｉｅｗＯｆＦｉｌｅ（）」および「ＵｎＭａｐＶｉｅｗＯｆＦｉｌｅ（）」のＡＰＩを使用して、アプリケーションのメモリ空間にファイルをマッピングし、メモリ空間から除去することができる。ただし、ここに提供される例は、限定的ではなく例示的なものと解釈されたい。
【００５６】
ブロック６１４で、ブロック６０８で要求されたデータが、要求の生成元であるアンチウィルスソフトウェアアプリケーションに通信される。必要なビューが（ブロック６１２で）セキュリティサービスアプリケーション３１４のメモリ空間に作成されると、システムは、当技術分野で一般に知られる方法を使用してそのデータを要求元のアンチウィルスソフトウェアアプリケーションに送信することができる。
【００５７】
判定ブロック６１６で、アクセスメソッド６００は、ブロック６０２で受け取られたスキャン要求を生成したアンチウィルスソフトウェアアプリケーションが、ファイルデータへのアクセスを完了したかどうかを判定する。先に述べたように、セキュリティサービスアプリケーション３１４は、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションに基本的なファイルシステム操作のセットを提供することにより、インターフェースの役割を果たす。アンチウィルスソフトウェアアプリケーションがファイルのスキャンを終了すると、そのアプリケーションは、スキャンが完了したことをセキュリティサービスアプリケーション３１４に伝え、アクセスメソッド６００はブロック６１８に進み、終了する。これに対して、アンチウィルスソフトウェアアプリケーションがファイルのスキャンをまだ終了しておらず、ファイルデータへのアクセスを継続している場合、アクセスメソッド６００は、アンチウィルスソフトウェアアプリケーションがファイルのスキャンを終えるまで、ブロック６０８から６１６に戻る。
【００５８】
アクセスメソッド６００は、他のシステムと併せて使用して、基本的なファイルシステム操作を行う非常に高速な方式（ｗａｙ）を提供することができる。単なる例として、アクセスメソッド６００は、（１）ファイルにデータを読み書きする暗号化／解読アプリケーション、および（２）ファイルデータを読み出し、そのファイルデータが不適切な内容を含むかどうかを判定する内容フィルタリングアプリケーション、と併せて実施することができる。しかし、アクセスメソッド６００は、基本的なファイルシステム操作を行うためにどのようなアプリケーションによっても使用されることができるので、ここに提供される例は、限定的ではなく例示的なものと解釈されたい。
【００５９】
本発明の好ましい実施形態を図示し、説明したが、本発明の主旨および範囲から逸脱せずに各種の変更をそれら実施形態に加えることが可能であることは理解されよう。
【図面の簡単な説明】
【００６０】
【図１】従来技術によるコンピューティングデバイスの階層構造を示すブロック図である。
【図２】従来技術によるマルウェアのスキャンを行うのに適したアンチウィルスソフトウェアアプリケーションを含むコンピューティングデバイスの構成要素のブロック図である。
【図３】本発明によるマルウェアを識別するのに適したアンチウィルスソフトウェアアプリケーションを含むコンピューティングデバイスの構成要素のブロック図である。
【図４】本発明による複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合する方法の一例示的実施形態を説明する流れ図である。
【図５】図４に示す方法と併せてデータを記憶し、再呼び出しするのに適したスキャンキャッシュの図である。
【図６】本発明による、図４に示す方法と併せて使用して、ファイルデータへのアクセスをアンチウィルスソフトウェアアプリケーションに与えることができるアクセスメソッドの一例示的実施形態を説明する流れ図である。
【符号の説明】
【００６１】
１００  コンピューティングデバイス
１０２  ハードウェアプラットフォーム
１０４  オペレーティングシステム
１０６  アプリケーションプラットフォーム
２００  Ｉ／Ｏシステム
２０２  ローカルまたはリモートのＩ／Ｏデバイス
２０４  ユーザアプリケーション
２０６  アンチウィルスフィルタ
２０８  アンチウィルスフィルタ
２１０  アンチウィルスフィルタ
２１２  アンチウィルスソフトウェアアプリケーション
２１４  アンチウィルスソフトウェアアプリケーション
２１６  アンチウィルスソフトウェアドライバ
３００  コンピューティングデバイス
３０２  Ｉ／Ｏシステム
３０４  ローカルまたはリモートのＩ／Ｏデバイス
３０６  ユーザアプリケーション
３０８  アンチウィルスソフトウェアアプリケーション
３１０  アンチウィルスソフトウェアアプリケーション
３１２  アンチウィルスソフトウェアアプリケーション
３１４  セキュリティサービスアプリケーション
３１６  汎用セキュリティフィルタ
３１８  スキャンキャッシュ
３２０  データマッピングモジュール
５０２  ファイルインデックス
５０４  第１ビット
５０６  第２ビット
【図１】
2006134307.tif 000003
【図２】
2006134307.tif 000004
【図３】
2006134307.tif 000005
【図４】
2006134307.tif 000006
【図５】
2006134307.tif 000007
【図６】
2006134307.tif 000008