(57)【要約】【課題】  アイテムストアの一部として（１つまたは複数の）アンチウイルスＡＶプラグインを統合するためのシステムおよび方法を提供すること。【解決手段】  （１つまたは複数の）ＡＶプラグインの操作用のセマンティクスが、リレーショナルアイテムストアによって、アイテムストアに関連付けられたメタデータコンポーネントおよびスキャンコンポーネントを採用することを通じて提供される。メタデータコンポーネントは、データのスキャンの時間およびスキャンされた各アイテム用の結果を表すことができる、アイテムストアに関連付けられている署名値を提供することができる。スキャンコンポーネントは、ベンダによって提供されるＡＶプラグインによるウイルススキャンおよび除去の双方用に同期および／または非同期モードでデータストア内のアイテムをキューに入れることを提供することができる。【選択図】  図１
2006012164.tif 000002
【特許請求の範囲】
【請求項１】
アイテムストアと対話する１つまたは複数のアンチウイルスプラグインの操作用のセマンティクスを提供するメタデータコンポーネントと、
アイテムストアのコンテンツをそのウイルススキャン用に前記アンチウイルスプラグインへのキューに入れるスキャンコンポーネントと
を含むことを特徴とするアイテムストア。
【請求項２】
前記メタデータコンポーネントは、前記コンテンツのスキャンの時間を表す署名値を提供することを特徴とする請求項１に記載のアイテムストア。
【請求項３】
前記メタデータコンポーネントは、前記コンテンツ用のスキャン状態を提供することを特徴とする請求項１に記載のアイテムストア。
【請求項４】
前記スキャン状態は、感染の疑いあり、感染なし、および感染の少なくとも１つに設定されることを特徴とする請求項３に記載のアイテムストア。
【請求項５】
前記スキャン状態は、スキャン不要に設定されることを特徴とする請求項３に記載のアイテムストア。
【請求項６】
前記スキャンコンポーネントは、同期的な方法および非同期的な方法の少なくとも１つで前記コンテンツをキューに入れることを特徴とする請求項１に記載のアイテムストア。
【請求項７】
前記アイテムストアのデータ構造を解析して、テキストから要素へのリンクを決定するためのパーサをさらに含むことを特徴とする請求項１に記載のアイテムストア。
【請求項８】
前記メタデータコンポーネントは、前記アイテムストアに署名値を提供することを特徴とする請求項１に記載のアイテムストア。
【請求項９】
前記署名値は、前記アイテムストアのコンテンツのスキャンの時間を表すことを特徴とする請求項８に記載のアイテムストア。
【請求項１０】
前記スキャンコンポーネントは、非同期キューイングコンポーネントおよび同期キューイングコンポーネントの少なくとも１つを含むことを特徴とする請求項１に記載のアイテムストア。
【請求項１１】
前記プラグイン用のスキャンプロセスをスケジュールに入れるスケジューリングコンポーネントをさらに含むことを特徴とする請求項１に記載のアイテムストア。
【請求項１２】
アイテムストアと対話する１つまたは複数のアンチウイルスプラグインの操作用のセマンティクスを提供するコンピュータ実行可能コンポーネントと、
前記アイテムストアのコンテンツをそのウイルススキャン用に前記アンチウイルスプラグインへのキューに入れるさらなるコンピュータ実行可能コンポーネントと
を含むデータ構造をその上に格納していることを特徴とするコンピュータ可読メディア。
【請求項１３】
アイテムストアをスキャンするための方法であって、
アイテムストア内の複数のアイテム間のリレーショナルスキームを定義するステップと、
前記アイテムストアを介してアンチウイルスプラグインの操作用のセマンティクスを提供するステップと、
前記アイテムストアのコンテンツをスキャンするステップと
を含むことを特徴とする方法。
【請求項１４】
前記アイテムストアに署名値を提供するステップをさらに含み、前記署名値はスキャンの時間を指定することを特徴とする請求項１３に記載の方法。
【請求項１５】
スキャンされるコンテンツにスキャン状態ステータスを提供するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１６】
スキャン用にコンテンツをキューに入れるステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１７】
前記スキャンからのコンテンツをキューから外すステップをさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記スキャンするステップは、同期的な方法によるスキャンを含むことを特徴とする請求項１３に記載の方法。
【請求項１９】
前記スキャンするステップは、非同期的な方法によるスキャンを含むことを特徴とする請求項１３に記載の方法。
【請求項２０】
前記アイテムストアの修正されたコンテンツをスキャン用に自動的にキューに入れるステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２１】
前記アイテムストアの新たなコンテンツをスキャン用に自動的にキューに入れるステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２２】
強制的なスキャンを実行するステップをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２３】
前記アイテムストアに向けられたクエリに応答してコンテンツのスキャンに脇から影響を与えるステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２４】
感染しているコンテンツのウイルスを除去するステップをさらに含むことを特徴とする請求項２３に記載の方法。
【請求項２５】
請求項１３に記載の方法を実行するためのコンピュータ実行可能命令をその上に格納していることを特徴とするコンピュータ可読メディア。
【請求項２６】
アイテムストアと対話する１つまたは複数のアンチウイルスプラグインの操作用のセマンティクスを提供するメタデータコンポーネントと、
アイテムストアのコンテンツをそのウイルススキャン用に前記アンチウイルスプラグインへのキューに入れるスキャンコンポーネントと、
前記アンチウイルスプラグインとアイテムストアとの対話を容易にするスタブのセットと
を含むことを特徴とするアイテムストア。
【請求項２７】
入出力要求およびＵＮＣネームにサービスを提供するファイルシステムへのリモートアクセスとして機能する多重ＵＮＣプロバイダと、
前記ファイルシステムを提供するために前記多重ＵＮＣプロバイダ上に配置された複数のフィルタと、
前記ファイルシステムをスキャンする１つまたは複数のアンチウイルスプラグインであって、前記ファイルシステムから見ることができる同じディレクトリおよびファイル名のネームスペースが、前記１つまたは複数のアンチウイルスプラグインから見ることもできる１つまたは複数のアンチウイルスプラグインと
を含むことを特徴とするアイテムストア。
【請求項２８】
前記フィルタはカーネルモードフィルタであることを特徴とする請求項２７に記載のアイテムストア。
【請求項２９】
アイテムストアと対話する１つまたは複数のアンチウイルスプラグインを操作するためのセマンティクスを提供するための手段と、
アイテムストアのコンテンツをそのウイルススキャン用に前記アンチウイルスプラグインへのキューに入れるための手段と
を含むことを特徴とするアイテムストア。
【請求項３０】
感染しているアイテムを除去するための手段をさらに含むことを特徴とする請求項２９に記載のアイテムストア。
【請求項３１】
前記アイテムストアのファイルシステムと同じコンテンツに対する視認性を前記アンチウイルスプラグインに提供するための手段をさらに含むことを特徴とする請求項２９に記載のアイテムストア。
【請求項３２】
複数のストアの一部としてアンチウイルスプラグインを組み込むための方法であって、
起点となるストアのアンチウイルス特性を、クライアントのアプリケーションによって使用されている連続した形態のアイテム内に含めるステップと、
前記クライアントのストアによってシェアから読み取られる前記起点となるストアのコンテンツを、前記クライアントにとって利用可能なアンチウイルスプラグインを介してスキャンするステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にアンチウイルス防御に関し、より詳細には、リンクおよび属性の観点からアイテムについて記述できる、アイテムストア環境内での（１つまたは複数の）アンチウイルスプラグインの統合を容易にするシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ技術（たとえばマイクロプロセッサの速度、メモリ容量、データ転送帯域幅、ソフトウェアの機能性など）におけるますますの進歩は、一般にさまざまな産業においてコンピュータの活用が増加する要因となっている。しばしばサーバのアレイとして構成される、これまでにないようなより強力なサーバシステムが、たとえばワールドワイドウェブなどの外部ソースから発生する要求にサービスを供与するためにしばしば提供される。ローカルなイントラネットシステムがより高機能になり、それによってより大きなネットワーク負荷のサービスおよび関連するアプリケーションを要求するようになるにつれて、内部のシステムの要求もそれに応じて増大している。そういうものとして、多くのビジネスデータが管理システムの下でデータストアに保存されている。
【０００３】
さらに、利用可能な電子データの量は絶え間なく増大しており、ユーザフレンドリーで迅速なデータ検索および取出しを容易にする管理しやすい方法で、そうしたデータをデータストアに保存することが、これまでにないほどますます重要になっている。一般に、典型的なデータストアは、たとえばコンピュータプログラムがデータの希望の部分を迅速に検索および選択できるような構造のデータを有する情報の体系化された集合体と言うことができる。
【０００４】
データストア内のデータは１つまたは複数のテーブルを介して体系化することができ、それぞれのテーブルはレコードのセットを含み、１つのレコードはフィールドのセットを含むことができる。レコードは一般にテーブル内の行としてインデックスを付けられ、レコードのフィールドは一般に列としてインデックスを付けられ、これによってインデックスの行／列のペアがテーブル内の特定のデータを参照することができる。通常、そうしたデータストアは、内部に情報の「フィールド」を有する「レコード」として保存された関連する情報の体系化された集合体とみなすことができる。たとえば財務のデータストアは、売掛金、未払金、顧客情報などの財務取引用のレコードを有することができる。管理またはオペレーティングシステムは通常、実際の物理的なデータストア自体（すなわちストレージデバイス上に実際に保存されているデータ）とシステムのユーザとの間にソフトウェアクッションまたはレイヤを提供することができる。そういうものとして、データストアは、基礎をなすハードウェアレベルの詳細に関する心配事からユーザを保護することができる。一般に、データにアクセスするためのユーザからの要求は、すべてシステムマネージャによって処理される。たとえば、情報をデータファイルに追加すること、情報をデータファイルから削除すること、情報をそうしたファイルから取り出すこと、情報をそうしたファイル内で更新することなどをすべて、基礎をなすシステムの実装に関する知識をユーザが持ち合わせていなくても行うことができる。
【０００５】
同時に、従来のデータストアおよびオペレーティングシステムは通常、レジストリ、イベントログメッセージ、連絡先情報、および電子メールを含むデータ用の複数の互換性のないストレージに依存するか、または単にイメージおよびオーディオなどのデータ用の複数のフラットファイルを使用している。たとえば従来のデータストアでは、保存されているコンテンツは、たとえ何らかのレベルで相互に関連していても、一般に別々のエンティティとして扱われる。したがって多数のアイテムが存在する場合、プロパティおよびコンテンツに基づいて特定のアイテムを検索するための柔軟で効率的なメカニズムを有することが重要となることがある。たとえば知識労働者にとって、フォーマットとは無関係に、すなわち特定のコンテンツがどのタイプのファイルか、それを作成したのはどのアプリケーションかにかかわらずにコンテンツを検索できることが望ましい場合がある。
【０００６】
リレーショナルオブジェクトに基づいて動作する新たなファイルシステムを前提とした新たな問題が発生する可能性がある。たとえば、ウイルスがそうしたファイルシステム内に自分自身を格納できる新たな方法が存在する可能性がある。通常、従来のウイルスチェックは、一般にアンチウイルスプログラムが実行されているのと同じコンピュータ内に保管されているファイル用にウイルスチェックを実行することに限定される。したがってエンドユーザおよびＷｅｂサイトを含む特定のエンティティは、自分のコンピュータ上にローカルに保管されているファイルには、ある程度ウイルスチェックを実行できる場合があるが、他のエンティティの制御下にあるファイルに関連するウイルスのリスクについては測定できない場合が多く、そうしたファイルでは、悪質なコードが、暗号化された文字列を使用してストア内に侵入することができ、こうした文字列はクライアントスペース内で復号され、電子メールを介して増殖することになる。したがって従来のファイルシステムにとって、ウイルスはファイルの１つまたは複数のストリーム内に住みつくことができ、それにもかかわらず、こうしたものは単に１つのファイルにすぎないのである。
【０００７】
一方、リレーショナルアイテムストアでは、コンテンツは１つのアイテム内で存続することができ、１つのアイテムは複数のプロパティを含むことができ、各プロパティはさまざまな他のアイテムと関連付けられている。したがってアイテムストアに保存してストアから読み出すことは、多くのアイテムの多くのプロパティにわたって集約できる結果を含むことができる。これは、多くのプロパティを有する更新パスまたは読み取りパスを作成することなど、異なるパラダイムを作成することができる。ウイルスは、「断片」内に自分自身を隠すためのそうした構成を採用することができ、たとえばウイルスは、暗号化された本体「Ｘ」をオブジェクトのプロパティ内に格納することができ、ストアにクエリを行い、アンチウイルスプログラムに対して無害に見せることのできるイメージ用のメタデータなどの暗号化されたプロパティをクライアント上で復号することによって増殖することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ウイルスの本体を複数のプロパティおよび複数のアイテムにわたって分散することによって、アイテムストアはウイルスストアとなるおそれがある。ウイルスは、別々に配置することによって細かい断片に分割して格納することができ、自分自身を複数のアイテムのプロパティに書き込むことができ、うっかりそうした断片を集約するクエリを行うと、ウイルスを実行することにつながる。したがって更新または読み取りパス内に介入する従来のフィルタモデルは、もはや一般にそうしたリレーショナルアイテムストアの構成には適していない。
【０００９】
したがって、アイテムストアの運用に関連する従来のシステムおよび方法に関する前述の欠点を克服する必要がある。
【課題を解決するための手段】
【００１０】
以降では、本発明の１つまたは複数の態様について基本的な理解を提供するために本発明の簡略化した概要を提示する。この概要は、本発明を網羅的に概観したものではない。また本発明の鍵となる要素や重要な要素を明らかにすることや、本発明の範囲を画定することを意図するものではない。むしろこの概要の唯一の目的は、後述するさらに詳細な説明への前置きとして本発明のいくつかの発想を簡略化した形態で提示することである。
【００１１】
本発明は、リレーショナルアイテムストアに関連付けられたメタデータコンポーネントおよびスキャンコンポーネントを採用することによって、（１つまたは複数の）アンチウイルス（ＡＶ）プラグインの予想およびセマンティクスをアイテムストアに組み込むシステムおよび方法を提供する。こうしたメタデータコンポーネントは、いつコンテンツをスキャンするか、どのようにスキャンするか、いつ無効にするかなどに関してアンチウイルスプラグインに指示するためのアイテムストア内のルールセットおよび／または論理を規定することができる。またメタデータコンポーネントは、アイテムストアに割り当てられた署名値を提供することもでき、この署名値は、データのスキャンの時間と、そうしたスキャンの結果（たとえば、感染なし、感染の疑いあり、感染、スキャン不要など）を識別するためにリレーショナルアイテムストア内で指定されたスペース（たとえば、指定された列）とを表すことができる。アプリケーションプログラムインターフェース（ＡＰＩ）は、必要に応じてプラグインを呼び出し、署名を更新し、新たな署名値を設定するために提供することができる。その上、速度と正確さのバランスをとるために、さまざまなスキャン動作を導入することができ、そこではアイテムは、クエリの結果と、完全にはスキャンされていない結果のリスクとの対比としてユーザに提供することができる。たとえばユーザは、完全にスキャンされた結果に結び付くすべてのコンテンツを有するという利点を得るために、進んで正確さを犠牲にする（たとえば、クエリに応答して不完全な結果を受け入れる）場合がある。
【００１２】
その上、アイテムストア内のさらなるルールセットはアイテム間のリンクを確立することができ、このルールセットによって、さらにリンクの定義を可能にすることができ、データ構造を解析してテキストから要素へのリンクを決定するのに必要な情報を提供することができる。スキーマを採用して、必要なルールセットを提供し、必要な情報を供与することができる。たとえばドキュメントオブジェクトモデルを提供して、インメモリ表現用に関連するエンティティのコンポーネントを表すことができる。その上、スキャンコンポーネントは、ＡＶプラグインによるスキャンおよび除去の双方用の同期および／または非同期モードでのデータストア内のアイテムのキューイングを提供することができる。
【００１３】
本発明の一態様によれば、アイテムストア（およびそのＡＶプラグイン）と従来型のファイル（たとえば、データストリームファイルおよびアプリケーション）との下位互換性を提供するために、多重ＵＮＣプロバイダ（ＭＵＰ）上に積み重なったフィルタドライバの構成を提供することができる（汎用命名規則（ＵＮＣ）は、ファイルを特定するマシンに依存しない手段を提供するファイル用の命名規則を提供することができる）。このように直接フィルタコンポーネントをＭＵＰ上に階層化することによって、ＵＮＣのネームスペース用の入出力要求に対してサービスを提供するファイルシステムコンポーネントが提供される。したがって、アイテムストアにとって利用可能なコンテンツ用と同じ視認性をＡＶプラグイン用に提供することができる。
【００１４】
本発明の関連する態様では、ＡＶプラグインとリレーショナルアイテムストアエンジンとの対話の一部として、インターフェースのセットを提供することができる。こうしたインターフェースは、たとえば提供されたＡＶプラグインとリレーショナルアイテムストアをリンクするためにベンダによって作成できるルーチン用の一連のスタブおよび／またはプレースホルダの形態を取ることができる。
【００１５】
前述の目的および関連する目的を達成するため、本発明は、以降で十分に説明する特徴を含む。後述の説明および添付の図面によって、本発明の特定の例示的な態様について詳細に説明する。しかしこれらの態様は、本発明の原理を採用できるさまざまな方法のごく一部を示したものである。本発明の他の態様、利点、および新奇な特徴は、後述する本発明の詳細な説明を図面と併せて考察すれば明らかになるであろう。
【発明を実施するための最良の形態】
【００１６】
図面を参照して本発明について説明する。図面では、同様の要素を指すために全体を通して同様の参照番号が使用されている。以降の説明では、説明上の目的から、本発明の完全な理解を提供するために多くの特定の詳細について述べる。しかし、これらの特定の詳細を伴わずに本発明を実施できることは明らかである。他の例では、本発明の説明を容易にするために、よく知られた構造およびデバイスがブロック図の形態で示されている。
【００１７】
本出願で使用される「コンポーネント」、「ハンドラ」、「モデル」、「システム」などの用語は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを指すことを意図している。たとえばコンポーネントは、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および／またはコンピュータとすることができるが、これらには限定されない。実例としては、サーバ上で実行されているアプリケーションおよびそのサーバの双方をコンポーネントとすることができる。１つまたは複数のコンポーネントは１つのプロセスおよび／または実行スレッド内に常駐することができ、１つのコンポーネントは１台のコンピュータに集中させるか、および／または複数のコンピュータに分散することができる。またこれらのコンポーネントは、その上にさまざまなデータ構造を保存しているさまざまなコンピュータ可読メディアから実行することもできる。これらのコンポーネントは、１つまたは複数のデータパケット（たとえばローカルシステムや分散システム内の別のコンポーネントと対話する、および／またはインターネットなどのネットワークを経由して信号を介して他のシステムと対話する１つのコンポーネントからのデータ）を有する信号によってなど、ローカルプロセスおよび／またはリモートプロセスを介して通信することができる。
【００１８】
はじめに図１を参照すると、本発明の一態様による、アンチウイルス（ＡＶ）プラグイン１３０と対話するリレーショナルアイテムストア１００のブロック図が示されている。データアイテムストア１００は通常、３つの特徴、すなわちアイテム、リンク、および属性を採用するリレーショナルデータベースとすることができる。アイテムは、クライアントなどのユーザがアイテムとして表したいと望むどんな「もの」も表すことができ、アイテムＩＤによって一意に識別することができる。リンクは、２つのアイテム間に名前付きの指定された関係を提供する。属性は、ラベル付きの値をアイテムと関連付ける。アイテムは、リンクおよび属性の観点から記述される。リンクはアイテムの関連を表し、属性はアイテムに関する他の情報を表す。
【００１９】
さらに、こうしたリレーショナルデータストア環境では、データは１つまたは複数のテーブル内の行として保存することができる。データストアには、トランザクションＴ１からＴＮ（Ｎは整数）の形態の１つまたは複数のクエリによってアクセスすることができる。こうしたトランザクションは、たとえばデータアイテムストア１００内のデータの行レベルでの操作を含むことができる。トランザクション１１２、１１４、１１６は、データストアによって供与された極めて重要なデータへの差別的なアクセスのレベル（たとえば読み取り専用アクセス、読み取り／書き込みアクセスなど）に基づいてデータストアへのアクセスを有することができる。
【００２０】
本発明のアイテムストア１００は、メタデータコンポーネント１１０およびスキャンコンポーネント１２０を含むことができる。メタデータコンポーネント１１０は、アンチウイルスプラグイン１３０の動作を指示するためのルールセットおよび／または論理をデータストア１１０内に提供することができる。メタデータコンポーネント１１０は、いつスキャンするか、どのようにスキャンするか、いつ無効にするかなど、ＡＶプラグイン１３０用のセマンティクスを提供することができる。
【００２１】
さらにメタデータコンポーネント１１０は、データストア１００上でウイルススキャンが実行された時点で分かっているその時点のウイルスのステータス用の許容可能なバーレベル用の指定を提供することができる。たとえば、許容可能なバーレベルはタイムスタンプによって指定することができ、ストアには、"VIRUSSIGNATURETS"に割り当てられた値を有するグローバルなＡＶ署名のタイムスタンプを割り当てることができる。
【００２２】
署名を更新して新たな署名値を設定するためのプラグインを呼び出すためにアプリケーションプログラムインターフェース（ＡＰＩ）を起動するための典型的なデータ定義言語（ＤＤＬ）は、  
GetNewVirusSignature()  
GetCurrentVirusSignature()  
を含むことができる。
【００２３】
本発明の一態様によれば、データストア１００のテーブルに関連付けられた行は、２つのプロパティ、すなわち「直近のウイルス署名スキャン」および「スキャン状態」を定義するための２つの列を含むことができ、これについては以降でより詳細に説明する。簡単に言えば、「直近のウイルス署名スキャン」は、最後のアンチウイルススキャン（ＡＶ）が完了した行ごとに保存されたタイムスタンプを表し、「スキャン状態」は、行のコンテンツが、「感染なし」、「感染の疑いあり」、または「感染」であるかどうかを表す。行が作成される際、システムは自動的に「直近のウイルス署名スキャン」の値をゼロに、行のコンテンツの状態を「感染の疑いあり」に設定する。アプリケーションプログラムインターフェース（ＡＰＩ）を提供して、アンチウイルスプラグイン１３０を呼び出すことができ、アンチウイルスプラグイン１３０は、必要に応じてデータストア１００をスキャンし、署名を更新して新たな署名値を設定するために使用される。したがってメタデータコンポーネントは、アイテムストア１００に関連付けられている署名値を提供することができ、この署名値は、データのスキャンの時間と、そうしたスキャンの結果（たとえば、感染なし、感染の疑いあり、感染）を識別するためにリレーショナルストア内で指定されたスペースとを表すことができる。アンチウイルスチェックの採用をシステムのデフォルトとすることができる一方で、ユーザが指定のアイテムをスキャンしないことを選択した場合に「チェック不要な」メタデータコンポーネントを指定することもできることを理解されたい。
【００２４】
アイテムストア１００は、プラグイン１３０を信頼性の高い方法で採用するスキャンコンポーネント１２０をさらに含むことができる。スキャンコンポーネントは、サードパーティーベンダによって提供されるＡＶプラグインによるスキャンおよび除去の双方用に同期および／または非同期モードでのアイテムストア内のアイテムのキューイング（たとえば、最近の更新、変更など）を提供することができる。
【００２５】
次いで図２を参照すると、ブロック図は、非同期キューイングコンポーネント２１０（バックグラウンドスキャン）および同期キューイングコンポーネント２２０（オンアクセススキャン）をさらに含むものとしてスキャンコンポーネント１２０を示している。一般にＡＶプラグインは、アイテムストアに入る際に新たな断片ウイルスを検出することはできない。したがってＡＶプラグインは、アイテムストア２００の全コンテンツを分析できるようにしている場合がある。したがってＡＶプラグインは、たとえユーザがアイテムストア２００の特定のドメインに接続されている可能性があるとしても、そうした特定のドメインには限定されない。その上、アイテムストア２００は、ＡＶプラグインによるスキャン用にアイテムストアのコンテンツをキューに入れるスケジューリングコンポーネント２３０をさらに採用することができる。またスケジューリングコンポーネント２３０は、図２では別個のコンポーネントとして示されているが、スキャンコンポーネント１２０の一部とすることもできることを理解されたい。こうしたコンポーネントは、コンテンツをキューに入れること／キューから外すこと、ＡＶプラグインを呼び出すこと、および結果に基づいてメタデータコンポーネントを更新することができる。
【００２６】
通常アイテムストア２００は、新たなアイテムまたは更新されたアイテムをウイルススキャンまたはウイルス除去用に自動的にキューに入れることによって「バックグラウンドスキャン」キュー用の非同期キューイングコンポーネント２１０を採用することができる。キュー内のアイテムは、アイテムストア２００によって、たとえばスケジューリングコンポーネント２３０によってキューから外すことができ、適切なＡＶインターフェースを同期的に呼び出すことができる。
【００２７】
ＡＶプラグインによって処理するためのスキャンされないアイテムのスケジュールは、「ItemHasVirus」ＡＰＩ内に提供することができる。こうした呼は同期的に返すことができ、アイテムストア２００は、この呼のブール演算の結果に基づいてアイテムストア内の関連するＡＶメタデータコンポーネントを更新することができる。たとえばインターフェースが「真」の値を返す場合、オブジェクトはウイルスを含んでいると指定することができ、その行用のＡＶステータスは次のように更新される。  
lastVirusSignatureScanTS=@@VIRUSSIGNATURETS AND scanState="infected"
またインターフェースが「偽」の値を返す場合、そのオブジェクトにはウイルスがいないことが分かる。したがって、その行用のＡＶステータスは、lastVirusSignatureScanTS=@@VIRUSSIGNATURETS and scanState="clean"に更新することができる。
【００２８】
次いでストア内の同期キューイングコンポーネント２２０（オンアクセススキャン）を参照すると、アイテムストア上で読み取りが実行される際は常に、結果が通常は「感染なし」のスキャン状態を有するアイテムのみを含むよう通常は保証されるように、こうしたコンポーネントを採用することができる。したがって読み取りパス上の同期ＡＶは通常、クエリを処理している間に実際のウイルスが検出されない限り、クライアントが最新の結果セットを受領できることを保証することができる。とはいえ、そうした保証が高くつく可能性のある場合も存在する。たとえば第１のユーザが複数の新たな写真をアイテムドメイン内に挿入し、第２のユーザが言葉のドキュメントを検索しているとする。この第２のユーザには、クエリ側が第１のユーザによる写真の挿入に対するスキャンを有効にする間待機するよう求めることができる。
【００２９】
同時に、クエリを実行する一連のアイテムが完全にＡＶスキャンされなければ、クエリを実行するたびに結果は不完全なものとなる可能性がある。したがって本発明は、アプリケーションがどのように動作すべきかを決定する「セッション変数」の設定に基づいて、同期キューイングコンポーネントの一部として「強制的な」スキャンを導入する。アプリケーションは楽観的な手法に依存し、たとえＡＶプラグインがアイテムストア２００のコンテンツをすべて呼び出したわけではないためにトランザクションの結果が不完全であっても、その結果を受け入れることができる。あるいは、クエリの結果に潜在的に影響を与えうるアイテムのいくつかがスキャンされていないことをアイテムストア２００が発見した場合、そのスキャンは脇からの影響を受けて、そうしたコンテンツをトランザクションの結果に含める。
【００３０】
そういうものとして、アイテムをインラインでチェックすべきかどうかを制御するために、新たなセッションレベルセットオプション@@VIRUSCHECKONREADが導入される。そうしたフィールドが「０」の値を割り当てられる場合、読み取りクエリは通常、scanState="clean"を有する行を考慮に入れるだけである。同様に、「１」の値を割り当てられる場合、scanState != "clean"を有する行がクエリの実行中に強制的にスキャンされる。
【００３１】
次いで、以下から構成されるように述部を変更することができる。  
WHERE (lastVirusSignatureScanTS=@@VIRUSSIGNATURETS AND scanState="clean")  
OR (@@VIRUSCHECKONREAD=1 AND lastSignatureScan !=@@VIRUSSIGNATURETS AND ItemHasVirus(itemId)=0))  
同様の述部は、エクステンションおよびリンクなど、ストア内で存続する他のデータ上で評価することができる。この場合、関数ExtensionHasVirus（）またはLinkHasVirus（）が呼び出されることになる。
【００３２】
本発明のさらなる態様では、スケジューリングコンポーネント２３０は、ＡＶプラグインのCleanItemＡＰＩによる処理用に、感染しているアイテムをスケジュールに入れることができる。こうした呼は同期的に戻ることができ、ＡＶメタデータは、この呼のブール演算の結果に基づいてアイテムストア２００内で更新することができる。たとえばインターフェースが「真」の値を返した場合、そのオブジェクトは感染していない。次いで、その行用のＡＶステータスは、lastVirusSignatureScanTS=@@VIRUSSIGNATURETS、およびscanState="clean"用の値に更新することができる。一方、インターフェースが「偽」の値を返す場合、通常そのオブジェクトは感染している可能性があり、その行用のＡＶステータスは、lastVirusSignatureScanTS=@@VIRUSSIGNATURETS、およびscanState="infected"用の値に更新される。
【００３３】
図３は、本発明の一態様によるバックグラウンドスキャン用の方法３００を示している。はじめに３１０において、アイテムストアは、アイテムストアのコンテンツ上のＡＶプラグインの結果に基づいてメタデータコンポーネントの更新を完了する。次いで３１５において、最近のＡＶプラグインのスキャンを反映するために、アイテムストアのストア全体にわたる署名が更新される。次いで３２０において、アイテムストアは、その後のＡＶスキャンのために期限切れのアイテムをキューに戻すことができる。その上、最近の更新は、そうした優先キュー上で待機することもできる。詳細に前述したように、３２５において、キュー内のアイテムはアイテムストアによってキューから外すことができ、適切なＡＶインターフェースを同期的に呼び出すことができる。そして方法は、アイテムストアがＡＶプラグインの結果に基づいてメタデータコンポーネントの更新を完了すると、ステップ３１０にループバックする。本明細書では、さまざまな事象および／または行為を表す一連のブロックとして典型的な方法について記載および説明しているが、本発明は、記載されたそうしたブロックの順序によって限定されるものではない。たとえば本発明によれば、いくつかの行為または事象は、本明細書に記載された順序とは別に異なる順序で、および／または他の行為または事象と同時に発生することができる。その上、本発明による方法を実施する上で、記載されたすべてのブロック、事象、または行為が必要となるわけではない場合もある。さらに、本発明による典型的な方法および他の方法は、本明細書に記載および説明された方法だけでなく、記載および説明されていない他のシステムおよび装置とも併せて実施できることを理解できるであろう。
【００３４】
次いで図４Ａ〜４Ｅを参照すると、アイテムストアのテーブルに関連付けられた行が示されており、これは、２つのプロパティ、すなわち「直近のウイルス署名スキャン」および「スキャン状態」を定義するための２つの列を含む。一般にリレーショナルデータストアの核となる動作上の特徴は、テーブルに対して連結的なクエリを実行できることである。テーブル内に保存されているエンティティのセットには、セット処理言語（たとえばＳＱＬ（構造化照会言語））を使用してアクセスすることができる。この言語は、データのソースとして１つまたは複数のテーブルを指定し、所与の条件を満たす（１つまたは複数の）行があれば、それらの行のみを出力する。たとえば前に説明したように、アイテムストアは、リレーショナルデータベース、オブジェクトデータベース、および／またはオブジェクトリレーショナルデータベースとすることができる。リレーショナルデータベースに関しては、同じ構造を有するエンティティのセットはテーブルと呼ばれ、各エンティティは行と呼ばれる。構造のコンポーネントは列と呼ばれる。リレーショナルデータベースは、１つまたは複数のテーブルを含むことができる。図４Ａ〜４Ｅで提供される典型的なテーブルの署名更新は、本発明の一態様によるウイルススキャンを受けることができる。本発明のデータストアは、従来のデータストリームならびにリレーショナルオブジェクトの双方の形態によるデータの存在を考慮することを理解されたい。そうしたテーブルのコンテンツは、たとえばクエリの結果がそこに依存する場合、ウイルスの攻撃に端を発する必要がある。具体的には、悪質なコードが、ストア内に挿入されている暗号化された文字列を利用することができ、クライアントスペース内で復号され、電子メールを介して増殖することができる場合である。たとえばウイルスは、暗号化された本体「Ｘ」をアイテムのプロパティ内に格納することができ、このためストアに対してクエリを行い、クライアント上の暗号化されたプロパティを復号することによって増殖することができる。クエリを実行する際、本発明のデータストアは、ベンダによって提供されたアンチウイルスプラグインによるスキャンおよび除去の双方用に同期および／または非同期モードでテーブル内のアイテムをキューに入れるためのキューイングメカニズムを採用することができる。その後、リレーショナルアイテムストアエンジンは、クエリと、注目すべきことにユーザコンテキスト情報とに基づいてクエリ情報に対する応答を提供することができる。
【００３５】
図４Ａは行の作成を示しており、システムは自動的にlastVirusSignatureScanTS=0およびscanState="suspect"と設定する。行は、ＡＶプラグインがその行をスキャンするまで、こうした値を維持することができ、スキャン後は、「感染なし」のステータスによって図４Ｂに示されているように、スキャンのタイプスタンプと共にスキャンの結果を含むであろう。図４Ｃは、その行用の更新を示しており、アイテムストアは自動的にscanState="suspect"と設定するが、lastVirusSignatureScanTS用の値は変更しない。アンチウイルスプラグインは、アイテム行、リンク行、またはエクステンション行のスキャンを担当し、アイテムがウイルスに感染しているか否かを表示する。図４Ｄは、感染なしの状態を示しており、アイテムストアはlastVirusSignatureScanTSを@@VIRUSSIGNATURETSの現在の値に、scanStateプロパティを"clean"に設定する。同様に図４Ｅは、アイテムが感染しているという別の状況設定を示している。そういうものとして、アイテムストアはlastVirusSignatureScanTSを@@VIRUSSIGNATURETSに、scanStateプロパティを"infected"に設定し、これによってアイテムを「隔離」することができる。これに応じて、そうしたアイテムはプラグインによって消毒する必要があり、そうした後でそのコンテンツは、その後のクエリ用に再び利用できるようになる。
【００３６】
図５は、本発明の一態様による特定の階層化構成のブロック図を示している。通常、本発明のアイテムストアは、従来のデータストリームならびにリレーショナルオブジェクトの双方の形態によるデータの存在を考慮する。したがってアイテムストアおよびそのＡＶプラグインと、従来型のファイル（たとえば、データストリームファイルおよびアプリケーション）との下位互換性を提供するために、本発明はフィルタファイル用の新たなアーキテクチャを採用し、そこでは多重ＵＮＣプロバイダ（ＭＵＰ）コンポーネント５１５がファイルシステムとして登録され、通常ＵＮＣプロバイダは登録されない。一般に、ＵＮＣの入出力はすべて通常はＭＵＰを通過することを保証することができる。したがって図５に示されているように、たとえばＡＶフィルタなどのファイルフィルタ（５１０、５２０、５３０）のスタックは、ＭＵＰに自分自身を取り付けること（たとえば、ＭＵＰ上に自分自身の層を形成すること）ができ、アイテムストア内のアイテムのファイルストリーム入出力を含むＵＮＣの入出力をすべてフィルタにかけることができる。汎用命名規則（ＵＮＣ）はファイル用の命名規則を提供することができ、この命名規則は、マシンに依存しないファイル特定手段を提供する。ＭＵＰコンポーネント５１５は、ＵＮＣネームスペースへのアクセス用のファイルシステムとして機能し、そこでは、アイテムストアから見ることができる同じディレクトリおよびファイル名のネームスペースは、ＡＶプラグインから見ることもできる。
【００３７】
図示されているように、カーネルモード５５０は、コンピュータオペレーティングシステムの中心部分または核として機能することができる。こうしたオペレーティングシステムは一般に、データの処理および入出力の管理を担当する。カーネルモード５５０は、オペレーティングシステムの一部として最初にメインメモリにロードされ、そこで維持される。とりわけプロセス管理、ファイル管理、およびメモリ管理を担当することに加えて、カーネルコンポーネント５５０は通常、アプリケーションおよびドライバによって要求される必要不可欠なサービスまたはプロシージャを提供する。たとえばプロシージャは、入出力スケジューリング、バッファリング、スプーリング、エラー処理などに対応することができる。さらに、本明細書で使用されているカーネルモード５５０のサービスという用語は、カーネルアドレススペース内で特定できる任意のサービス、プロシージャ、ドライバ、アプリケーション、または他のコンポーネントを含むことを意図している点に留意すべきである。
【００３８】
本発明の関連する態様では、ベンダによって供与されるＡＶプラグインとリレーショナルアイテムストアエンジンとの対話の一部としてインターフェースのセットを提供することができる。こうしたインターフェースは、たとえば提供されたＡＶプラグインとリレーショナルアイテムストアをリンクするためにベンダによって作成できるルーチン用の一連のスタブおよび／またはプレースホルダの形態を取ることができる。こうしたインターフェースは、アイテム、エクステンション、およびリンクのウイルススキャンおよび除去用にベンダによって実装することができる。たとえば、  
BOOL ScanItem      (ItemId itemId)  
BOOL ScanExtension (ItemId itemId, ExtensionId extId)  
BOOL ScanLink      (ItemId itemId, LinkId linkId)
各インターフェースは、ブール演算の状態値を返すことができる。こうした値は、アイテムがウイルスを含んでいる（または断片攻撃に関与している）ことが判明した場合は、「真」に設定することができ、アイテムがウイルスに感染していない場合は、「偽」に設定することができる。同様に除去プロシージャ用の例は、以下を含むことができる。  
BOOL CleanItem      (ItemId itemId)  
BOOL CleanExtension (ItemId itemId, ExtensionId extId)  
BOOL CleanLink      (ItemId itemId, LinkId linkId)  
各インターフェースは、ブール演算の状態値を返すことができ、この値は、ストアオブジェクトのウイルスが首尾よく除去された場合は、「真」に設定することができ、ＡＶプラグインがストアオブジェクトのウイルスを除去できなかった場合は、「偽」に設定することができる。こうした関数は、ストアオブジェクト用にＡＶスキャン操作が必要な場合に、または感染しているストアオブジェクト用にＡＶ除去操作が必要な場合に、アイテムストアによって呼び出すことができる。どちらの場合も、前述のストアメカニズムを使用して必要なアイテムデータをストアから取ってくることは、通常はＡＶベンダの責任である。スキャンの態様および除去の態様は、併せて、または別々の段階として実行できることをさらに理解することができる。インターフェースは、同期および非同期の双方のスキャンおよび除去用にアイテムストアによって希望に応じて呼び出すことができる。その上、通常アイテムストアのコンテンツはすべて、特権付きの接続を有する標準的なクエリメカニズムを使用することによって、ＡＶプラグインからアクセスすることができる。さらに、偽のＡＶプラグインのインストールは、たとえば署名入りのアセンブリを採用することによって回避することができる。またインターフェースのそれぞれは、各ＡＰＩの中を通過するために"void *"プラグインのコンテキストをサポートすることもできる。
【００３９】
図６は、本発明の一態様による、ドキュメントオブジェクトモデル６１８に準拠するアイテムストアのメモリ内に常駐するデータ構造６２０へＸＭＬドキュメント６１２を変換するためのシステム６１０の簡潔で典型的な説明を示している。ＸＭＬドキュメント６１２はパーサ６１４によって解析され、セマンティックな要素および属性のリストを変換コンポーネント６１６に提供する。次いでセマンティックな要素および属性のリストは、ドキュメントオブジェクトモデル６１８に準拠するアイテムストアのデータ構造６２０に変換またはマップすることができる。ＸＭＬドキュメント６１２内に示されているように、このドキュメントは、親子リンクを有する複数の要素を含む。ＸＭＬ  ＤＯＭ内に示されているデータ要素は階層構造を含んでおり、「人間」をトップノードとして、サブノード「愛している」および「メアリー」を伴う要素「ジョン」という第１の枝または葉と、ノード「メアリー」を伴う第２の枝または葉とを有する。第２の枝からの情報を検索するかまたはマッチさせるために選択されるパーサは、「ジョンはメアリーを愛している」というリンクをまったく知らなくても、要素「メアリー」を検索するであろう。しかし本発明のアイテムストアは、要素またはアイテム間のリンクの観点から表示構造をモデル化することができ、したがって「ジョンはメアリーを愛している」というリンクは、このモデルから容易に認識することができる。データ構造６２０において見て取れるように、パーサは、ノード「人間」とノード「メアリー」の間のリンクを辿って、メアリーは人間であると判断し、ノード「メアリー」とノード「ジョン」の間のリンクを辿って、メアリーはジョンに愛されていると判断することによって、「メアリー」に関する情報を検索することができる。したがってこのモデルは、ＸＭＬ  ＤＯＭの場合と同様に、要素（またはアイテム）および属性の観点に加えて、リンクの観点からデータ構造を提示している。
【００４０】
図７は、本発明の一態様によるバックグラウンドスキャンキュー操作用のサイクルを示している。はじめにこのサイクルは、アイテムストアが、アイテムストアのコンテンツ上のＡＶプラグインの結果に基づいてメタデータコンポーネントの更新を完了した時点で開始する。次いで矢印７２０によって時計回りに移動すると、アイテムストアのストア全体にわたる署名が更新され、最近のＡＶプラグインのスキャンが反映される。次いで矢印７４０によって移動すると、アイテムストアは、次のＡＶスキャン用に期限切れのアイテムをキューに戻すことができる。さらに矢印７６０を辿ると、最近の更新は、そうした優先キュー上で待機することもできる。矢印７８０によって示されているように、キュー内のアイテムはアイテムストアによってキューから外すことができ、適切なＡＶインターフェースを同期的に呼び出すことができる。次いで矢印７９０によって示されているように、スキャンサイクルは、アイテムストアがＡＶプラグインの結果に基づいてメタデータコンポーネントの更新を完了すると、ループバックすることができる。前に説明したように、メタデータコンポーネントは、アイテムストアに割り当てられた署名値を提供することもでき、この署名値は、データのスキャンの時間と、そうしたスキャンの結果（たとえば、感染なし、感染の疑いあり、感染、スキャン不要など）を識別するためにリレーショナルアイテムストア内で指定されたスペース（たとえば、指定された列）とを表すことができる。これは、チャート７９５として示されている。そういうものとして、保留中のスキャンをアイテム用のライフサイクルの一部として提供することができる。
【００４１】
アンチウイルスプラグインは、アイテム行、リンク行、またはエクステンション行のスキャンを担当し、アイテムがウイルスに感染しているか否かを表示する。感染しているアイテムのウイルスを除去するために、図８に示されているように、ＡＶプラグインのCleanItemＡＰＩによる処理用に、感染しているアイテムをスケジュールに入れることができる。こうした呼を同期的に戻すことができ、ＡＶメタデータはアイテムストア８００内で更新することができる。呼が成功した場合（たとえばインターフェースが「真」の値を返した場合、そのオブジェクトは感染していないとみなすことができ、関連する行にその旨が表示される。
【００４２】
次いで図９を参照すると、本発明のさまざまな態様を実装できるクライアントならびにサーバサイド上の好ましいコンピューティング環境の簡潔で一般的な説明が示されている。ここまでは、１つのコンピュータおよび／または複数のコンピュータ上で実行されるコンピュータプログラムのコンピュータ実行可能命令という一般的なコンテキストで本発明について説明したが、本発明は他のプログラムモジュールとも組み合わせて実装できることを当業者なら理解するであろう。一般にプログラムモジュールは、特定のタスクを実行する、および／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに本発明の方法は、シングルプロセッサコンピュータシステムまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースの家庭用電化製品またはプログラム可能な家庭用電化製品などを含む他のコンピュータシステム構成と共に実施できることを当業者なら理解するであろう。前に説明したように、示された本発明の態様は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。しかし本発明のすべての態様とまでは言わないが、いくつかの態様はスタンドアロンコンピュータ上で実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリストレージデバイスおよびリモートメモリストレージデバイスの双方に配置することができる。典型的な環境はコンピュータ９２０を含み、コンピュータ９２０は、処理装置９２１、システムメモリ９２２、およびシステムバス９２３を含み、システムバス９２３は、システムメモリを含むさまざまなシステムコンポーネントを処理装置９２１に結合する。処理装置９２１は、さまざまな市販のプロセッサのいずれにすることもできる。処理装置９２１として、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを使用することもできる。
【００４３】
システムバスは、メモリバスまたはメモリコントローラと、ペリフェラルバスと、さまざまな市販のバスアーキテクチャのいずれかを使用するローカルバスとを含む複数のタイプのバス構造のいずれにすることもできる。システムメモリは、読み取り専用メモリ（ＲＯＭ）９２４およびランダムアクセスメモリ（ＲＡＭ）９２５を含むことができる。基本入出力システム（ＢＩＯＳ）は、起動中などにコンピュータ９２０内の要素間における情報伝達を補助する基本ルーチンを含み、ＲＯＭ９２４内に格納されている。
【００４４】
コンピュータ９２０は、ハードディスクドライブ９２７と、たとえば取り外し可能なディスク９２９との間で読み取りや書き込みを行うための磁気ディスクドライブ９２８と、たとえばＣＤ−ＲＯＭディスク９３１との間で読み取りや書き込みを行うための、または他の光メディアとの間で読み取りや書き込みを行うための光ディスクドライブ９３０とをさらに含む。ハードディスクドライブ９２７、磁気ディスクドライブ９２８、および光ディスクドライブ９３０は、それぞれハードディスクドライブインターフェース９３２、磁気ディスクドライブインターフェース９３３、および光ディスクドライブインターフェース９３４によってシステムバス９２３に接続される。これらのドライブおよびその関連するコンピュータ可読メディアは、コンピュータ９２０用のデータ、データ構造、コンピュータ実行可能命令などの不揮発性の記憶を提供する。前述のコンピュータ可読メディアの説明は、ハードディスク、取り外し可能な磁気ディスク、およびＣＤに言及しているが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジなど、コンピュータによって読み取り可能な他のタイプのメディアを典型的な動作環境において使用することもでき、さらにそうした任意のメディアは、本発明の方法を実行するためのコンピュータ実行可能命令を含むことができることを当業者なら理解すべきである。
【００４５】
オペレーティングシステム９３５、１つまたは複数のアプリケーションプログラム９３６、他のプログラムモジュール９３７、およびプログラムデータ９３９を含む複数のプログラムモジュールをドライブおよびＲＡＭ９２５内に格納することができる。図示されているコンピュータ内のオペレーティングシステム９３５は、実質的に市販のオペレーティングシステムのいずれにすることもできる。
【００４６】
ユーザは、キーボード９４０およびマウス９４２などのポインティングデバイスを介してコンピュータ９２０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナなどを含むことができる。これらの入力デバイスおよび他の入力デバイスは、システムバスに結合されているシリアルポートインターフェース９４６を介して処理装置９２１に接続される場合が多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続することもできる。またモニタ９５６や他のタイプのディスプレイデバイスも、ビデオアダプタ９５５などのインターフェースを介してシステムバス９２３に接続される。モニタに加えて、コンピュータは通常、スピーカおよびプリンタなどの他の周辺出力デバイス（図示せず）を含む。
【００４７】
コンピュータ９２０は、リモートコンピュータ９４９などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境内で動作することができる。リモートコンピュータ９４９は、ワークステーション、サーバコンピュータ、ルータ、ピアデバイス、または他の一般的なネットワークノードとすることができ、図９にはメモリストレージデバイス９５０しか示されていないが、通常はコンピュータ９２０に関連する前述の要素の多くまたはすべてを含む。図９に示されている論理接続は、ローカルエリアネットワーク（ＬＡＮ）９５１およびワイドエリアネットワーク（ＷＡＮ）９５２を含むことができる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見受けられる。
【００４８】
ＬＡＮネットワーキング環境において使用する場合、コンピュータ９２０は、ネットワークインターフェースまたはアダプタ９５３を介してローカルネットワーク９５１に接続することができる。ＷＡＮネットワーキング環境において使用する場合、コンピュータ９２０は一般にモデム９５４を含むことができ、および／またはＬＡＮ上の通信サーバに接続するか、および／またはインターネットなどのワイドエリアネットワーク９５２上で通信を確立するための他の手段を有する。モデム９５４は内蔵型または外付け型とすることができ、シリアルポートインターフェース９４６を介してシステムバス９２３に接続することができる。ネットワーク化された環境では、コンピュータ９２０に関連して示されているプログラムモジュール、またはその一部をリモートメモリストレージデバイス内に格納することができる。示したネットワーク接続は代表的なものであり、コンピュータ間に通信リンクを確立する他の手段も使用できることを理解できるであろう。
【００４９】
コンピュータプログラミング業界の技術者の慣習に従って、特段の記載がない限り、コンピュータ９２０などのコンピュータによって実行される行為および動作の象徴的な表示を参照して、本発明について説明した。こうした行為および動作は、コンピュータ実行可能と呼ばれる場合もある。こうした行為および象徴的に表示された動作は、データビットを表す電気信号に対する処理装置９２１による操作を含み、この操作による結果として、電気信号表示は変換されるかまたは減少し、データビットは（システムメモリ９２２、ハードドライブ９２７、フロッピー（登録商標）ディスク９２８、およびＣＤ−ＲＯＭ９３１を含む）メモリシステム内のメモリロケーションに保持され、これによってコンピュータシステムの動作ならびに信号の他の処理は再構成されるか、またはその他の形で変更されることを理解できるであろう。そうしたデータビットが保持されるメモリロケーションは、そのデータビットに対応する特定の電気的、磁気的、または光学的プロパティを有するメモリの物理ロケーションである。
【００５０】
次いで図１０を参照すると、本発明の一態様によるＡＶプラグインの方法を採用するクライアント−サーバシステム１０００が示されている。（１つまたは複数の）クライアント１０２０は、ハードウェアおよび／またはソフトウェア（たとえばスレッド、プロセス、コンピューティングデバイス）とすることができる。またシステム１０００は、１つまたは複数のサーバ１０４０も含む。（１つまたは複数の）サーバ１０４０は、ハードウェアおよび／またはソフトウェア（たとえばスレッド、プロセス、コンピューティングデバイス）とすることができる。たとえば、そうしたサーバ１０４０は、本発明を採用することによって変換を実行するためのスレッドを格納することができる。クライアント１０２０およびサーバ１０４０は、複数のコンピュータプロセスの間で本発明に従って伝送されるデータパケットの形態で通信することができる。このクライアント／サーバは、同じプロセスを共有することもできる。図示されているように、システム１０００は、（１つまたは複数の）クライアント１０２０と（１つまたは複数の）サーバ１０４０との通信を容易にすることができる通信フレームワーク１０８０を含む。（１つまたは複数の）クライアント１０２０は、（１つまたは複数の）クライアント１０２０にとってローカルな情報を保存できる１つまたは複数のクライアントデータストア１０１０に動作可能に接続されている。さらにクライアント１０２０は、サーバプロセスを実行するサーバコンピュータ１０４０上に配置されているデータベース１０６０にアクセスし、これを更新することができる。本発明の一態様では、通信フレームワーク１０８０はインターネット、クライアントプロセスはＷｅｂブラウザ、サーバプロセスはＷｅｂサーバとすることができる。そういうものとして、典型的なクライアント１０２０は、中央処理装置（ＣＰＵ）と、システムメモリと、モデムと、パーソナルコンピュータをインターネットに接続するためのネットワークカードと、ディスプレイと、キーボードやマウスなどの他のコンポーネントとを有する従来のパーソナルコンピュータなどの汎用コンピュータとすることができる。同様に、典型的なサーバ１０４０は、大学や企業のメインフレームコンピュータまたは専用ワークステーションなどとすることができる。
【００５１】
本発明について主に１つのストアを対象とするＡＶプラグインのコンテキストから説明したが、複数のストア用のワークフローも実装できることを理解されたい。一般に、異なるマシンにわたって複数のストアを配置するには、結果として複数のストアにわたってアンチウイルスを保証するレベルにばらつきが生じる可能性がある。そうしたばらつきを軽減するための特定の典型的な手法は、クライアントのストア用のプラグインが、別のストア上のシェアから読み取られているコンテンツをスキャンできるようにすることである。これによって通常、起点となるストアのアンチウイルス特性が、クライアントのアプリケーションによって使用されている連続した形態のアイテム内に含まれることが要求される場合がある。この情報およびローカルポリシーに基づいて、クライアントのストアにとって利用可能なプラグインは、ソースストアから読み取られているコンテンツをスキャンすることができる。より詳細には、そうしたアンチウイルスプラグインは１つのストアを対象とする。したがって、異なるマシン上で実行されているアプリケーションは、シェアを介してアイテムストアからコンテンツを読み取る場合、アプリケそのシェアをホストしているストア上のアンチウイルスプラグインによって保護される。異なるマシンにわたって複数のストアを配置すると、複数のストアにわたってアンチウイルスを保証するレベルにばらつきが生じることになる。１つの解決策は、クライアントのストア用のプラグインが、別のストア上のシェアから読み取られているコンテンツをスキャンできるようにすることである。これによって、起点となるストアのアンチウイルス特性が、クライアントのアプリケーションによって使用されている連続した形態のアイテム内に含まれることが要求されるであろう。この情報およびローカルポリシーに基づいて、クライアントのストアにとって利用可能なプラグインは、ソースストアから読み取られているコンテンツをスキャンすることができる。
【００５２】
示された特定の態様との関連から本発明について記載および説明したが、当業者が本明細書および添付の図面を読んで理解すれば、同等な変更および修正を想起できることを理解できるであろう。とりわけ前述のコンポーネント（アセンブリ、デバイス、回路、システムなど）によって実行されるさまざまな機能に関して、そうしたコンポーネントを記述するために使用されている用語（「手段」への参照を含む）は、特段の記載がない限り、開示された構造と構造的に同等でなくとも、本明細書に記載された本発明の典型的な態様における機能を実行する記述されたコンポーネントの（たとえば機能的に同等な）特定の機能を実行する任意のコンポーネントに相当することを意図している。この点について、本発明は、本発明のさまざまな方法の行為および／または事象を実行するためのコンピュータ実行可能命令を有するシステムならびにコンピュータ可読メディアを含むことも認識できるであろう。さらに「含む（ｉｎｃｌｕｄｅｓ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｓ）」、「有する（ｈａｖｉｎｇ）」という用語およびその変形は、詳細な説明または特許請求の範囲において使用される限り、「備える（ｃｏｍｐｒｉｓｉｎｇ）」という用語と同様に包括的な意味を意図している。
【図面の簡単な説明】
【００５３】
【図１】本発明の一態様による、アンチウイルス（ＡＶ）プラグインを採用するリレーショナルアイテムストアを示すブロック図である。
【図２】本発明の一態様によるスキャンコンポーネントを示すブロック図である。
【図３】本発明の一態様によるバックグラウンドスキャン用の方法を示す図である。
【図４Ａ】本発明の典型的な態様による行の作成およびスキャンのさまざまな段階を示す図である。
【図４Ｂ】本発明の典型的な態様による行の作成およびスキャンのさまざまな段階を示す図である。
【図４Ｃ】本発明の典型的な態様による行の作成およびスキャンのさまざまな段階を示す図である。
【図４Ｄ】本発明の典型的な態様による行の作成およびスキャンのさまざまな段階を示す図である。
【図４Ｅ】本発明の典型的な態様による行の作成およびスキャンのさまざまな段階を示す図である。
【図５】本発明の一態様による特定のシステムアーキテクチャ用のフィルタの階層化構成を示す図である。
【図６】本発明の一態様による、アイテムストアのメモリ内に常駐するデータ構造へドキュメントを変換するためのシステムの簡潔で典型的な説明を示す図である。
【図７】本発明の一態様によるアイテムストア内のデータのバックグラウンドスキャンキュー用のサイクルを示す図である。
【図８】本発明の一態様によるアイテムストア内のデータのバックグラウンド除去キューを示す図である。
【図９】本発明のさまざまな態様を採用できる好ましいコンピューティング環境を示す概略ブロック図である。
【図１０】本発明の一態様によるアンチウイルススキャン方法を採用できるクライアント−サーバシステムを示す図である。
【符号の説明】
【００５４】
１００  アイテムストア
１１０  メタデータコンポーネント
１１２  トランザクション１
１１４  トランザクション２
１１６  トランザクションＮ
１２０  スキャンコンポーネント
１３０  アンチウイルスプラグイン
２００  アイテムストア
２１０  非同期キューイング
２２０  同期キューイング
２３０  スケジューリングコンポーネント
５１０  フィルタ
５２０  フィルタ
５３０  フィルタ
５５０  カーネルモード
６１４  パーサ
６１６  変換
９２０  コンピュータ
９２１  処理装置
９２２  システムメモリ
９２７  ハードドライブ
９２８  フロッピー（登録商標）ドライブ
９２９  ディスク
９３０  ＣＤ−ＲＯＭドライブ
９３１  ディスク
９３２  インターフェース
９３３  インターフェース
９３４  インターフェース
９３５  オペレーティングシステム
９３６  アプリケーション
９３７  モジュール
９３９  データ
９４０  キーボード
９４２  マウス
９４６  シリアルポートインターフェース
９４９  リモートコンピュータ
９５０  メモリストレージ
９５３  ネットワークアダプタ
９５４  モデム
９５５  ビデオアダプタ
９５６  モニタ+
１０１０  （１つまたは複数の）クライアントデータストア
１０２０  （１つまたは複数の）クライアント
１０４０  （１つまたは複数の）サーバ
１０６０  （１つまたは複数の）サーバデータストア
１０８０  通信フレームワーク
【図１】
2006012164.tif 000003
【図２】
2006012164.tif 000004
【図３】
2006012164.tif 000005
【図４Ａ】
2006012164.tif 000006
【図４Ｂ】
2006012164.tif 000007
【図４Ｃ】
2006012164.tif 000008
【図４Ｄ】
2006012164.tif 000009
【図４Ｅ】
2006012164.tif 000010
【図５】
2006012164.tif 000011
【図６】
2006012164.tif 000012
【図７】
2006012164.tif 000013
【図８】
2006012164.tif 000014
【図９】
2006012164.tif 000015
【図１０】
2006012164.tif 000016