ウイルス スキャン エンジン API
最終更新日: 2015年3月9日
適用対象: SharePoint Foundation 2010
この記事の内容
IMso_VirusScanner インターフェイス
Initialize メソッド
Scan メソッド
Clean メソッド
ILockBytes インターフェイス
注意
ウイルス スキャン エンジン API は、Microsoft SharePoint Foundation ではサポートされていません。API が SharePoint Foundation に存在しているのは、下位互換を保つためです。
ここでは、Windows SharePoint Services 3.0 内のドキュメントのスキャンおよびクリーンに対応するウイルス スキャン エンジン (VSE) を構築するために必要な API について説明します。VSE およびその要件の概要については、「概要 : ウイルス スキャン エンジン API の実装」を参照してください。
IMso_VirusScanner インターフェイス
以下の表は、IMso_VirusScanner インターフェイスが提供するメソッドについて説明しています。
メソッド |
説明 |
---|---|
Initialize |
スキャナのインスタンス単位の初期化をすべて実行し、現在の IMso_VirusScanner インスタンスに関する情報を返します。 |
Scan |
ストリームのコンテンツをスキャンし、感染の状態とウィルス情報 (取得できた場合) を返します。 |
Clean |
コンテンツからウィルス感染を取り除きます。 |
備考 :
ホスト アプリケーションが IMso_VirusScanner オブジェクトをインスタンス化し、以下のタスクを実行します。
ウィルス検出プログラムをフリー スレッド化したアパートメントの INPROC_SERVER としてインスタンス化します。
最初に Initialize メソッドを呼び出してから、他のメソッドを呼び出します。
Release を呼び出す前に、未解決の Scan 要求がないことを確認します。
Initialize メソッドが完了した後、Release を呼び出す前に、複数のスレッドから Scan または Clean を同時に呼び出します。
対応する検出プログラムは、IMso_VirusScanner インターフェイスのインスタンスで、以下のタスクを実行します。
Initialize メソッドを使用したすべての初期化とリソースの割り当て。
NO はスキャンまたはクリーニング中に、不確かな完了時間での任意のオペレーティング システム API を呼び出します。例には、ファイルの I/O 、レジストリ操作、およびその他が含まれます。
Initialize メソッド
スキャナのインスタンス単位の初期化をすべて実行し、現在の IMso_VirusScanner インスタンスに関する情報を返します。
構文
STDMETHOD Initialize (
BSTR *pbstrProduct,
DWORD *pdwProductVersion
);
パラメータ
パラメータ |
説明 |
---|---|
pbstrProduct [OUT] |
"Microsoft Office Word 2007 (12.2627.2625)" のようなベンダのアプリケーションを識別する文字列を受け取る変数のアドレスを指定します。 |
pdwProductVersion [OUT] |
検出プログラムが現在使用している署名ファイルのバージョンを受け取る変数のアドレスを指定します。 |
戻り値
成功 : 初期化に成功した場合、S_OK を返します。
失敗 : エラー コードを返します。
備考 :
このメソッドは、インスタンスが作成された直後、Scan メソッドまたは Clean メソッドを呼び出す前に、IMso_VirusScanner インスタンスごとに 1 回呼び出す必要があります。
Scan メソッド
コンテンツをスキャンし、感染の状態とウィルス情報 (取得できた場合) を返します。
構文
STDMETHOD Scan (
ILockBytes *pilb,
DWORD *pdwStatus,
BSTR *pbstrVirusInfo
);
パラメータ
パラメータ |
説明 |
---|---|
pilb [IN] |
スキャンされるコンテンツを含むオブジェクトです。このオブジェクトにはファイル名とファイルの種類に関する情報が含まれます。 |
pdwStatus [OUT] |
コンテンツの感染状態を受け取る変数のアドレスを指定します。 |
pbstrVirusInfo [OUT] |
コンテンツが感染している場合、ウィルスに関する情報を含む文字列を受け取る変数のアドレスを指定します。検出プログラムで複数のウィルスが検出された場合、文字列を連結し、TAB (ASCII 9) 文字で区切る必要があります。 |
ホストは SysFreeString 関数を使用して、戻り値を解放します。
戻り値
成功 : 操作が正常に完了した場合、S_OK が返され、pdwStatus および pbstrVirusInfo パラメータに有効な情報が含まれます。
失敗 : エラー コードを返します。
備考 :
ホストは、同時に複数のスレッドからこのメソッドを呼び出します。検出プログラムは、要求を内部でシリアル化することなく、同時に実行することを要求されます。
Clean メソッド
コンテンツからウィルス感染を取り除きます。
構文
STDMETHOD Clean (
ILockBytes *pilbInput,
ILockBytes *pilbOutput,
DWORD *pdwStatus,
BSTR *pbstrVirusInfo
);
パラメータ
パラメータ |
説明 |
---|---|
pilbInput [IN] |
修復されるコンテンツを含むオブジェクトです。このオブジェクトにはファイル名とファイルの種類に関する情報が含まれます。 |
pilbOutput [IN] |
修復されたデータを受け取るオブジェクトです。メソッドが呼び出された時点では、pilbInput と pilbOutput のコンテンツは同一なので、可能な場合は、検出プログラムの I/O 操作を最適化する必要があります。 |
pdwStatus [OUT] |
コンテンツの感染状態を受け取る変数のアドレスを指定します。 |
pbstrVirusInfo [OUT] |
コンテンツが感染している場合、ウィルスに関する情報を含む文字列を受け取る変数のアドレスを指定します。検出プログラムで複数のウィルスが検出された場合、TAB (ASCII 9) 文字で区切りながら、バッファの長さまでの文字列を連結する必要があります。 |
ホストは SysFreeString 関数を使用して、戻り値を解放します。
戻り値
成功 : 操作が正常に完了した場合、S_OK が返され、pdwStatus、wzVirusInfo、および pilbOutput パラメータに有効な情報が含まれます。
備考 :
ホストは、同時に複数のスレッドからこのメソッドを呼び出します。検出プログラムは、要求を内部でシリアル化することなく、同時に実行することを要求されます。
ILockBytes インターフェイス
ILockBytesILockBytesILockBytes ILockBytes
構文
typedef struct tagSTATSTG {
LPWSTR pwcsName;
DWORD type;
ULARGE_INTEGER cbSize;
FILETIME mtime;
FILETIME ctime;
FILETIME atime;
DWORD grfMode;
DWORD grfLocksSupported;
CLSID clsid;
DWORD grfStateBits;
DWORD reserved;
} STATSTG;
メンバ
メンバ |
説明 |
---|---|
pwcsName |
名前を含む NULL で終わる Unicode 文字列を指すポインタです。この文字列用のスペースは、COM CoTaskMemFree 関数を使用するのと同様に、呼び出されたメソッドによって割り振られ、呼び出し元によって解放されます。STATSTG 構造を返すメソッドを呼び出すときに STATFLAG_NONAME 値を指定することで、このメンバを返さないように指定できます。ただし、IEnumSTATSTG::Next メソッドを呼び出す場合は、この値を指定する方法がないので、指定できません。 |
type |
記憶域オブジェクトの種類を示します。この値は、STGTY 列挙内の値のいずれかになります。 |
cbSize |
ストリームまたはバイト配列のサイズをバイト数で指定します。 |
mtime |
この記憶域、ストリーム、またはバイト配列が最後に変更された時刻を示します。 |
ctime |
この記憶域、ストリーム、またはバイト配列が作成された時刻を示します。 |
atime |
この記憶域、ストリーム、またはバイト配列が最後にアクセスされた時刻を示します。 |
grfMode |
オブジェクトが開かれたときに指定されたアクセス モードを示します。このメンバは、Stat メソッドを呼び出すときのみ有効です。 |
grfLocksSupported |
ストリームまたはバイト配列によってサポートされている地域ロックの種類を指定します。指定できるのは、LOCKTYPE 列挙内にある値のいずれかです。このメンバは、記憶域オブジェクトには使用されません。 |
clsid |
記憶域オブジェクトのクラス識別子を示します。新しい記憶域オブジェクトの場合は、CLSID_NULL に設定します。このメンバは、ストリームまたはバイト配列には使用されません。 |
grfStateBits |
記憶域オブジェクトの現在の状態ビット、つまり IStorage::SetStateBits メソッドによって最後に設定された値を示します。このメンバは、ストリームまたはバイト配列には無効です。 |
reserved |
今後使用するために予約されています。 |