(57)【要約】【課題】スキャン過程におけるＩＯコスト及びＣＰＵコストを下げ、ファイルのスキャン効率を向上させること。【解決手段】スキャン対象となる被スキャンファイルのハードリンク数を取得するステップと、被スキャンファイルのハードリンク数が１より大きい場合、被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、被スキャンファイルを一意的に識別するファイル識別標識及び被スキャンファイルのスキャン結果を記憶ユニットに保存するステップと、被スキャンファイルを再びスキャン対象とするとき、ファイル識別標識に基づいて記憶ユニットから被スキャンファイルのスキャン結果を照会して取得するステップとを含む。ハードリンク数が１より大きいファイルに対し、それを初めてスキャンするファイルとするときのみスキャン処理をし、それを再びスキャンするファイルとするとき、繰り返してスキャン処理せず、直接初めてのスキャン結果を取得する。【選択図】図１
2017511515.tif 000002
【特許請求の範囲】
【請求項１】
スキャン対象となる被スキャンファイルのハードリンク数を取得するステップと、
前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、前記被スキャンファイルを一意的に識別するファイル識別標識及び前記被スキャンファイルのスキャン結果を記憶ユニットに保存するステップと、
前記被スキャンファイルを再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得するステップとを含む
ことを特徴とするファイルをスキャンする方法。
【請求項２】
メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定するステップを更に含む
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定するステップは、
ディスクにおける前記被スキャンファイルの記憶位置を取得し前記ファイル識別標識とするステップ、又は、
前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置を取得し、前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定するステップを含む
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得することは、
前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されていない場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得するステップを含む
ことを特徴とする請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記被スキャンファイルを一意的に識別するファイル識別標識及び対応する前記被スキャンファイルのスキャン結果を記憶ユニットに保存することは、
前記記憶ユニットに前記ファイル識別標識が保存されていないと確認した後、前記ファイル識別標識を前記記憶ユニットに保存するステップと、
スキャンエンジンを呼び出して前記被スキャンファイルのスキャン結果を取得した後、前記スキャン結果を前記記憶ユニットに保存するステップとを含む
ことを特徴とする請求項４に記載の方法。
【請求項６】
前記被スキャンファイルを再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得するステップは、
前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されている場合、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得するステップを含む
ことを特徴とする請求項１〜３のいずれか１項に記載の方法。
【請求項７】
前記被スキャンファイルのハードリンク数が１である場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得するステップを更に含む
ことを特徴とする請求項１〜３のいずれか１項に記載の方法。
【請求項８】
スキャン対象となる被スキャンファイルのハードリンク数を取得するハードリンク数取得ユニットと、
前記ファイル識別標識と前記スキャン結果を保存する記憶ユニットと、
前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、前記被スキャンファイルを一意的に識別するファイル識別標識及び対応する前記被スキャンファイルのスキャン結果を記憶ユニットに保存する第一処理ユニットと、
前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得する第二処理ユニットとを含む
ことを特徴とするファイルをスキャンする装置。
【請求項９】
メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定する標識決定ユニットを更に含む
ことを特徴とする請求項８に記載の装置。
【請求項１０】
前記標識決定ユニットは、
ディスクにおける前記被スキャンファイルの記憶位置を取得し前記ファイル識別標識とする第一取得モジュールを含み、又は、
前記標識決定モジュールは、
前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置を取得する第二取得モジュールと、
前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定する標識決定モジュールとを含む
ことを特徴とする請求項９に記載の装置。
【請求項１１】
前記第一処理ユニットは、
前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されていないと確認したとき、スキャンエンジンに対する呼び出しをトリガーする第一トリガーモジュールを含む
ことを特徴とする請求項８〜１０のいずれか１項に記載の装置。
【請求項１２】
前記第一処理ユニットは、
前記ファイル識別標識を前記記憶ユニットに保存する標識保存モジュールと、
前記第一処理ユニットによって前記被スキャンファイルのスキャン結果を取得した後、前記スキャン結果を前記記憶ユニットに保存する結果保存モジュールとを更に含み、
前記第一トリガーモジュールは、更に、前記記憶ユニットに前記ファイル識別標識が保存されていないと確認したとき、前記標識保存モジュールをトリガーするように構成されていることを特徴とする請求項１１に記載の装置。
【請求項１３】
前記第二処理ユニットは、
前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得する結果取得モジュールと、
前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されていると確認したとき、結果取得モジュールをトリガーする第二トリガーモジュールとを含む
ことを特徴とする請求項８〜１０のいずれか１項に記載の装置。
【請求項１４】
前記被スキャンファイルのハードリンク数が１である場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得する第三処理ユニットを更に含む
ことを特徴とする請求項８〜１０のいずれか１項に記載の装置。
【請求項１５】
コンピュータプログラムを含むコンピュータ記憶媒体であって、前記コンピュータプログラムが一つ又は複数のコンピュータによって実行されるとき、前記一つ又は複数のコンピュータは、請求項１〜７のいずれか一項に記載のファイルをスキャンする方法を実行するように構成されている
ことを特徴とするコンピュータ記憶媒体。
【請求項１６】
少なくとも一つのプロセッサと、メモリと、少なくとも一つのコンピュータプログラムとを含む機器において、
少なくとも一つのコンピュータプログラムは、前記メモリに記憶されており、前記少なくとも一つのプロセッサによって実行される場合には、
請求項１〜７のいずれか一項に記載のファイルをスキャンする方法を実行するように構成されている
ことを特徴とする機器。
【請求項１７】
コンピュータで実行されると、前記コンピュータに、請求項１〜７のいずれか１項に記載のファイルをスキャンする方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は２０１４年８月２５日に中国専利局に提出し、出願番号が２０１４１０４２１４３０．０で、発明名称が「ファイルをスキャンする方法及び装置」の中国特許出願の優先権を主張し、そのすべての内容は参照として本出願に組み込まれている。
【０００２】
本発明は、ファイルのスキャン分野に関し、特にファイルをスキャンする方法及び装置に関する。
【背景技術】
【０００３】
ハードリンクとは、同じサイズ（個別アルゴリズムを用いて計算するとチェックサムが同じである）の単一ファイルを複数のパスで参照できるようにする仕組みである。複数のハードリンクを持つファイルは、そのパーティション／ボリュームにおいて一つのデータしかない。
【０００４】
既存のファイルのスキャン技術では、ファイルのトラバーサル順序に従ってスキャンエンジンを呼び出してファイルをスキャン処理する。従って、複数のハードリンク数を持つファイルに対し、スキャンエンジンを繰り返して呼び出しスキャン処理（読取り、計算などの処理を含む）をしなければならないため、スキャンエンジンが無駄に動作し、スキャン過程における入出力（ＩＯ）のコスト及び中央処理装置（ＣＰＵ）のコストが増加し、スキャン効率が下がる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
既存のファイルのスキャン技術に存在する欠点を解決するために、本発明はファイルをスキャンする方法及び装置を提供し、スキャン過程におけるＩＯコスト及びＣＰＵコストを下げさせ、ファイルのスキャン効率を向上させる。
【課題を解決するための手段】
【０００６】
本発明の実施形態１は、ファイルをスキャンする方法を提供し、当該方法は、スキャン対象となる被スキャンファイルのハードリンク数を取得するステップと、前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、前記被スキャンファイルを一意的に識別するファイル識別標識及び前記被スキャンファイルのスキャン結果を記憶ユニットに保存するステップと、前記被スキャンファイルを再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得するステップとを含む。
【０００７】
本発明の実施形態の一実施例において、前記方法は、メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定するステップを更に含む。
【０００８】
更に、前記メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定するステップは、ディスクにおける前記被スキャンファイルの記憶位置を取得し前記ファイル識別標識とするステップを含む。例えば、メモリに物理ディスクが一つしかない場合に当該ステップを実行する。これにより、被スキャンファイルがハードリンク数をどれぐらい持っていても、前記被スキャンファイルがファイル識別標識に一対一で対応することになる。
【０００９】
又は、更に、前記メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定するステップは、前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置を取得し、前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定するステップを含む。例えば、メモリに物理ディスクが複数ある場合に当該ステップを実行する。これにより、複数のディスクを含むメモリにおいて、被スキャンファイルがハードリンク数をどれぐらい持っていても、前記被スキャンファイルがファイル識別標識に一対一で対応することになる。
【００１０】
任意選択で、当該実施例において、ディスクにおける前記被スキャンファイルの記憶位置は、パーティション／ボリュームにおける被スキャンファイルの開始クラスタ番号、パーティション／ボリュームにおける物理ディスクに対する開始オフセットアドレス、パーティション／ボリュームにおける物理ディスクに対する開始セクター番号、物理ディスクにおける開始オフセットアドレス又は物理ディスクにおける開始セクター番号を含む。
【００１１】
本発明の実施形態の別の実施例において、前記被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得することは、前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されていない場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得するステップを含む。
【００１２】
これにより、前記被スキャンファイルを初めてスキャン対象とするときの状況をタイムリーに確認するとともに、対応する処理をすることができる。
【００１３】
更に、前記被スキャンファイルを一意的に識別するファイル識別標識及び対応する前記被スキャンファイルのスキャン結果を記憶ユニットに保存することは、前記記憶ユニットに前記ファイル識別標識が保存されていないと確認した後、前記ファイル識別標識を前記記憶ユニットに保存するステップと、スキャンエンジンを呼び出して前記被スキャンファイルのスキャン結果を取得した後、前記スキャン結果を前記記憶ユニットに保存するステップとを含む。
【００１４】
その中で、ファイル識別標識の保存とスキャンエンジンの呼び出しとを順次に実行してもよいし、ファイル識別標識の保存とスキャンエンジンの呼び出しとを別々に実行してもよい。同様に、スキャンエンジンを呼び出して前記被スキャンファイルのスキャン結果を取得した後、スキャン結果の保存と次の被スキャンファイルの処理とを順次に実行してもよいし、スキャン結果の保存と次の被スキャンファイルの処理とを別々に実行してもよい。
【００１５】
本発明の実施形態の別の実施例において、前記被スキャンファイルを再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得するステップは、前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されている場合、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得するステップを含む。
【００１６】
これにより、前記被スキャンファイルを再びスキャン対象とするときの状況をタイムリーに確認するとともに、対応する処理をすることができる。
【００１７】
本発明の実施形態のまた別の実施例において、前記方法は、前記被スキャンファイルのハードリンク数が１である場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得するステップを更に含む。従って、ハードリンク数が１である被スキャンファイルを処理することができる。
【００１８】
相応して、本発明の実施形態は更にファイルをスキャンする装置を提供し、当該装置は、スキャン対象となる被スキャンファイルのハードリンク数を取得するハードリンク数取得ユニットと、
前記ファイル識別標識と前記スキャン結果を保存する記憶ユニットと、
前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、前記被スキャンファイルを一意的に識別するファイル識別標識及び対応する前記被スキャンファイルのスキャン結果を記憶ユニットに保存する第一処理ユニットと、
前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得する第二処理ユニットとを含む。
【００１９】
本発明の実施形態の実施例において、前記装置は、メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定する標識決定ユニットを更に含む。
【００２０】
更に、標識決定ユニットは、ディスクにおける前記被スキャンファイルの記憶位置を取得し前記ファイル識別標識とする第一取得モジュールを含む。例えば、メモリに物理ディスクが一つしかない場合に当該ステップを実行する。これにより、被スキャンファイルがハードリンク数をどれぐらい持っていても、前記被スキャンファイルがファイル識別標識に一対一で対応することになる。
【００２１】
又は、更に、前記標識決定ユニットは、前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置を取得する第二取得モジュールと、前記被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定する標識決定モジュールとを含む。例えば、メモリにディスクが少なくとも二つある場合に当該ステップを実行する。これにより、複数のディスクを含むメモリにおいて、被スキャンファイルがハードリンク数をどれぐらい持っていても、前記被スキャンファイルがファイル識別標識に一対一で対応することになる。
【００２２】
本発明の実施形態の別の実施例において、
前記第一処理ユニットは、前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されていないと確認したとき、スキャンエンジンに対する呼び出しをトリガーする第一トリガーモジュールを含む。
【００２３】
これにより、前記被スキャンファイルを初めてスキャン対象とするときの状況をタイムリーに確認するとともに、対応する処理をすることができる。
【００２４】
更に、前記第一処理ユニットは、前記ファイル識別標識を前記記憶ユニットに保存する標識保存モジュールと、前記第一処理ユニットによって前記被スキャンファイルのスキャン結果を取得した後、前記スキャン結果を前記記憶ユニットに保存する結果保存モジュールとを更に含み、前記第一トリガーモジュールは、更に、前記記憶ユニットに前記ファイル識別標識が保存されていないと確認したとき、前記標識保存モジュールをトリガーするように構成されている。
【００２５】
本発明の実施形態の別の実施例において、前記第二処理ユニットは、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得する結果取得モジュールと、前記ファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されていると確認したとき、結果取得モジュールをトリガーする第二トリガーモジュールとを含む。
【００２６】
これにより、前記被スキャンファイルを再びスキャン対象とするときの状況をタイムリーに確認するとともに、対応する処理をすることができる。
【００２７】
本発明の実施形態のまた別の実施例において、前記装置は、前記被スキャンファイルのハードリンク数が１である場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得する第三処理ユニットを更に含む。従って、ハードリンク数が１である被スキャンファイルを処理することができる。
【００２８】
相応して、本発明の実施形態は更にコンピュータプログラムを含むコンピュータ記憶媒体を提供し、当該コンピュータ記憶媒体であって、前記コンピュータプログラムが一つ又は複数のコンピュータによって実行されるとき、前記一つ又は複数のコンピュータは、本発明に係る実施形態及び実施例のいずれか一つに記載の方法を実行するように構成されている。
【００２９】
相応して、本発明の実施形態は、更に、少なくとも一つのプロセッサと、メモリと、少なくとも一つのコンピュータプログラムとを含む機器において、少なくとも一つのコンピュータプログラムは、前記メモリに記憶されており、前記少なくとも一つのプロセッサによって実行される場合には、本発明に係る実施形態及び実施例のいずれか一つに記載の方法を実行するように構成されている機器を提供する。
【００３０】
相応して、本発明の実施形態は更にコンピュータで実行されると、前記コンピュータに、本発明に係る実施形態及び実施例のいずれか一つに記載の方法を実行させるコンピュータプログラムを提供する。
【００３１】
本発明の各実施形態を使用すると以下の有益な効果がある。ファイルのハードリンク数に基づいて被スキャンファイルを処理し、具体的には、ハードリンク数が１より大きいファイルに対し、それを初めてスキャンするファイルとするときのみスキャン処理をし、それを再びスキャンするファイルとするとき、繰り返してスキャン処理せず、直接初めてのスキャン結果を取得することにより、スキャン過程におけるＩＯコスト及びＣＰＵコストを下げ、ファイルのスキャン効率を向上させることができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施形態に係るファイルをスキャンする方法のフローチャートである。
【図２】本発明の実施形態に係るファイルをスキャンする別の方法のフローチャートである。
【図３】本発明の実施形態に係るファイルをスキャンするまた別の方法のフローチャートである。
【図４】本発明の実施形態に係るファイルをスキャンする装置のブロック図ある。
【図５Ａ】本発明の実施形態に係るファイルをスキャンする別の装置のブロック図ある。
【図５Ｂ】図５Ａに示す実施形態に係る標識決定ユニットのブロック図ある。
【図５Ｃ】図５Ａに示す実施形態に係る標識決定ユニットのブロック図ある。
【図６】本発明の実施形態に係る第一処理ユニットのブロック図ある。
【図７】本発明の実施形態に係る第二処理ユニットのブロック図ある。
【図８】本発明の実施形態に係るファイルをスキャンする装置のまた別のブロック図ある。
【発明を実施するための形態】
【００３３】
以下、図面及び具体的な実施例を参照しながら本発明の様々な態様を詳細に説明する。その中で、周知のモジュール、ユニット及びそれらの間の接続、リンク、通信又は操作については、示していないか又は詳細な説明をしていない。同時に、説明される特徴、構造又は機能は、一つ或いは一つ以上の実施例において任意の方式で組み合わせることができる。下記各種の実施例は単に例として説明しており、本発明の保護範囲を制限するものではないことを当業者は理解すべきである。また、本文による説明及び図面に示す各実施例におけるモジュール或いはユニット或いはステップは、異なる配置にて組み合わせ及び設計することができることは容易に理解される。
【００３４】
図１は本発明の実施形態に係るファイルをスキャンする方法のフローチャートである。図１に示すように、前記方法は以下のステップを含む。
【００３５】
ステップ１００において、スキャン対象となる被スキャンファイルのハードリンク数を取得する。
【００３６】
本実施形態において、既存のいずれか一つのファイルのハードリンクを取得できる方法を利用することが可能である。例えば、オペレーティングシステムアプリケーションのインターフェースを通して、被スキャンファイルのハードリンク数を取得する。ファイルのハードリンクを取得する方法については本実施形態に制限されない。
【００３７】
本発明に係る「スキャン対象となる被スキャンファイル」は、スキャンエンジンによってスキャンする必要があるファイルだけでなく、そのスキャン結果を取得する必要があるファイルである。本発明の実施形態に適用するｗｉｎｄｏｗｓ（マイクロソフトウィンドウズ）のシステムファイルをスキャンするシーンにおいて、システムインストールディスクｗｉｎｄｏｗｓディレクトリ下のファイルを逐一トラバーサルしなければならず、しかも一つのファイルをトラバーサルするたびに、本発明の実施形態に係る方法を利用して該ファイルのスキャン結果を取得する。例えば、システムインストールディスクｗｉｎｄｏｗｓディレクトリにおけるｎｏｔｅｐａｄ．ｅｘｅファイルをトラバーサルするとき、当該ファイルがこの場でスキャン結果を取得しようとするファイルとなる。システムインストールディスクｗｉｎｄｏｗｓディレクトリ下のｓｙｓｔｅｍ３２フォルダにおけるｎｏｔｅｐａｄ．ｅｘｅファイルをトラバーサルするとき、当該ファイルがこの場でスキャン結果を取得しようとするファイルとなる。既存技術において、上記異なるパス下のｎｏｔｅｐａｄ．ｅｘｅファイルのスキャン結果はいずれもスキャンエンジンを呼び出してスキャンし取得したものである。しかし、本発明の実施形態において、上記異なるパス下のｎｏｔｅｐａｄ．ｅｘｅファイルのスキャン結果は異なる方法によって取得したものである。以下はそれについて詳細に説明する。
【００３８】
言い換えれば、ファイルの集合（例えばフォルダ）の中のファイルをトラバーサルし、それぞれのファイルのスキャン結果を順次に取得していく応用シーンにおいて、一つのファイルをトラバーサルするたびに、本発明の実施形態に係る方法を利用して該ファイルのスキャン結果を取得することができ、しかも毎度トラバーサルしたファイルをスキャン対象となる被スキャンファイルとする。所謂「トラバーサル」とは、一定の順序に従って順次処理しようとする対象をアクセスすることであることを当業者は理解すべきである。本発明の実施形態について言えば、一つのファイルをトラバーサルするたびに、当該ファイルを被スキャンファイルとして処理し、処理した後に、引き続き次のファイルをトラバーサルしては処理し、このようにトラバーサルし終わるまで繰り返す。
【００３９】
ステップ１０２において、前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを初めてスキャン対象とするとき、スキャン結果を取得してファイル識別標識及びスキャン結果を保存する。具体的には、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、前記被スキャンファイルを一意的に識別するファイル識別標識及び対応する前記被スキャンファイルのスキャン結果を記憶ユニットに保存する。その中で、記憶ユニットはハードリンク数が１より大きいファイルのファイル識別標識及びスキャン結果を保存する。例示として、前記記憶ユニットは、例えばキャッシュメモリ、ハードディスクといった既存のいずれか一つの記憶媒体である。言い換えれば、被スキャンファイルのファイル識別標識及びスキャン結果は一時ファイル又は通常のファイル等のいずれか一つの形式で保存することができる。
【００４０】
そのうち、本発明で言う「一意的に識別する」は、被スキャンファイルがそのファイル識別標識のみによって示され、しかも両者は一対一で対応していることを指し、又は、物理ディスク、パーティション、ボリューム或いはファイルシステムにおけるファイルの唯一性を指す。例えば、一意的に被スキャンファイルを識別するファイル識別標識は、パーティション／ボリュームにおけるファイルの開始クラスタ番号、パーティション／ボリュームにおけるファイルの相対的な物理ディスクの開始オフセットアドレス、パーティション／ボリュームにおけるファイルの相対的な物理ディスクの開始セクター番号、物理ディスクにおけるファイルの開始オフセットアドレス、物理ディスクにおけるファイルの開始セクター番号、ファイルシステムにおけるファイルの唯一性を示すデータ（例えばマイクロソフトウィンドウズのオペレーティングシステムＮＴＦＳファイルシステムＦＩＬＥーＩＤーＩＮＦＯ）等を含むことができる。また、この概念はメモリに少なくとも二つの物理ディスクを含む場合も同様に適用する。
【００４１】
ステップ１０４において、前記被スキャンファイル（ハードリンク数が１より大きい）を再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得する。
【００４２】
本発明において、「再び」は一回目の後のいずれか一回を含み、二回目だけを指すわけではない。ハードリンクがあるため、ファイルをスキャンする過程において、ディスクの中の同じファイルを何度もトラバーサルする可能性があることを当業者は理解すべきである。そのため、こういうファイルに対し、初めてスキャン対象となる場合と再びスキャン対象となる場合とがある。
【００４３】
本発明の実施形態に係わるファイルをスキャンする方法によれば、ファイルのハードリンク数に基づいて被スキャンファイルを処理することができる。具体的には、ハードリンク数が１より大きいファイルに対し、それを初めてスキャンするファイルとするときのみスキャン処理をし、それを再びスキャンするファイルとするとき、繰り返してスキャン処理せず、直接初めてのスキャン結果を取得することにより、スキャン過程におけるＩＯコスト及びＣＰＵコストを下げ、ファイルのスキャン効率を向上させることができる。
【００４４】
任意選択で、本実施形態の実施例１において、以下の方法を通して被スキャンファイルを初めてスキャン対象とするかどうかを確認する。
【００４５】
前記被スキャンファイルを一意的に識別するファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに前記ファイル識別標識が保存されていない場合、前記被スキャンファイルを初めてスキャン対象とすることを確認し、このとき、前記ファイル識別標識を記憶ユニットに保存するとともに、スキャンエンジンを通して取得したスキャン結果を記憶ユニットに保存する。逆に、前記記憶ユニットに前記ファイル識別標識が保存されている場合、前記被スキャンファイルを再びスキャン対象とすることを確認し、このとき、前記記憶ユニットを通してスキャン結果を取得する。
【００４６】
上述実施例１については後に具体的に説明する。
【００４７】
任意選択で、本実施形態の実施例２において、以下の方法を通して被スキャンファイルを初めてスキャン対象とするかどうかを確認する。
【００４８】
前記被スキャンファイルを一意的に識別するファイル識別標識に基づいて前記記憶ユニットを照会し、前記記憶ユニットに当該ファイル識別標識に対応するスキャン結果が保存されていない場合、前記被スキャンファイルを初めてスキャン対象とすることを確認し、このとき、前記ファイル識別標識を記憶ユニットに保存するとともに、スキャンエンジンを通して取得したスキャン結果を記憶ユニットに保存する。逆に、前記記憶ユニットに対応するスキャン結果が保存されている場合、前記被スキャンファイルを再びスキャン対象とすることを確認し、このとき、前記記憶ユニットを通してスキャン結果を取得する。
【００４９】
上述実施例２については後に具体的に説明する。
【００５０】
当然のことながら、前記被スキャンファイルを初めてスキャン対象とするかそれとも再びスキャン対象とするかを確認する方法は上述の二つの実施例に限られず、図１に示すように「初めて」、「再び」の二つの場合にそれぞれ対応して処理することによってスキャン結果を取得することはいずれも本発明の保護範囲に入る。
【００５１】
図２は本発明の実施形態に係るファイルをスキャンする別の方法のフローチャートである。図２に示すように、前記方法は以下のステップを含む。
【００５２】
ステップ２００において、スキャン対象となる被スキャンファイルのハードリンク数を取得する。
【００５３】
任意選択で、本実施形態の一実施例において、オペレーティングシステムアプリケーションのインターフェース（例えば、マイクロソフトウィンドウズのオペレーティングシステムアプリケーションのインターフェースＧｅｔＦｉｌｅＩｎｆｏｒｍａｔｉｏｎＢｙＨａｎｄｌｅである）を通して被スキャンファイルのハードリンク数を取得することができる。当然のことながら、既存のいずれか一つのファイルのハードリンク数を取得できる方法を用いてもかまわない。これについては本実施形態に制限されない。
【００５４】
ステップ２０２において、前記被スキャンファイルのハードリンク数が１より大きい場合、前記被スキャンファイルを初めてスキャン対象とするとき、スキャン結果を取得してファイル識別標識及びスキャン結果を保存する。具体的には、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、前記被スキャンファイルを一意的に識別するファイル識別標識及び前記被スキャンファイルのスキャン結果を記憶ユニットに保存する。
【００５５】
ステップ２０４において、前記被スキャンファイル（ハードリンク数が１より大きい）を再びスキャン対象とするとき、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得する。
【００５６】
任意選択で、本実施形態の一実施例において、点線枠に示すように、ステップ２００の後、前記方法は、前記被スキャンファイルのハードリンク数が１より大きい場合、メモリにおける前記被スキャンファイルの記憶位置に基づいて前記被スキャンファイルを一意的に識別するファイル識別標識を決定するステップ２０１を更に含む。
【００５７】
選択できる実施例において、ステップ２０１は以下の方法を通して実現する。ディスクにおける被スキャンファイルの記憶位置を取得しファイル識別標識とする。例示として、当該実施例はメモリに物理ディスクが一つしかない場合に適用する。その中で、前記ディスクにおける被スキャンファイルの記憶位置は、パーティション／ボリュームにおける被スキャンファイルの開始クラスタ番号、パーティション／ボリュームにおける物理ディスクに対する開始オフセットアドレス、パーティション／ボリュームにおける物理ディスクに対する開始セクター番号、物理ディスクにおける開始オフセットアドレス、物理ディスクにおける開始セクター番号等を含む。
【００５８】
別の実施例において、ステップ２０１は以下の方法を通して実現する。初めに被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける被スキャンファイルの記憶位置を取得し、被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定する。例えば、アレイ形式（ディスク標識，ディスクにおける記憶位置）をファイル識別標識とするか、又は特定のコード形式で被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける前記被スキャンファイルの記憶位置をコーディングしてファイル識別標識を生成する。例示として、当該実施例はメモリに少なくとも二つの物理ディスクを含む場合に適用される。その中で、前記ディスク標識は例えばディスクのシリアル番号或いは複数のディスクに別々にアレンジした番号といったディスクに一対一で対応する情報を含む。
【００５９】
当然のことながら、本発明の他の実施形態において、前記被スキャンファイルを一意的に識別することができれば、例えばディスクにおける前記被スキャンファイルの位置によって設定された識別子のような他の情報を前記ファイル識別標識としてもよい。
【００６０】
任意選択で、ステップ２０１において、例えばマイクロソフトウィンドウズのオペレーティングシステムアプリケーションのインターフェースＦＳＣＴＬ＿ＧＥＴ＿ＲＥＴＲＩＥＶＡＬ＿ＰＯＩＮＴＥＲ＿ＢＡＳＥ、又はＦＳＣＴＬ＿ＧＥＴ＿ＲＥＴＲＩＥＶＡＬ＿ＰＯＩＮＴＥＲＳなどのようなオペレーティングシステムアプリケーションのインターフェースを通して、ディスクにおける被スキャンファイルの位置情報を取得することができる。当然のことながら、既存のいずれか一つのディスクにおける被スキャンファイル位置情報を取得できる方法を用いてもかまわない。これについては本実施形態に制限されない。
【００６１】
任意選択で、本実施形態の一実施例において、点線枠に示すように、ステップ２０４の後、前記方法は、前記被スキャンファイルのハードリンク数が１である場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得するステップ２０６を更に含む。これにより、ハードリンク数が１である被スキャンファイルのスキャン結果を取得することができる。
【００６２】
任意選択で、本実施形態の一実施例において、点線枠に示すように、ステップ２０６の後、前記方法は、任意選択で、前記被スキャンファイルのスキャン結果を取得した後、ファイルをトラバーサルする順序に従って次のスキャン対象となる被スキャンファイルを決定し、当該ファイルに対しステップ２００〜２０６に示す処理をすることができる。ここでは繰り返し述べない。
【００６３】
その中で、「前記被スキャンファイルのスキャン結果を取得した後」には、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得した後という状況が含まれるだけでなく、前記ファイル識別標識に基づいて前記記憶ユニットから前記被スキャンファイルのスキャン結果を照会して取得した後という状況も含まれる。
【００６４】
図３は本発明の実施形態に係るファイルをスキャンする別の方法のフローチャートである。図３に示すように、前記方法は、以下のステップを含む。
【００６５】
ステップ３００において、一つのファイルをトラバーサルすると、当該ファイルをスキャン対象となる被スキャンファイルとする。
【００６６】
ステップ３０１において、被スキャンファイルのハードリンク数を取得する。具体的な取得する方法については本実施形態に制限されない。
【００６７】
ステップ３０２において、前記ハードリンク数が１より大きいかどうかを判断し、１以下である場合、ステップ３０３を実行し、そうでなければ、ステップ３０４を実行する。
【００６８】
ステップ３０３において、スキャンエンジンを呼び出して被スキャンファイルをスキャンしてスキャン結果を取得してから、ステップ３００を実行する。その中で、スキャン結果は黒、白、灰色によって表記することができる。具体的には、白はスキャン結果が正常であることを表し、灰色はスキャン結果が正常であるかどうかがわからないことを表し、黒はスキャン結果が異常であることを表す。スキャン結果は、スキャン結果が黒であるときのウイルス名を更に含む。
【００６９】
より具体的には、本実施形態の一実施例において、スキャン結果は複数のスキャン記録を含み、各スキャン記録は番号（何件目のスキャン記録を表す）、ファイル識別標識、ファイル識別標識に対応するスキャン結果及びスキャン結果が黒であるときのウイルス名を含む。こういう実施例において、一件のスキャン記録のすべてのフィールドの内容を同時に保存する必要がない。例えば、初めに番号とファイル識別標識とを保存し、その後スキャン結果とウイルス名とを保存することができる。これにより、あるファイルを再びスキャン処理するとき、記憶ユニットに「初めて」のスキャン時に取得したスキャン結果の保存が完了していなくても、まずファイル識別標識に基づいてスキャンエンジンを呼び出してスキャン処理をやめることを確認した後、設定条件（例えば設定の遅延）の後で記憶ユニットからスキャン結果を取得する（例えば、ファイル識別標識に対応する番号によってスキャン結果を取得する）ことができる。
【００７０】
ステップ３０４において、パーティション（またはボリューム）における被スキャンファイルの開始クラスタ番号を取得する。又は、他の実施例において被スキャンファイルの開始セクター番号を取得する。
【００７１】
ステップ３０５において、ハードリンクのキャッシュを照会する。
【００７２】
ステップ３０６において、ハードリンクのキャッシュにパーティション（またはボリューム）における被スキャンファイルの開始クラスタ番号が保存されているかどうかを判断する。保存されている場合、被スキャンファイルを再びスキャン対象とすることになり、ステップ３０７を実行し、保存されていない場合、被スキャンファイルを初めてスキャン対象とすることになり、ステップ３０８とステップ３０９とを実行する。
【００７３】
ステップ３０７において、開始クラスタ番号によってハードリンクのキャッシュからスキャン結果を取得する。その後、ステップ３００を実行する。
【００７４】
ステップ３０８において、パーティション（まはたボリューム）における被スキャンファイルの開始クラスタ番号をハードリンクのキャッシュに保存する。
【００７５】
ステップ３０９において、スキャンエンジンを呼び出して被スキャンファイルをスキャンしてスキャン結果を取得する。その後ステップ３１０とステップ３００とを実行する。
【００７６】
ステップ３１０において、スキャン結果をハードリンクのキャッシュに保存する。
【００７７】
本実施形態において、既に言及した実施例１の手法を用いて被スキャンファイルを初めてスキャン対象とするかどうかを確認する。
【００７８】
本発明の別の実施形態において、既に言及した実施例２の手法を用いて被スキャンファイルを初めてスキャン対象とするかどうかを確認する。そのプロセス全体と図３に示す実施形態とが違う点は、ステップ３０６においてハードリンクのキャッシュにパーティション（まはたボリューム）における被スキャンファイルのクラスタ番号が保存されていない場合、ステップ３０６の後で、順次にステップ３０８とステップ３０９とを実行し、更に、ステップ３０９の後でステップ３１０とステップ３００とを実行することである。図３に示す実施形態と比較すれば、本実施形態はファイルをスキャンする時間が増える可能性がある。
【００７９】
以上は図１〜図３を参照しながら本発明によるファイルをスキャンする方法を説明してきた。以下は図面を参照しながら本発明によるファイルをスキャンする装置を説明する。
【００８０】
図４は本発明の実施形態に係るファイルをスキャンする装置のブロック図である。図４に示すように、ファイルをスキャンする装置４は、ハードリンク数取得ユニット４１と、第一処理ユニット４２と、記憶ユニット４３と、第二処理ユニット４４とを含む。以下は別々に説明する。
【００８１】
ハードリンク数取得ユニット４１は、スキャン対象となる被スキャンファイルのハードリンク数を取得する。具体的な取得方法は、例えばオペレーティングシステムアプリケーションのインターフェースを通して取得するなどのような既存のいずれの方法であってもよい。これについて本発明は制限されない。
【００８２】
第一処理ユニット４２は、被スキャンファイルのハードリンク数が１より大きい場合、被スキャンファイルを初めてスキャン対象とするとき、スキャンエンジンを呼び出して被スキャンファイルをスキャンして前記被スキャンファイルのスキャン結果を取得し、被スキャンファイルを一意的に識別するファイル識別標識及び対応する被スキャンファイルのスキャン結果を記憶ユニット４３に保存する。
【００８３】
記憶ユニット４３は、前記ファイル識別標識と前記スキャン結果とを保存し、キャッシュの形式で保存することが好ましい。
【００８４】
第二処理ユニット４４は、被スキャンファイルのハードリンク数が１より大きい場合、被スキャンファイルを再びスキャン対象とするとき、前記ファイル識別標識に基づいて記憶ユニット４３から被スキャンファイルのスキャン結果を照会して取得する。
【００８５】
本発明の実施形態に係るファイルをスキャンする装置４は、ファイルのハードリンク数に基づいて被スキャンファイルを処理することができる。具体的には、ハードリンク数が１より大きいファイルに対し、それを初めてスキャンするファイルとするときのみスキャン処理をし、それを再びスキャンするファイルとするとき、繰り返してスキャン処理せず、直接初めてのスキャン結果を取得することにより、スキャン過程におけるＩＯコスト及びＣＰＵコストを下げ、ファイルのスキャン効率を向上させることができる。
【００８６】
図５Ａは本発明の実施形態に係るファイルをスキャンする装置の別のブロック図である。図５Ａに示すように、ファイルをスキャンする装置５は、ハードリンク数取得ユニット４１、第一処理ユニット４２、記憶ユニット４３及び第二処理ユニット４４の他に、メモリにおける前記被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定する標識決定ユニット４５を更に含む。
【００８７】
任意選択で、本発明の実施形態の一つの実施例において、図５Ｂに示すように、標識決定ユニット４５は、ディスクにおける被スキャンファイルの記憶位置を取得しファイル識別標識とする第一取得モジュール４５１を含む。
【００８８】
任意選択で、本発明の実施形態の一つの実施例において、図５Ｃに示すように、標識決定ユニット４５は、被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける被スキャンファイルの記憶位置を取得する第二取得モジュール４５２と、被スキャンファイルが記憶されるディスクのディスク標識及びディスクにおける被スキャンファイルの記憶位置に基づいて前記ファイル識別標識を決定する標識決定モジュール４５３とを更に含む。
【００８９】
図６は本発明の実施形態に係る第一処理ユニットのブロック図である。具体的には、図４又は図５に示すファイルをスキャンする装置における第一処理ユニット４２のブロック図である。図６に示すように、第一処理ユニット４２は、ファイル識別標識に基づいて記憶ユニット４３を照会し、記憶ユニット４３にファイル識別標識が保存されていないと確認したとき、スキャンエンジンに対する呼び出しをトリガーする第一トリガーモジュール４２１を含む。
【００９０】
任意選択で、点線枠に示すように、第一処理ユニット４２は、ファイル識別標識を記憶ユニット４３に保存する標識保存モジュール４２２と、第一処理ユニット４２によって被スキャンファイルのスキャン結果を取得した後、スキャン結果を前記記憶ユニット４３に保存する結果保存モジュール４２３とを含む。この場合、第一トリガーモジュール４２１は、更に、記憶ユニット４３にファイル識別標識が保存されていないと確認したとき、標識保存モジュール４２２をトリガーするように構成されている。つまり、第一処理ユニット４２は、記憶ユニット４３にファイル識別標識が保存されていないと確認したとき、スキャンエンジンの呼び出しとファイル識別標識の記憶とを別々に実行する。当然のことながら、他の実施例において、第一処理ユニット４２は、記憶ユニット４３にファイル識別標識が保存されていないことを確認したとき、ファイル識別標識の記憶とスキャンエンジンの呼び出しとを順次に実行することもできる。
【００９１】
図７は本発明の実施形態に係る第二処理ユニットのブロック図である。具体的には、図４又は図５に示すファイルをスキャンする装置における第二処理ユニット４４のブロック図である。図７に示すように、第二処理ユニット４４は、ファイル識別標識に基づいて記憶ユニット４３から被スキャンファイルのスキャン結果を照会して取得する結果取得モジュール４４２と、ファイル識別標識に基づいて記憶ユニット４３を照会して記憶ユニット４３にファイル識別標識が保存されていると確認したとき結果取得モジュール４４２をトリガーする第二トリガーモジュール４４１とを含む。
【００９２】
第一トリガーモジュール４２１と第二トリガーモジュール４４１とは一つのモジュールに集成することができ、ファイル識別標識に基づいて記憶ユニット４３を照会するように用いることができる。記憶ユニット４３に当該ファイル識別標識が保存されている場合、記憶ユニット４３からスキャン結果を取得する処理を実行するように第二処理ユニット４４をトリガーし、記憶ユニット４３にファイル識別標識が保存されていない場合、ファイル識別標識の保存とスキャン結果を取得して保存する処理とを実行するように第一処理ユニット４２をトリガーする。
【００９３】
図８は本発明の実施形態に係るファイルをスキャンする装置の別のブロック図である。図８に示すように、ファイルをスキャンする装置８は、ハードリンク数取得ユニット４１、第一処理ユニット４２、記憶ユニット４３及び第二処理ユニット４４の他に、前記被スキャンファイルのハードリンク数が１である場合、スキャンエンジンを呼び出して前記被スキャンファイルをスキャンし前記被スキャンファイルのスキャン結果を取得する第三処理ユニット４６を更に含む。
【００９４】
任意選択で、点線枠に示すように、ファイルをスキャンする装置８は、前記装置によって前記被スキャンファイルのスキャン結果を取得した後、次のスキャン対象となる被スキャンファイルを決定するスキャン対象決定ユニット４７を更に含むことができる。
【００９５】
当然のことながら、本実施形態において、ファイルをスキャンする装置８は既に言及した標識決定ユニット４５を更に含むこともできる。ここでは繰り返し述べない。
【００９６】
装置の実施形態における各ユニット及びモジュールの処理方法、データフローの方向、関連の専門用語、応用状況などに対する説明は、方法の実施形態を参照する。ここでは繰り返し述べない。
【００９７】
以上の実施形態の説明を通して、本発明はソフトウェアとハードウェアプラットフォームとを結合して実現できることを当業者は理解すべきである。こういう理解に基づき、本発明の技術的側面の背景技術に対する貢献の全部或いは一部がソフトウェア製品として反映され、当該コンピュータソフトウェア製品は、ＲＯＭ／ＲＡＭ、ディスク、ＣＤ等の記憶媒体に格納され、一台のコンピュータ機器（パソコン、サーバ、スマートフォンあるいはネットワーク装置等）に本発明の実施形態又は実施形態の一部に説明された方法を実行させる若干の命令を含む。
【００９８】
本発明の明細書に使われる用語及び表現は例示的なものであり、本発明を制限するように解釈される事は出来ない。当業者が理解すべきことは、本発明が記載された実施形態の基本原理から逸脱しない範囲で、これらの実施形態の詳細に対し様々な変更できることである。そのため、本発明の範囲は特許請求の範囲のみによって決められ、特許請求の範囲において特記した場合を除き、すべての用語はもっとも広い合理的な意味であると理解しなければならない。
【図１】
2017511515.tif 000003
【図２】
2017511515.tif 000004
【図３】
2017511515.tif 000005
【図４】
2017511515.tif 000006
【図５Ａ】
2017511515.tif 000007
【図５Ｂ】
2017511515.tif 000008
【図５Ｃ】
2017511515.tif 000009
【図６】
2017511515.tif 000010
【図７】
2017511515.tif 000011
【図８】
2017511515.tif 000012
【国際調査報告】
2017511515.tif 000013
2017511515.tif 000014
2017511515.tif 000015
2017511515.tif 000016