109 lines
3.3 KiB
C++
109 lines
3.3 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1991 - 1998.
|
|
//
|
|
// File: FDRIVER.HXX
|
|
//
|
|
// Contents: Filter Driver
|
|
//
|
|
// Classes: CFilterDriver, CNonStoredProps
|
|
//
|
|
// History: 12-Apr-91 BartoszM Created
|
|
// 10-June-91 t-WadeR changed to use key repository
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include <ciintf.h>
|
|
#include <pfilter.hxx>
|
|
#include <frmutils.hxx>
|
|
|
|
class CDocCharacterization;
|
|
class CPropertyEnum;
|
|
class CFilterOplock;
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Class: CFilterDriver (fdr)
|
|
//
|
|
// Purpose: Load filters and create word list
|
|
//
|
|
// History: 12-Apr-91 BartoszM Created.
|
|
// 10-June-91 t-WadeR changed to use key repository
|
|
// 06-May-93 AmyA changed to handle one file at a time
|
|
// 02-Aug-93 AmyA changed to use IFilter interface
|
|
// 21-Oct-21 DwightKr Changed _path from CHAR to WCHAR
|
|
// Removed WCHAR * _prop
|
|
//
|
|
// Notes:
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class CDataRepository;
|
|
|
|
const cLCIDMax = 5;
|
|
|
|
class CFilterDriver
|
|
{
|
|
public:
|
|
CFilterDriver ( CDataRepository * drep,
|
|
ICiCAdviseStatus * pAdviseStatus,
|
|
ICiCFilterClient * pFilterClient,
|
|
CCiFrameworkParams & params,
|
|
CI_CLIENT_FILTER_CONFIG_INFO const & configInfo,
|
|
ULONG & cFilteredBlocks,
|
|
CNonStoredProps & NonStoredProps,
|
|
ULONG cbBuf );
|
|
|
|
STATUS FillEntryBuffer( BYTE const * pbDocName, ULONG cbDocName );
|
|
|
|
LARGE_INTEGER & GetFileSize () { return *((LARGE_INTEGER *) &_llFileSize); }
|
|
|
|
inline BOOL TooBigForDefault( LONGLONG const ll )
|
|
{
|
|
return( ll > _params.GetMaxFilesizeFiltered() );
|
|
}
|
|
|
|
private:
|
|
|
|
void FilterProperty( CStorageVariant const & var,
|
|
CFullPropSpec & ps,
|
|
CDataRepository & drep,
|
|
CDocCharacterization & docChar,
|
|
LCID locale );
|
|
|
|
void FilterObject( CPropertyEnum & propEnum,
|
|
CDataRepository & drep,
|
|
CDocCharacterization & docChar );
|
|
|
|
void FilterSecurity( ICiCOpenedDoc * Document,
|
|
CDataRepository & drep );
|
|
|
|
void LogOverflow( BYTE const * pbDocName, ULONG cbDocName );
|
|
|
|
void ReportFilterEmbeddingFailure( BYTE const * pbDocName, ULONG cbDocName );
|
|
|
|
void RegisterLocale(LCID locale);
|
|
|
|
CDataRepository * _drep;
|
|
|
|
STATUS _status;
|
|
XInterface<IFilter> _pIFilter;
|
|
LONGLONG _llFileSize;
|
|
ULONG & _cFilteredBlocks;
|
|
|
|
ICiCAdviseStatus * _pAdviseStatus;
|
|
ICiCFilterClient * _pFilterClient;
|
|
CI_CLIENT_FILTER_CONFIG_INFO const & _configInfo;
|
|
CCiFrameworkParams & _params;
|
|
CNonStoredProps & _NonStoredProps;
|
|
ULONG _cbBuf;
|
|
ULONG _attrib;
|
|
LCID _alcidSeen[cLCIDMax];
|
|
int _cLCIDs;
|
|
LCID _lcidSystemDefault;
|
|
};
|
|
|