病毒扫描引擎 API
上次修改时间: 2015年3月9日
适用范围: SharePoint Foundation 2010
本文内容
IMso_VirusScanner 接口
Initialize 方法
Scan 方法
Clean 方法
ILockBytes 接口
备注
在 Microsoft SharePoint Foundation 中,病毒扫描引擎 API 已过时。为了实现向后兼容,SharePoint Foundation 中仍然存在该 API。
本主题介绍为扫描和清理 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 方法执行所有初始化和资源分配。
在扫描或清理完成时间不确定时,不调用任何操作系统 API。示例包括但不限于文件 I/O 和注册表操作。
Initialize 方法
对扫描程序的所有实例分别执行初始化,并返回有关当前 IMso_VirusScanner 实例的信息。
语法
STDMETHOD Initialize (
BSTR *pbstrProduct,
DWORD *pdwProductVersion
);
参数
参数 |
说明 |
---|---|
pbstrProduct [输出] |
指定接收标识供应商的应用程序的字符串的变量地址,如"Microsoft Office Word 2007 (12.2627.2625)"中的地址。 |
pdwProductVersion [输出] |
指定接收扫描程序当前使用的特征文件版本的变量地址。 |
返回值
成功:如果初始化成功,则返回 S_OK。
失败:返回错误代码。
备注
必须在创建 IMso_VirusScanner 实例之后、调用 Scan 或 Clean 方法之前,立即为每个实例调用一次此方法。
Scan 方法
扫描内容,并返回感染状态和病毒信息(如果有)。
语法
STDMETHOD Scan (
ILockBytes *pilb,
DWORD *pdwStatus,
BSTR *pbstrVirusInfo
);
参数
参数 |
说明 |
---|---|
pilb [输入] |
包含要扫描的内容的对象。此对象包含有关文件名和文件类型的信息。 |
pdwStatus [输出] |
指定接收内容感染状态的变量地址。 |
pbstrVirusInfo [输出] |
在内容受到感染时指定接收包含病毒相关信息的字符串的变量地址。如果扫描程序检测到多个病毒,则需要连接这些字符串并用 Tab (ASCII 9) 符将它们分隔开。 |
主机使用 SysFreeString 函数释放返回值。
返回值
成功:如果操作成功完成并且 pdwStatus 和 pbstrVirusInfo 参数包含有效信息,则返回 S_OK。
失败:返回错误代码。
备注
主机同时从多个线程调用此方法。扫描程序应同时执行请求而无需进行内部请求序列化。
Clean 方法
尝试从内容中移除病毒感染。
语法
STDMETHOD Clean (
ILockBytes *pilbInput,
ILockBytes *pilbOutput,
DWORD *pdwStatus,
BSTR *pbstrVirusInfo
);
参数
参数 |
说明 |
---|---|
pilbInput [输入] |
包含要修复的内容的对象。此对象包含有关文件名和文件类型的信息。 |
pilbOutput [输入] |
接收已修复数据的对象。在调用方法时,pilbInput 和 pilbOutput 的内容相同,因此,如果可能,扫描程序需要优化 I/O 操作。 |
pdwStatus [输出] |
指定接收内容感染状态的变量地址。 |
pbstrVirusInfo [输出] |
在内容受到感染时指定接收包含病毒信息的字符串的变量地址。如果扫描程序检测到多个病毒,则需要连接这些字符串,最长可达缓冲区长度,并用 Tab (ASCII 9) 符将它们分隔开。 |
主机使用 SysFreeString 函数释放返回值。
返回值
成功:如果操作成功完成并且 pdwStatus、wzVirusInfo 和 pilbOutput 参数包含有效信息,则返回 S_OK。
备注
主机同时从多个线程调用此方法。扫描程序应同时执行请求而无需进行内部请求序列化。
ILockBytes 接口
ILockBytes 接口用于允许供应商提取有关文件的额外信息,其中可包括文件名、文件类型、文件大小等等。若需 MSDN 上有关此接口的完整介绍,请参阅 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 |
保留以供将来使用。 |