//**************************************************************************** // // 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; } }