135 lines
3.8 KiB
Plaintext
135 lines
3.8 KiB
Plaintext
|
//****************************************************************************
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// File: vrsscan.idl
|
||
|
//
|
||
|
// Contents: Interfaces for virus scanning
|
||
|
//
|
||
|
//****************************************************************************
|
||
|
|
||
|
#ifndef DO_NO_IMPORTS
|
||
|
import "objidl.idl";
|
||
|
import "oleidl.idl";
|
||
|
#endif
|
||
|
|
||
|
interface IVirusScanner;
|
||
|
interface IRegisterVirusScanEngine;
|
||
|
interface IVirusScanEngine;
|
||
|
|
||
|
[
|
||
|
uuid(5F47DB70-D9FE-11d0-9564-00609797EA4F), // LIBID_VIRUSSCAN
|
||
|
helpstring("Microsoft Virus Scanning Handlers 1.0"),
|
||
|
lcid(0x0000),
|
||
|
version(1.0)
|
||
|
]
|
||
|
library VIRUSSCAN
|
||
|
{
|
||
|
|
||
|
cpp_quote("// Virus Scan Error codes")
|
||
|
cpp_quote("#define VSCAN_E_NOPROVIDERS _HRESULT_TYPEDEF_(0x800D1001)")
|
||
|
cpp_quote("#define VSCAN_E_CHECKPARTIAL _HRESULT_TYPEDEF_(0x800D1002)")
|
||
|
cpp_quote("#define VSCAN_E_CHECKFAIL _HRESULT_TYPEDEF_(0x800D1003)")
|
||
|
cpp_quote("#define VSCAN_E_DELETEFAIL _HRESULT_TYPEDEF_(0x800D1004)")
|
||
|
cpp_quote("")
|
||
|
cpp_quote("// Virus Scanner Capabilities flags")
|
||
|
cpp_quote("#define VSC_LIKESISTREAM 0x00000001")
|
||
|
cpp_quote("#define VSC_LIKESFILE 0x00000002")
|
||
|
cpp_quote("#define VSC_LIKESHGLOBAL 0x00000004")
|
||
|
cpp_quote("#define VSC_HASMOREINFO 0x00000008")
|
||
|
cpp_quote("")
|
||
|
cpp_quote("// Virus Scan Engine Error codes")
|
||
|
cpp_quote("#define VSE_E_UNSUPPORTEDINPUTTYPE _HRESULT_TYPEDEF_(0x800D2001)")
|
||
|
cpp_quote("#define VSE_E_CHECKFAIL _HRESULT_TYPEDEF_(0x800D2002)")
|
||
|
cpp_quote("")
|
||
|
|
||
|
|
||
|
const USHORT MAX_DESCRIPTION = 128;
|
||
|
const USHORT MAX_URL_LENGTH = 2048;
|
||
|
|
||
|
|
||
|
typedef struct _tagVIRUSINFO
|
||
|
{
|
||
|
DWORD cbSize;
|
||
|
WCHAR wszVendorDescription[MAX_DESCRIPTION];
|
||
|
HICON hVendorIcon;
|
||
|
WCHAR wszVendorContactInfo[MAX_URL_LENGTH];
|
||
|
WCHAR wszVirusName[MAX_DESCRIPTION];
|
||
|
WCHAR wszVirusDescription[MAX_DESCRIPTION];
|
||
|
} VIRUSINFO;
|
||
|
typedef [unique] VIRUSINFO *LPVIRUSINFO;
|
||
|
|
||
|
cpp_quote("")
|
||
|
cpp_quote("#define SFV_DONTDOUI 0x00000002 ")
|
||
|
cpp_quote("#define SFV_DELETE 0x00000004 ")
|
||
|
cpp_quote("#define SFV_WANTVENDORICON 0x00000008 ")
|
||
|
cpp_quote("#define SFV_ENGINE_DOUI 0x00010000 ")
|
||
|
cpp_quote("")
|
||
|
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(4589BEE0-B4B1-11CF-AAFA-00AA00B6015C) // IID_IVirusScanner
|
||
|
]
|
||
|
interface IVirusScanner: IUnknown
|
||
|
{
|
||
|
HRESULT ScanForVirus(
|
||
|
[in] HWND hWnd,
|
||
|
[in] STGMEDIUM *pstgMedium,
|
||
|
[in] LPWSTR pwszItemDescription,
|
||
|
[in] DWORD dwFlags,
|
||
|
[in, out] LPVIRUSINFO pVirusInfo);
|
||
|
}
|
||
|
|
||
|
cpp_quote("#define REGISTERSCANNER_REREGISTER 1")
|
||
|
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(0825E060-B961-11CF-AAFA-00AA00B6015C) // IID_IRegisterVirusScanEngine
|
||
|
]
|
||
|
interface IRegisterVirusScanEngine: IUnknown
|
||
|
{
|
||
|
HRESULT RegisterScanEngine(
|
||
|
[in] REFCLSID rclsid,
|
||
|
[in] LPWSTR pwszDescription,
|
||
|
[in] DWORD dwFlags,
|
||
|
[in] DWORD dwReserved,
|
||
|
[in, out] DWORD *pdwCookie);
|
||
|
|
||
|
HRESULT UnRegisterScanEngine(
|
||
|
[in] REFCLSID rclsid,
|
||
|
[in] LPWSTR pwszDescription,
|
||
|
[in] DWORD dwFlags,
|
||
|
[in] DWORD dwReserved,
|
||
|
[in] DWORD dwCookie );
|
||
|
}
|
||
|
|
||
|
[
|
||
|
local,
|
||
|
object,
|
||
|
uuid(083DB180-B4A8-11CF-AAFA-00AA00B6015C) // IID_IVirusScanEngine
|
||
|
]
|
||
|
interface IVirusScanEngine: IUnknown
|
||
|
{
|
||
|
HRESULT ScanForVirus(
|
||
|
[in] HWND hWnd,
|
||
|
[in] STGMEDIUM *pstgMedium,
|
||
|
[in] LPWSTR pwszItemDescription,
|
||
|
[in] DWORD dwFlags,
|
||
|
[in] DWORD dwReserved,
|
||
|
[in, out] LPVIRUSINFO pVirusInfo);
|
||
|
|
||
|
HRESULT DisplayCustomInfo( void );
|
||
|
}
|
||
|
|
||
|
[
|
||
|
uuid(E88E5DE0-BD3E-11CF-AAFA-00AA00B6015C) // CLSID_VirusScan - the standard implementation
|
||
|
]
|
||
|
coclass VirusScan
|
||
|
{
|
||
|
[default] interface IVirusScanner;
|
||
|
}
|
||
|
|
||
|
}
|