Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 2000.
//
// File: EBUFHDLR.HXX
//
// Contents: Class to manage entry buffers
//
// Classes: CEntryBufferHandler
//
// History: 18-Mar-93 AmyA Created.
//
//----------------------------------------------------------------------------
#pragma once
#ifdef DISPLAY_INCLUDES
#pragma message( "#include <" __FILE__ ">..." )
#endif
#include <pfilter.hxx>
#include <fdaemon.hxx>
#include "entrybuf.hxx"
class CKeyBuf; class CPidMapper;
//+---------------------------------------------------------------------------
//
// Class: CEntryBufferHandler
//
// Purpose: To prepare keys in the CEntryBuffer for passing into the
// volatile index
//
// History: 18-Mar-93 AmyA Created from portions of CWordList.
//
// Notes: This is where a call to the API to pass a pointer to a
// CEntryBuffer to CWordlist goes.
//
//----------------------------------------------------------------------------
class CEntryBufferHandler : INHERIT_UNWIND { DECLARE_UNWIND public:
CEntryBufferHandler( ULONG cbMemory, BYTE * buffer, CFilterDaemon& fDaemon, CiProxy & ciProxy, CPidMapper & pidMap );
void SetWid( WORKID wid );
void AddEntry( const CKeyBuf & key, OCCURRENCE occ );
void Done();
void FlushBuffer();
BOOL WordListFull() { return _wordListFull; }
void Init();
inline const ULONG GetFilteredBlockCount() const { return _cFilteredBlocks; }
void InitFilteredBlockCount( ULONG ulMaxFilteredBlocks ) { _cFilteredBlocks = 0; _ulMaxFilteredBlocks = ulMaxFilteredBlocks; }
inline BOOL StoreValue( CFullPropSpec const & prop, CStorageVariant const & var );
inline BOOL StoreSecurity( PSECURITY_DESCRIPTOR pSD, ULONG cbSD ); private:
ULONG _CurrentWidIndex; // Index of current workid.
CEntryBuffer _entryBuf;
BOOL _wordListFull; // set in FlushBuffer
CFilterDaemon & _filterDaemon; // all wordlist calls go to this
ULONG _cFilteredBlocks; // Number of filtered blocks through
// this buffer
ULONG _ulMaxFilteredBlocks; // Max number of blocks that can
// be filtered thru this buffer
};
//+---------------------------------------------------------------------------
//
// Member: CEntryBufferHandler::StoreValue
//
// Synopsis: Store a property value.
//
// Arguments: [prop] -- Property descriptor
// [var] -- Value
//
// Returns: TRUE if the property is in the schema
//
// History: 21-Dec-95 KyleP Created
//
//----------------------------------------------------------------------------
inline BOOL CEntryBufferHandler::StoreValue( CFullPropSpec const & prop, CStorageVariant const & var ) { BOOL fCanStore = TRUE; // err on the side of safety
_filterDaemon.FilterStoreValue( _CurrentWidIndex, prop, var, fCanStore ); return fCanStore; }
//+---------------------------------------------------------------------------
//
// Member: CEntryBufferHandler::StoreSecurity
//
// Synopsis: Store security information for a file.
//
// Arguments: [pSD] -- pointer to a security descriptor
// [cbSD] -- size in bytes of pSD
//
// History: 07 Feb 96 AlanW Created
//
//----------------------------------------------------------------------------
inline BOOL CEntryBufferHandler::StoreSecurity( PSECURITY_DESCRIPTOR pSD, ULONG cbSD ) { BOOL fCanStore; _filterDaemon.FilterStoreSecurity( _CurrentWidIndex, pSD, cbSD, fCanStore ); return fCanStore; }
|