1467 lines
49 KiB
Plaintext
1467 lines
49 KiB
Plaintext
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1996 - 2000.
|
||
|
//
|
||
|
// File: ciintf.idl
|
||
|
//
|
||
|
// Contents: Content Index Framework interfaces definition
|
||
|
//
|
||
|
// History: Nov-11-1996 SrikantS Created
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
#ifdef IMPORT_IDL_DEPENDENTS
|
||
|
import "oaidl.idl";
|
||
|
import "filter.idl";
|
||
|
#endif
|
||
|
|
||
|
#include "idlmulti.h"
|
||
|
|
||
|
const ULONG CI_DEFAULT_PID = 0x0;
|
||
|
const ULONG CI_INVALID_PID = 0xffffffff;
|
||
|
const ULONG CI_VOLID_USN_NOT_ENABLED = 0x0;
|
||
|
|
||
|
typedef enum tagCI_GLOBAL_CONSTANTS
|
||
|
{
|
||
|
CI_LOW_RESOURCE = 1,
|
||
|
CI_RESET_UPDATES = 2
|
||
|
|
||
|
} CI_GLOBAL_CONSTANTS;
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCDocName
|
||
|
//
|
||
|
// Description : Interface that encapsulates a document name.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(76615076-3C2B-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCDocName : IUnknown
|
||
|
{
|
||
|
SCODE Init( [in, size_is(cbName)] BYTE const * pbName,
|
||
|
[in] ULONG cbName );
|
||
|
|
||
|
SCODE Set( [in] ICiCDocName const * pICiCDocName );
|
||
|
|
||
|
SCODE Clear( void );
|
||
|
|
||
|
SCODE IsValid( void ) const;
|
||
|
|
||
|
SCODE Duplicate( [out] ICiCDocName ** ppICiCDocName ) const;
|
||
|
|
||
|
SCODE Get( [out, size_is(*pcbName)] BYTE * pbName,
|
||
|
[in,out] ULONG *pcbName ) const;
|
||
|
|
||
|
SCODE GetNameBuffer( [out] BYTE const ** ppName,
|
||
|
[out] ULONG * pcbName );
|
||
|
|
||
|
SCODE GetBufSizeNeeded( [out] ULONG * pcbName ) const;
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCOpenedDoc
|
||
|
//
|
||
|
// Description : Represents an opened document which can be used to retrieve
|
||
|
// property sets and properties.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(151EDFBE-3C2F-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCOpenedDoc : IUnknown
|
||
|
{
|
||
|
SCODE Open( [in,size_is(cbDocName)] BYTE const * pbDocName,
|
||
|
[in] ULONG cbDocName );
|
||
|
|
||
|
SCODE Close( void );
|
||
|
|
||
|
SCODE GetDocumentName( [out] ICiCDocName ** ppICiDocName );
|
||
|
|
||
|
SCODE GetStatPropertyEnum( [out] IPropertyStorage ** ppIPropStorage );
|
||
|
|
||
|
SCODE GetPropertySetEnum( [out] IPropertySetStorage ** ppIPropSetStorage );
|
||
|
|
||
|
SCODE GetPropertyEnum( [in] REFFMTID GuidPropSet,
|
||
|
[out] IPropertyStorage ** ppIPropStorage );
|
||
|
|
||
|
SCODE GetIFilter( [out] IFilter ** ppIFilter );
|
||
|
|
||
|
SCODE GetSecurity( [out, size_is(*pcbData)] BYTE * pbData,
|
||
|
[in,out] ULONG * pcbData );
|
||
|
|
||
|
SCODE IsInUseByAnotherProcess( [out] BOOL *pfInUse );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiAdminParams
|
||
|
//
|
||
|
// Description : sets/gets CI configuration parameters.
|
||
|
//
|
||
|
// History : 19 Oct 1998 sundarA : added CI_AP_IS_ENUM_ALLOWED
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
LOCAL_INTERFACE(a82d48c6-3f0f-11d0-8c91-0020af1d740e)
|
||
|
interface ICiAdminParams : IUnknown
|
||
|
{
|
||
|
//
|
||
|
// Enumerated values for the various admin parameters that can be set.
|
||
|
//
|
||
|
typedef enum tagCI_ADMIN_PARAMS
|
||
|
{
|
||
|
CI_AP_MERGE_INTERVAL, // Sleep time between merges
|
||
|
CI_AP_MAX_UPDATES, // Max # of updates passed by catalog
|
||
|
CI_AP_MAX_WORDLISTS, // Max # of word lists that can exist
|
||
|
CI_AP_MIN_SIZE_MERGE_WORDLISTS,// Min combined size of wordlists
|
||
|
|
||
|
CI_AP_MAX_WORDLIST_SIZE, // Max size at which docs can be added
|
||
|
CI_AP_MIN_WORDLIST_MEMORY, // Min free mem for wordlist creation
|
||
|
CI_AP_LOW_RESOURCE_SLEEP, // Time to wait after low resource condition
|
||
|
CI_AP_MAX_WORDLIST_MEMORY_LOAD,// Max mem load for wordlist creation
|
||
|
|
||
|
CI_AP_MAX_FRESH_COUNT, // Max fresh list entries before mmerge
|
||
|
CI_AP_MAX_SHADOW_INDEX_SIZE, // Max combined size of shadow indexes
|
||
|
CI_AP_MIN_DISK_FREE_FORCE_MERGE,// Min disk free before a mmerge is forced
|
||
|
CI_AP_MAX_SHADOW_FREE_FORCE_MERGE, // Max space for shadow indexes (% free space)
|
||
|
|
||
|
CI_AP_MAX_INDEXES, // Maximum number of indexes (persistent or wordlist)
|
||
|
CI_AP_MAX_IDEAL_INDEXES, // Maximum number of indexes in an 'ideal' system.
|
||
|
CI_AP_MIN_MERGE_IDLE_TIME, // Minumum idle time to perform annealing merge.
|
||
|
CI_AP_MAX_PENDING_DOCUMENTS, // Max pending docs for property queries
|
||
|
|
||
|
CI_AP_MASTER_MERGE_TIME, // Time for queue master merge
|
||
|
CI_AP_MAX_QUEUE_CHUNKS, // # of chunks in in-memory change list
|
||
|
CI_AP_MASTER_MERGE_CHECKPOINT_INTERVAL, // # of bytes to process before Checkpointing
|
||
|
CI_AP_FILTER_BUFFER_SIZE, // Mem buf size used by CI filter
|
||
|
|
||
|
CI_AP_FILTER_RETRIES, // # of attempts to filter a document
|
||
|
CI_AP_FILTER_RETRY_INTERVAL, // # of minutes between retrying an open doc
|
||
|
CI_AP_MIN_IDLE_QUERY_THREADS, // Min number of idle query threads to maintain
|
||
|
CI_AP_MAX_ACTIVE_QUERY_THREADS,// Maximum number of query threads to allow
|
||
|
|
||
|
CI_AP_MAX_QUERY_TIMESLICE, // Query timeslice (if waiting queries)
|
||
|
CI_AP_MAX_QUERY_EXECUTION_TIME,// Maximum query execution time (if waiting queries)
|
||
|
CI_AP_MAX_RESTRICTION_NODES, // Maximum normalized restriction nodes
|
||
|
CI_AP_CLUSTERINGTIME, // Time for clustering
|
||
|
|
||
|
CI_AP_MAX_FILESIZE_MULTIPLIER, // Largest amount of data from single file
|
||
|
CI_AP_DAEMON_RESPONSE_TIMEOUT, // Timeout waiting for response
|
||
|
CI_AP_FILTER_DELAY_INTERVAL, // Number of seconds the filter thread should wait
|
||
|
// if there are too few documents. (slm hack)
|
||
|
CI_AP_FILTER_REMAINING_THRESHOLD,
|
||
|
// Number of documents below which filter will
|
||
|
// introduce a delay
|
||
|
|
||
|
CI_AP_MAX_CHARACTERIZATION, // Maximum size in CWC of the
|
||
|
// characterization generated
|
||
|
|
||
|
CI_AP_MAX_FRESH_DELETES, // Maximum number of uncommitted delete entries
|
||
|
// before a delete merge is initiated.
|
||
|
|
||
|
CI_AP_MAX_WORDLIST_IO, // Greater than this amount of I/O activity will
|
||
|
// delay new wordlist creation. Units: KB/Sec
|
||
|
|
||
|
CI_AP_WORDLIST_RESOURCE_CHECK_INTERVAL,
|
||
|
// I/O and low memory resource threshold check
|
||
|
// performed at most once in this number of
|
||
|
// seconds. Units: Seconds
|
||
|
|
||
|
CI_AP_STARTUP_DELAY, // Milliseconds after boot when work can begin
|
||
|
|
||
|
CI_AP_GENERATE_CHARACTERIZATION, // TRUE if characterization should be generated.
|
||
|
|
||
|
CI_AP_MIN_WORDLIST_BATTERY, // Percentage of battery power required to generate wordlists
|
||
|
|
||
|
|
||
|
CI_AP_THREAD_PRIORITY_MERGE, // Priority of merge thread
|
||
|
CI_AP_THREAD_PRIORITY_FILTER, // Priority of update/filter thread
|
||
|
CI_AP_THREAD_CLASS_FILTER, // Priority class of the filter thread.
|
||
|
CI_AP_EVTLOG_FLAGS, // Flags for event log
|
||
|
|
||
|
CI_AP_MISC_FLAGS, // Miscellaneous Flags
|
||
|
CI_AP_GENERATE_RELEVANT_WORDS, // Set to TRUE if relevant words should be generated
|
||
|
CI_AP_FFILTER_FILES_WITH_UNKNOWN_EXTENSIONS,
|
||
|
// Flag indicating if files with unknown
|
||
|
// extensions should be filtered.
|
||
|
|
||
|
CI_AP_FILTER_DIRECTORIES, // Should queries return directories?
|
||
|
CI_AP_FILTER_CONTENTS, // Flag indicating if contents should be filtered
|
||
|
CI_AP_MAX_FILESIZE_FILTERED, // Maximum size of a file with unknown filter that will
|
||
|
// be filtered. Unit: Kilobytes
|
||
|
CI_AP_MIN_CLIENT_IDLE_TIME, // A client can afford to be idle for at least this many
|
||
|
// seconds before possibly getting disconnected.
|
||
|
|
||
|
CI_AP_MAX_DAEMON_VM_USE, // Maximum amount of pagefile, in KB, used by out-of-process daemon.
|
||
|
|
||
|
CI_AP_SECQ_FILTER_RETRIES, // # of attempts to filter a document in secondary Queue
|
||
|
|
||
|
CI_AP_WORDLIST_USER_IDLE, // User idle time to generate wordlists
|
||
|
|
||
|
CI_AP_IS_ENUM_ALLOWED, // Admin parameter for allowing enumeration
|
||
|
|
||
|
CI_AP_MIN_DISK_SPACE_TO_LEAVE, // Number of megabytes to leave on disk
|
||
|
|
||
|
CI_AP_MAX_DWORD_VAL, // THIS MUST BE THE LAST DWORD PARAM ALWAYS
|
||
|
|
||
|
//
|
||
|
// Values which don't fit in DWORD must be declared here.
|
||
|
//
|
||
|
|
||
|
CI_AP_MAX_VAL // THIS MUST BE THE LAST IN THE ENUMS
|
||
|
|
||
|
} CI_ADMIN_PARAMS;
|
||
|
|
||
|
//
|
||
|
// Enumerated values for types of "high-level" content index
|
||
|
// configuration.
|
||
|
//
|
||
|
typedef enum tagCI_CONFIG_TYPE
|
||
|
{
|
||
|
CI_CONFIG_DEFAULT = 0x0,
|
||
|
CI_CONFIG_OPTIMIZE_FOR_SPEED = 0x1,
|
||
|
CI_CONFIG_OPTIMIZE_FOR_SIZE = 0x2,
|
||
|
CI_CONFIG_OPTIMIZE_FOR_DEDICATED_INDEXING = 0x4,
|
||
|
CI_CONFIG_OPTIMIZE_FOR_DEDICATED_QUERYING = 0x8,
|
||
|
CI_CONFIG_OPTIMIZE_FOR_DEDICATED_INDEX_QUERY = 0x10,
|
||
|
CI_CONFIG_OPTIMIZE_FOR_MULTIPURPOSE_SERVER = 0x20
|
||
|
|
||
|
} CI_CONFIG_TYPE;
|
||
|
|
||
|
SCODE SetValue( [in] CI_ADMIN_PARAMS param,
|
||
|
[in] DWORD dwValue );
|
||
|
|
||
|
SCODE SetParamValue( [in] CI_ADMIN_PARAMS param,
|
||
|
[in] PROPVARIANT const * pVarValue );
|
||
|
|
||
|
SCODE SetValues( ULONG nParams,
|
||
|
[in, size_is(nParams)] const PROPVARIANT * aParamVals,
|
||
|
[in, size_is(nParams)] const CI_ADMIN_PARAMS * aParamNames );
|
||
|
|
||
|
SCODE GetValue( [in] CI_ADMIN_PARAMS param,
|
||
|
[out] DWORD * pdwValue );
|
||
|
|
||
|
SCODE GetInt64Value( [in] CI_ADMIN_PARAMS param,
|
||
|
[out] __int64 * pValue );
|
||
|
|
||
|
SCODE GetParamValue( [in] CI_ADMIN_PARAMS param,
|
||
|
[out] PROPVARIANT ** ppVarValue );
|
||
|
|
||
|
SCODE IsSame( [in] CI_ADMIN_PARAMS param,
|
||
|
[in] PROPVARIANT const * pVarValue,
|
||
|
[out] BOOL * pfSame );
|
||
|
|
||
|
SCODE SetConfigType( [in] CI_CONFIG_TYPE configType );
|
||
|
|
||
|
SCODE GetConfigType( [out] CI_CONFIG_TYPE * pConfigType );
|
||
|
|
||
|
}
|
||
|
|
||
|
interface IWordBreaker;
|
||
|
interface IStemmer;
|
||
|
interface IStream;
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCLangRes
|
||
|
//
|
||
|
// Description : An interface to provide language resources like word
|
||
|
// breakers, stemmers, etc.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(914c2e6c-43fe-11d0-8c91-0020af1d740e)
|
||
|
interface ICiCLangRes : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE GetWordBreaker( [in] LCID locale,
|
||
|
[in] PROPID pid,
|
||
|
[out] IWordBreaker ** ppWordBreaker );
|
||
|
|
||
|
SCODE GetStemmer( [in] LCID locale,
|
||
|
[in] PROPID pid,
|
||
|
[out] IStemmer ** ppStemmer );
|
||
|
|
||
|
SCODE GetNoiseWordList( [in] LCID locale,
|
||
|
[in] PROPID pid,
|
||
|
[out] IStream ** ppNoiseWordList );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiAdmin
|
||
|
//
|
||
|
// Description : An interface with methods to adminster Ci internal state.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(AE67C7D8-85D3-11d0-8C45-00C04FC2DB8D)
|
||
|
interface ICiAdmin : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE InvalidateLangResources ();
|
||
|
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiFrameworkQuery
|
||
|
//
|
||
|
// Description : An interface with methods that provide access to
|
||
|
// various resources like CLangList
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(AE67C7D9-85D3-11d0-8C45-00C04FC2DB8D)
|
||
|
interface ICiFrameworkQuery : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE GetCCI( [out] void ** ppCCI );
|
||
|
|
||
|
SCODE ProcessError( [in] long lErrorCode );
|
||
|
|
||
|
SCODE GetLangList( [out] void **ppLangList );
|
||
|
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCAdviseStatus
|
||
|
//
|
||
|
// Description : An interface notify the Content Index Client about
|
||
|
// performance counter values, event log messages, etc.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(ca05734a-1218-11d3-ae7a-00c04f72f831)
|
||
|
interface ICiCAdviseStatus : IUnknown
|
||
|
{
|
||
|
typedef enum tagCI_PERF_COUNTER_NAME
|
||
|
{
|
||
|
// Counters used in the main process
|
||
|
CI_PERF_NUM_WORDLIST,
|
||
|
CI_PERF_NUM_PERSISTENT_INDEXES,
|
||
|
CI_PERF_INDEX_SIZE,
|
||
|
CI_PERF_FILES_TO_BE_FILTERED,
|
||
|
CI_PERF_NUM_UNIQUE_KEY,
|
||
|
CI_PERF_RUNNING_QUERIES,
|
||
|
CI_PERF_MERGE_PROGRESS,
|
||
|
CI_PERF_DOCUMENTS_FILTERED,
|
||
|
CI_PERF_NUM_DOCUMENTS,
|
||
|
CI_PERF_TOTAL_QUERIES,
|
||
|
|
||
|
// Counters used in the filter daemon process
|
||
|
CI_PERF_FILTER_TIME_TOTAL,
|
||
|
CI_PERF_FILTER_TIME,
|
||
|
CI_PERF_BIND_TIME,
|
||
|
|
||
|
// Counters used in the main process
|
||
|
CI_PERF_DEFERRED_FILTER_FILES
|
||
|
} CI_PERF_COUNTER_NAME;
|
||
|
|
||
|
typedef enum tagCI_NOTIFY_STATUS_VALUE
|
||
|
{
|
||
|
CI_NOTIFY_FILTERING_FAILURE,
|
||
|
CI_NOTIFY_CORRUPT_INDEX,
|
||
|
CI_NOTIFY_SET_DISK_FULL,
|
||
|
CI_NOTIFY_CLEAR_DISK_FULL,
|
||
|
CI_NOTIFY_RESCAN_NEEDED,
|
||
|
CI_NOTIFY_FILTER_EMBEDDING_FAILURE,
|
||
|
CI_NOTIFY_FILTER_TOO_MANY_BLOCKS
|
||
|
|
||
|
} CI_NOTIFY_STATUS_VALUE;
|
||
|
|
||
|
SCODE SetPerfCounterValue( [in] CI_PERF_COUNTER_NAME counterName,
|
||
|
[in] long value );
|
||
|
|
||
|
SCODE GetPerfCounterValue( [in] CI_PERF_COUNTER_NAME counterName,
|
||
|
[out] long * pValue );
|
||
|
|
||
|
SCODE IncrementPerfCounterValue( [in] CI_PERF_COUNTER_NAME counterName );
|
||
|
|
||
|
SCODE DecrementPerfCounterValue( [in] CI_PERF_COUNTER_NAME counterName );
|
||
|
|
||
|
SCODE NotifyEvent( [in] WORD fType,
|
||
|
[in] DWORD eventId,
|
||
|
[in] ULONG nParams,
|
||
|
[in, size_is(nParams)] const PROPVARIANT *aParams,
|
||
|
[in] ULONG cbData,
|
||
|
[in, size_is(cbData)] void* data );
|
||
|
|
||
|
//
|
||
|
// BUGBUG - We should document that it may be called with internal CI locks
|
||
|
// held - don't call back into CI or get other locks. Fix this limitation
|
||
|
// it is a problem.
|
||
|
//
|
||
|
SCODE NotifyStatus( [in] CI_NOTIFY_STATUS_VALUE status,
|
||
|
[in] ULONG nParams,
|
||
|
[in, size_is(nParams)] const PROPVARIANT *aParams );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCFilterClient
|
||
|
//
|
||
|
// Description : An interface to control the client component responsible
|
||
|
// for filtering.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(A1E0BCB6-3C24-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCFilterClient : IUnknown
|
||
|
{
|
||
|
typedef struct tagCI_CLIENT_FILTER_CONFIG_INFO
|
||
|
{
|
||
|
BOOL fSupportsOpLocks;
|
||
|
BOOL fSupportsSecurity;
|
||
|
|
||
|
} CI_CLIENT_FILTER_CONFIG_INFO;
|
||
|
|
||
|
SCODE Init( [in, size_is(cbData)] BYTE const * pbData,
|
||
|
[in] ULONG cbData,
|
||
|
[in] ICiAdminParams * pICiAdminParams );
|
||
|
|
||
|
SCODE GetConfigInfo( [out] CI_CLIENT_FILTER_CONFIG_INFO * pConfigInfo );
|
||
|
|
||
|
SCODE GetOpenedDoc( [out] ICiCOpenedDoc ** ppICiCOpenedDoc );
|
||
|
}
|
||
|
|
||
|
|
||
|
interface ICiManager;
|
||
|
|
||
|
typedef ULONG VOLUMEID;
|
||
|
typedef LONGLONG USN;
|
||
|
typedef ULONG WORKID;
|
||
|
typedef ULONG PROPID;
|
||
|
typedef ULONG SDID;
|
||
|
typedef ULONG PARTITIONID;
|
||
|
typedef DWORD ACCESS_MASK;
|
||
|
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Struct: USN_FLUSH_INFO
|
||
|
//
|
||
|
// Purpose: A structure used to convey information about a
|
||
|
// changelog flush. Each entry has the volumeId and the
|
||
|
// highest USN flushed for that volumeId.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
typedef struct tagUSN_FLUSH_INFO
|
||
|
{
|
||
|
VOLUMEID volumeId;
|
||
|
USN usnHighest;
|
||
|
} USN_FLUSH_INFO;
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Enum: CI_UPDATE_TYPE
|
||
|
//
|
||
|
// Purpose: Types of updates
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
typedef enum tagCI_UPDATE_TYPE
|
||
|
{
|
||
|
CI_UPDATE_ADD = 0x1, // Document add
|
||
|
CI_UPDATE_DELETE = 0x2, // Document delete
|
||
|
CI_UPDATE_MODIFY = 0x4 // Document modify
|
||
|
|
||
|
} CI_UPDATE_TYPE;
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Enum: CI_ACCESS_MODE
|
||
|
//
|
||
|
// Purpose: Type of access needed for a document.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
typedef enum tagCI_ACCESS_MODE
|
||
|
{
|
||
|
|
||
|
CI_READ_ACCESS = 0x1,
|
||
|
CI_WRITE_ACCESS = 0x2,
|
||
|
CI_EXECUTE_ACCESS = 0x4
|
||
|
|
||
|
} CI_ACCESS_MODE;
|
||
|
|
||
|
|
||
|
interface ICiCQuerySession;
|
||
|
interface IPropertyMapper;
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCDocStore
|
||
|
//
|
||
|
// Description : Main interface of the client in the content index.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(46625468-3C32-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCDocStore : IUnknown
|
||
|
{
|
||
|
//
|
||
|
// BUGBUG - temporary - will have to change. This is to allow
|
||
|
// fetching of the data for updating the perfmon counters.
|
||
|
//
|
||
|
typedef struct tagCI_CLIENT_STATUS
|
||
|
{
|
||
|
ULONG cDocuments; // Total number of documents
|
||
|
} CI_CLIENT_STATUS;
|
||
|
|
||
|
|
||
|
typedef enum tagCI_DISABLE_UPDATE_REASON
|
||
|
{
|
||
|
CI_LOST_UPDATE,
|
||
|
CI_CORRUPT_INDEX,
|
||
|
CI_DISK_FULL
|
||
|
|
||
|
} CI_DISABLE_UPDATE_REASON;
|
||
|
|
||
|
SCODE FlushPropertyStore();
|
||
|
|
||
|
SCODE GetClientStatus( [out] CI_CLIENT_STATUS * pStatus );
|
||
|
|
||
|
SCODE GetContentIndex( [out] ICiManager ** ppICiManager );
|
||
|
|
||
|
SCODE EnableUpdates( void );
|
||
|
|
||
|
SCODE DisableUpdates( [in] BOOL fIncremental,
|
||
|
[in] CI_DISABLE_UPDATE_REASON dwReason );
|
||
|
|
||
|
SCODE ProcessCiDaemonTermination( [in] DWORD dwStatus );
|
||
|
|
||
|
SCODE CheckPointChangesFlushed( [in] FILETIME ftFlushed,
|
||
|
[in] ULONG cEntries,
|
||
|
[in, size_is(cEntries)]
|
||
|
USN_FLUSH_INFO const * const * pUsnEntries );
|
||
|
|
||
|
SCODE GetQuerySession( [out] ICiCQuerySession ** ppICiCQuerySession );
|
||
|
|
||
|
SCODE MarkDocUnReachable( [in] WORKID wid );
|
||
|
|
||
|
SCODE GetPropertyMapper( [out] IPropertyMapper ** ppIPropertyMapper );
|
||
|
|
||
|
SCODE StoreSecurity( [in] WORKID wid,
|
||
|
[in] BYTE const * pbSecurity,
|
||
|
[in] ULONG cbSecurity );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCDocStoreEx
|
||
|
//
|
||
|
// Description : Extension to ICiCDocStore.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(f98282a7-fa72-11d1-9798-00c04fc2f410)
|
||
|
interface ICiCDocStoreEx : ICiCDocStore
|
||
|
{
|
||
|
SCODE IsNoQuery( [out] BOOL * fNoQuery );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCDocNameToWorkidTranslator
|
||
|
//
|
||
|
// Description : Interface to do document name to workid translation and
|
||
|
// vice-versa.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(25FC3F54-3CB4-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCDocNameToWorkidTranslator : IUnknown
|
||
|
{
|
||
|
SCODE QueryDocName( [out] ICiCDocName ** ppICiCDocName );
|
||
|
|
||
|
SCODE WorkIdToDocName( [in] WORKID workId,
|
||
|
[out] ICiCDocName * pICiCDocName );
|
||
|
|
||
|
SCODE DocNameToWorkId( [in] ICiCDocName const * pICiCDocName,
|
||
|
[out] WORKID *pWorkId );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCDocNameToWorkidTranslatorEx
|
||
|
//
|
||
|
// Description : Interface to do document name to workid translation and
|
||
|
// vice-versa. The Ex version includes an additional API
|
||
|
// to 'try harder and be more accurate' when resolving
|
||
|
// names.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(7BBA76E6-A0E3-11D2-BC5D-00C04FA354BA)
|
||
|
interface ICiCDocNameToWorkidTranslatorEx : ICiCDocNameToWorkidTranslator
|
||
|
{
|
||
|
SCODE WorkIdToAccurateDocName( [in] WORKID workId,
|
||
|
[out] ICiCDocName * pICiCDocName );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCPropertyStorage
|
||
|
//
|
||
|
// Description : Client interface to store properties.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(4C46225A-3CB5-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCPropertyStorage : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE IsPropertyCached( [in] FULLPROPSPEC const * pPropSpec,
|
||
|
[out] BOOL * pfValue );
|
||
|
|
||
|
SCODE StoreProperty( [in] WORKID workId,
|
||
|
[in] FULLPROPSPEC const * pPropSpec,
|
||
|
[in] PROPVARIANT const * pPropVariant );
|
||
|
|
||
|
|
||
|
//
|
||
|
// The following Fetch* methods are not used in the current version of
|
||
|
// CI framework. They are meant for a future version of CI framework.
|
||
|
//
|
||
|
SCODE FetchValueByPid( [in] WORKID workId,
|
||
|
[in] PROPID pid,
|
||
|
[out] PROPVARIANT * pbData,
|
||
|
[in,out] ULONG * pcb );
|
||
|
|
||
|
SCODE FetchValueByPropSpec( [in] WORKID workId,
|
||
|
[in] FULLPROPSPEC const * pPropSpec,
|
||
|
[out] PROPVARIANT * pbData,
|
||
|
[in,out] ULONG * pcb );
|
||
|
|
||
|
|
||
|
SCODE FetchVariantByPid( [in] WORKID workId,
|
||
|
[in] PROPID pid,
|
||
|
[out] PROPVARIANT ** ppVariant );
|
||
|
|
||
|
SCODE FetchVariantByByPropSpec( [in] WORKID workId,
|
||
|
[in] FULLPROPSPEC const * pPropSpec,
|
||
|
[out] PROPVARIANT ** ppVariant );
|
||
|
|
||
|
SCODE ClearNonStoragePropertiesForWid( [in] WORKID wid );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCPropRetriever
|
||
|
//
|
||
|
// Description : Interface to suport query time retrieval of properties,
|
||
|
// security checking, scope checking, etc.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(77d9b2da-4401-11d0-8c91-0020af1d740e)
|
||
|
interface ICiCPropRetriever : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE BeginPropertyRetrieval( [in] WORKID wid );
|
||
|
|
||
|
SCODE RetrieveValueByPid( [in] PROPID pid,
|
||
|
[out] PROPVARIANT * pbData,
|
||
|
[in,out] ULONG * pcb );
|
||
|
|
||
|
SCODE RetrieveValueByPropSpec( [in] FULLPROPSPEC const * pPropSpec,
|
||
|
[out] PROPVARIANT * pbData,
|
||
|
[in,out] ULONG * pcb );
|
||
|
|
||
|
SCODE FetchSDID( [out] SDID * pSDID );
|
||
|
|
||
|
SCODE CheckSecurity( [in] ACCESS_MASK am,
|
||
|
[out] BOOL * pfGranted );
|
||
|
|
||
|
SCODE IsInScope( [out] BOOL * pfInScope );
|
||
|
|
||
|
SCODE EndPropertyRetrieval();
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCDeferredPropRetriever
|
||
|
//
|
||
|
// Description : Interface to suport retrieval of deferred properties
|
||
|
//
|
||
|
// Notes : It's the responsibility of the caller to free the variant
|
||
|
// by calling VariantClear on pVar
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(c273af70-6d72-11d0-8d64-00a0c908dbf1)
|
||
|
interface ICiCDeferredPropRetriever : IUnknown
|
||
|
{
|
||
|
SCODE RetrieveDeferredValueByPid( [in] WORKID wid,
|
||
|
[in] PROPID pid,
|
||
|
[out] PROPVARIANT * pVar );
|
||
|
|
||
|
SCODE RetrieveDeferredValueByPropSpec( [in] WORKID wid,
|
||
|
[in] FULLPROPSPEC const * pPropSpec,
|
||
|
[out] PROPVARIANT * pVar );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCScopeEnumerator
|
||
|
//
|
||
|
// Description : Interface to enumerate.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(CF8505EA-3CCA-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCScopeEnumerator : IUnknown
|
||
|
{
|
||
|
SCODE Begin( void );
|
||
|
|
||
|
SCODE CurrentDocument( [out] WORKID * pWorkId );
|
||
|
|
||
|
SCODE NextDocument( [out] WORKID * pWorkId );
|
||
|
|
||
|
SCODE RatioFinished( [out] ULONG * pulDenominator,
|
||
|
[out] ULONG * pulNumerator );
|
||
|
|
||
|
SCODE End( void );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiQueryPropertyMapper
|
||
|
//
|
||
|
// Description : Converts propspec to pid and vice-versa. It differs from
|
||
|
// IPropertyMapper because it can convert properties that are
|
||
|
// of interest to a given query only
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(D2333EB0-756B-11D0-8D66-00A0C908DBF1)
|
||
|
interface ICiQueryPropertyMapper : IUnknown
|
||
|
{
|
||
|
SCODE PropertyToPropid( [in] FULLPROPSPEC const * pFullPropSpec,
|
||
|
[out] PROPID * pPropId );
|
||
|
|
||
|
SCODE PropidToProperty( [in] PROPID pid,
|
||
|
[out] FULLPROPSPEC const ** ppPropSpec );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCQuerySession
|
||
|
//
|
||
|
// Description : A resource manager for a query on the client side.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
interface IDBProperties;
|
||
|
|
||
|
LOCAL_INTERFACE(AE461FD6-4E1D-11D0-8C94-0020AF1D740E)
|
||
|
interface ICiCQuerySession : IUnknown
|
||
|
{
|
||
|
typedef enum tagCI_ENUM_OPTIONS
|
||
|
{
|
||
|
CI_ENUM_MUST,
|
||
|
CI_ENUM_NEVER,
|
||
|
CI_ENUM_SMALL,
|
||
|
CI_ENUM_BIG,
|
||
|
CI_ENUM_MUST_NEVER_DEFER
|
||
|
|
||
|
} CI_ENUM_OPTIONS;
|
||
|
|
||
|
SCODE Init( [in] ULONG nProps,
|
||
|
[in, size_is(nProps)] FULLPROPSPEC const * const * apPropSpec,
|
||
|
[in] IDBProperties *pDBProperties,
|
||
|
[in] ICiQueryPropertyMapper *pQueryPropertyMapper );
|
||
|
|
||
|
SCODE GetEnumOption( [out] CI_ENUM_OPTIONS * pEnumOption );
|
||
|
|
||
|
SCODE CreatePropRetriever( [out] ICiCPropRetriever ** ppICiCPropRetriever );
|
||
|
|
||
|
SCODE CreateDeferredPropRetriever( [out] ICiCDeferredPropRetriever ** ppICiCDefPropRetriever );
|
||
|
|
||
|
SCODE CreateEnumerator( [out] ICiCScopeEnumerator ** ppICiCEnumerator );
|
||
|
}
|
||
|
|
||
|
interface ICiManager;
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiControl
|
||
|
//
|
||
|
// Description : An interface that controls the construction, destruction,
|
||
|
// lookup of multiple content index instances.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(63DEB7F4-3CCB-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiControl : IUnknown
|
||
|
{
|
||
|
SCODE CreateContentIndex( [in] ICiCDocStore * pICiDocStore,
|
||
|
[out] ICiManager ** ppICiManager );
|
||
|
|
||
|
}
|
||
|
|
||
|
cpp_quote("#define CI_CONFIG_ENABLE_INDEXING 0x1")
|
||
|
cpp_quote("#define CI_CONFIG_ENABLE_QUERYING 0x2")
|
||
|
cpp_quote("#define CI_CONFIG_ENABLE_INDEXING 0x1")
|
||
|
cpp_quote("#define CI_CONFIG_ENABLE_QUERYING 0x2")
|
||
|
cpp_quote("#define CI_CONFIG_READONLY 0x4")
|
||
|
cpp_quote("#define CI_CONFIG_INPROCESS_FILTERING 0x8")
|
||
|
cpp_quote("#define CI_CONFIG_ENABLE_BULK_SECURITY 0x10")
|
||
|
cpp_quote("#define CI_CONFIG_ENABLE_INDEX_MIGRATION 0x20")
|
||
|
cpp_quote("#define CI_CONFIG_PROVIDE_PROPERTY_MAPPER 0x40")
|
||
|
cpp_quote("#define CI_CONFIG_EMPTY_DATA 0x80")
|
||
|
cpp_quote("#define CI_CONFIG_PUSH_FILTERING 0x100")
|
||
|
cpp_quote("#define CI_CONFIG_LOAD_FROM_FILES 0x200")
|
||
|
|
||
|
typedef ULONG CI_STARTUP_FLAGS;
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiStartup
|
||
|
//
|
||
|
// Description : Interface to specify the startup information to Content Index.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(68232cb8-3ccc-11d0-8c90-0020af1d740e)
|
||
|
interface ICiStartup : IUnknown
|
||
|
{
|
||
|
|
||
|
typedef struct tagCI_STARTUP_INFO
|
||
|
{
|
||
|
|
||
|
CI_STARTUP_FLAGS startupFlags;
|
||
|
CLSID clsidDaemonClientMgr;
|
||
|
|
||
|
BOOL fFull;
|
||
|
BOOL fCallerOwnsFiles;
|
||
|
IEnumString * pFileList;
|
||
|
|
||
|
} CI_STARTUP_INFO;
|
||
|
|
||
|
SCODE StartupContentIndex(
|
||
|
[string,in] WCHAR const * pwszCiDirectory,
|
||
|
[in] CI_STARTUP_INFO * pStartupInfo,
|
||
|
[in] IProgressNotify * pIProgressNotify,
|
||
|
[in] BOOL * pfAbort );
|
||
|
|
||
|
SCODE StartupNullContentIndex(
|
||
|
[in] CI_STARTUP_INFO * pStartupInfo,
|
||
|
[in] IProgressNotify * pIProgressNotify,
|
||
|
[in] BOOL * pfAbort );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiEnumWorkids
|
||
|
//
|
||
|
// Description : An interface provides the ability to enumerate workids.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(77900150-A09C-11D0-A80D-00A0C906241A)
|
||
|
interface ICiEnumWorkids : IUnknown
|
||
|
{
|
||
|
SCODE Count( [out] ULONG * pcWorkIds );
|
||
|
|
||
|
SCODE Reset();
|
||
|
|
||
|
SCODE Next( [in] ULONG celt,
|
||
|
[out,size_is(celt)] WORKID * rgelt,
|
||
|
[out] ULONG *pceltFetched );
|
||
|
|
||
|
SCODE Skip( [in] ULONG celt );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiPersistIncrFile
|
||
|
//
|
||
|
// Description : An interface that allows saving and loading of ci
|
||
|
// persistent data.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(31B311E2-4498-11D0-8C91-0020AF1D740E)
|
||
|
interface ICiPersistIncrFile : IUnknown
|
||
|
{
|
||
|
SCODE Load( [in] BOOL fFull,
|
||
|
[in] BOOL fCallerOwnsFiles,
|
||
|
[in] IEnumString * pIFileList,
|
||
|
[in] IProgressNotify * pIProgressNotify,
|
||
|
[in] BOOL * pfAbort );
|
||
|
|
||
|
SCODE Save( [string, in] WCHAR const * pwszSaveDirectory,
|
||
|
[in] BOOL fFull,
|
||
|
[in] IProgressNotify * pIProgressNotify,
|
||
|
[in] BOOL * pfAbort,
|
||
|
[out] ICiEnumWorkids ** ppWorkidList,
|
||
|
[out] IEnumString ** ppFileList,
|
||
|
[out] BOOL * pfFull,
|
||
|
[out] BOOL * pfCallerOwnsFiles
|
||
|
);
|
||
|
|
||
|
SCODE SaveCompleted();
|
||
|
|
||
|
}
|
||
|
|
||
|
typedef ULONG CIF_STATE_FLAGS;
|
||
|
|
||
|
cpp_quote("#define CIF_STATE_SHADOW_MERGE 0x001")
|
||
|
cpp_quote("#define CIF_STATE_MASTER_MERGE 0x002")
|
||
|
cpp_quote("#define CIF_STATE_CONTENT_SCAN_REQUIRED 0x004")
|
||
|
cpp_quote("#define CIF_STATE_ANNEALING_MERGE 0x008")
|
||
|
cpp_quote("#define CIF_STATE_INDEX_MIGRATION_MERGE 0x010")
|
||
|
cpp_quote("#define CIF_STATE_LOW_MEMORY 0x020")
|
||
|
cpp_quote("#define CIF_STATE_HIGH_IO 0x040")
|
||
|
cpp_quote("#define CIF_STATE_MASTER_MERGE_PAUSED 0x080")
|
||
|
cpp_quote("#define CIF_STATE_BATTERY_POWER 0x100")
|
||
|
cpp_quote("#define CIF_STATE_USER_ACTIVE 0x200")
|
||
|
|
||
|
|
||
|
typedef enum tagCI_MERGE_TYPE
|
||
|
{
|
||
|
CI_ANY_MERGE = 0,
|
||
|
CI_MASTER_MERGE = 1,
|
||
|
CI_SHADOW_MERGE = 2,
|
||
|
CI_ANNEALING_MERGE = 3
|
||
|
} CI_MERGE_TYPE;
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiManager
|
||
|
//
|
||
|
// Description : Main interface for Content Index.
|
||
|
// Supports QueryInterface to ICiAdminParams
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(CF0FCF56-3CCE-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiManager : IUnknown
|
||
|
{
|
||
|
typedef struct tagCI_DOCUMENT_UPDATE_INFO
|
||
|
{
|
||
|
|
||
|
WORKID workId;
|
||
|
VOLUMEID volumeId;
|
||
|
USN usn;
|
||
|
PARTITIONID partId;
|
||
|
CI_UPDATE_TYPE change;
|
||
|
|
||
|
} CI_DOCUMENT_UPDATE_INFO;
|
||
|
|
||
|
|
||
|
typedef struct tagCIF_STATE
|
||
|
{
|
||
|
DWORD cbStruct; // size of the struct passed
|
||
|
DWORD cWordList; // # of wordlists
|
||
|
DWORD cPersistentIndex; // # of persistent indexes
|
||
|
DWORD cQueries; // # of running queries
|
||
|
DWORD cDocuments; // # of documents to filter
|
||
|
DWORD cFreshTest; // # of entires in the fresh test
|
||
|
DWORD dwMergeProgress; // % done in current merge
|
||
|
CIF_STATE_FLAGS eState; // bit array of state information
|
||
|
DWORD cFilteredDocuments; // # of documents filtered thus far
|
||
|
DWORD dwIndexSize; // Total size (in MB) of index
|
||
|
DWORD cUniqueKeys; // # of unique keys in index
|
||
|
DWORD cSecQDocuments; // # of documents in secondary Q
|
||
|
} CIF_STATE;
|
||
|
|
||
|
SCODE GetStatus( [out] CIF_STATE * pCiState );
|
||
|
|
||
|
SCODE Empty(void);
|
||
|
|
||
|
SCODE Shutdown(void);
|
||
|
|
||
|
SCODE UpdateDocument( [in] CI_DOCUMENT_UPDATE_INFO const * pInfo );
|
||
|
|
||
|
SCODE UpdateDocuments( [in] ULONG cDocs,
|
||
|
[in, size_is(cDocs)] CI_DOCUMENT_UPDATE_INFO const * aInfo );
|
||
|
|
||
|
SCODE StartFiltering( [in] ULONG cbData,
|
||
|
[in, size_is(cbData)] BYTE const * pbData );
|
||
|
|
||
|
SCODE FlushUpdates(void);
|
||
|
|
||
|
SCODE GetAdminParams( [out] ICiAdminParams ** ppICiAdminParams );
|
||
|
|
||
|
SCODE QueryRcovStorage( [out] IUnknown ** ppIUnknown );
|
||
|
|
||
|
SCODE ForceMerge( CI_MERGE_TYPE mt );
|
||
|
|
||
|
SCODE AbortMerge(void);
|
||
|
|
||
|
SCODE IsQuiesced( BOOL * pfState );
|
||
|
|
||
|
SCODE GetPropertyMapper( [out] IPropertyMapper ** ppIPropertyMapper );
|
||
|
|
||
|
SCODE IsNullCatalog( BOOL * pfNull );
|
||
|
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : IPropertyMapper
|
||
|
//
|
||
|
// Description : Maps a FULLPROPSPEC to a 32 bit PROPID and vice-versa.
|
||
|
// This can be provided either by Content Index or the client.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(B324B226-41A0-11D0-8C91-0020AF1D740E)
|
||
|
interface IPropertyMapper : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE PropertyToPropid( [in] FULLPROPSPEC const * pFullPropSpec,
|
||
|
[in] BOOL fCreate,
|
||
|
[out] PROPID * pPropId );
|
||
|
|
||
|
SCODE PropidToProperty( [in] PROPID pid,
|
||
|
[out] FULLPROPSPEC ** ppPropSpec );
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCDocStoreLocator
|
||
|
//
|
||
|
// Description : A client provided interface to locate a docstore given
|
||
|
// the client supplied parameters set on the data source
|
||
|
// object.
|
||
|
//
|
||
|
// Notes : ICiCDocStoreLocator is used only by the File System
|
||
|
// Client of framework until the transport interface to
|
||
|
// enable remoting of CI is speced, ie, running CI in a
|
||
|
// client and a server process.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(97EE7C06-5908-11D0-8C9B-0020AF1D740E)
|
||
|
interface ICiCDocStoreLocator : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE LookUpDocStore( [in] IDBProperties * pIDBProperties,
|
||
|
[out] ICiCDocStore ** ppICiCDocStore,
|
||
|
[in] BOOL fMustAlreadyBeOpen );
|
||
|
|
||
|
SCODE Shutdown();
|
||
|
|
||
|
SCODE GetDocStoreState( [in] WCHAR const * pwcDocStore,
|
||
|
[out] ICiCDocStore ** ppICiCDocStore,
|
||
|
[out] DWORD * pdwState );
|
||
|
|
||
|
SCODE IsMarkedReadOnly( [in] WCHAR const * wcsCat, [out] BOOL * pfReadOnly );
|
||
|
|
||
|
SCODE IsVolumeOrDirRO( [in] WCHAR const * wcsCat, [out] BOOL * pfReadOnly );
|
||
|
|
||
|
SCODE OpenAllDocStores( );
|
||
|
|
||
|
SCODE StopCatalogsOnVol( [in] WCHAR wcVol, [in] void * pRequestQ );
|
||
|
|
||
|
SCODE StartCatalogsOnVol( [in] WCHAR wcVol, [in] void * pRequestQ );
|
||
|
|
||
|
SCODE AddStoppedCat( [in] DWORD dwOldState, [in] WCHAR const * wcsCatName );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiISearchCreator
|
||
|
//
|
||
|
// Description : An interface for creating the CSearch object provided by
|
||
|
// the CI framework.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
interface ISearchQueryHits;
|
||
|
typedef struct tagDBCOMMANDTREE DBCOMMANDTREE;
|
||
|
|
||
|
LOCAL_INTERFACE(7DC07FA0-902E-11D0-A80C-00A0C906241A)
|
||
|
interface ICiISearchCreator : IUnknown
|
||
|
{
|
||
|
SCODE CreateISearch( [in] DBCOMMANDTREE * pRst,
|
||
|
[in] ICiCLangRes * pILangRes,
|
||
|
[in] ICiCOpenedDoc * pOpenedDoc,
|
||
|
[out] ISearchQueryHits ** ppISearch );
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Class ids of objects provided by the CI framework that can be created
|
||
|
// using COM ( eg. CoCreateInstance)
|
||
|
//
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// ClassId : CLSID_NLCiControl
|
||
|
//
|
||
|
// Description : ClassId of the CiControl object in ocifrmwrk.dll.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
// 47C67B50-70B5-11D0-A808-00A0C906241A
|
||
|
cpp_quote("#define CLSID_NLCiControl { 0x47c67b50,0x70b5,0x11d0,{0xa8, 0x08, 0x00, 0xa0, 0xc9, 0x06, 0x24, 0x1a}}" )
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// ClassId : CLSID_CiControl
|
||
|
//
|
||
|
// Description : ClassId of the CiControl object in cifrmwrk.dll.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
// 1E9685E6-DB6D-11d0-BB63-00C04FC2F410
|
||
|
cpp_quote("#define CLSID_CiControl { 0x1e9685e6, 0xdb6d, 0x11d0, {0xbb, 0x63, 0x0, 0xc0, 0x4f, 0xc2, 0xf4, 0x10 }}" )
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// ClassId : CLSID_ISearchCreator
|
||
|
//
|
||
|
// Description : ClassId of the ISearchCreator object. This object can be
|
||
|
// used to create an object implementing ISearchQueryHits interface.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
// 1F247DC0-902E-11D0-A80C-00A0C906241A
|
||
|
cpp_quote("#define CLSID_ISearchCreator {0x1F247DC0, 0x902E, 0x11D0, {0xA8,0x0C,0x00,0xA0,0xC9,0x06,0x24,0x1A} }")
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// ClassId : CLSID_TextIFilter
|
||
|
//
|
||
|
// Description : ClassId of the text filter implemented by CI framework.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
// C1243CA0-BF96-11CD-B579-08002B30BFEB
|
||
|
cpp_quote("#define CLSID_TextIFilter {0xC1243CA0, 0xBF96, 0x11CD, {0xB5,0x79,0x08,0x00,0x2B,0x30,0xBF,0xEB } }")
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// ClassId : GUID_Characterization
|
||
|
//
|
||
|
// Description : Use GUID_Characterization,"Description" as the FULLPROPSPEC
|
||
|
// for using a property as characterization.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
// D1B5D3F0-C0B3-11CF-9A92-00A0C908DBF1
|
||
|
cpp_quote("#define GUID_Characterization {0xD1B5D3F0, 0xC0B3, 0x11CF, {0x9A,0x92,0x00,0xA0,0xC9,0x08,0xDB,0xF1 } }")
|
||
|
|
||
|
|
||
|
interface ICiCIndexNotificationStatus;
|
||
|
interface ICiIndexNotificationEntry;
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiIndexNotification
|
||
|
//
|
||
|
// Description : An interface provided by the push filtering framework that
|
||
|
// accepts document change notifications.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(4F2CD6E0-8E74-11D0-8D69-00A0C908DBF1)
|
||
|
interface ICiIndexNotification : IUnknown
|
||
|
{
|
||
|
SCODE AddNotification( [in] WORKID wid,
|
||
|
[in] ICiCIndexNotificationStatus *pIndexNotifStatus,
|
||
|
[out] ICiIndexNotificationEntry **ppIndexNotifEntry );
|
||
|
|
||
|
SCODE ModifyNotification( [in] WORKID wid,
|
||
|
[in] ICiCIndexNotificationStatus *pIndexNotifStatus,
|
||
|
[out] ICiIndexNotificationEntry **ppIndexNotifEntry );
|
||
|
|
||
|
SCODE DeleteNotification( [in] WORKID wid,
|
||
|
[in] ICiCIndexNotificationStatus *pIndexNotifStatus );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiIndexNotificationEntry
|
||
|
//
|
||
|
// Description : An interface provided by the push filtering framework that
|
||
|
// accepts the text and properties in of a modified document.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(210769D0-8E75-11D0-8D69-00A0C908DBF1)
|
||
|
interface ICiIndexNotificationEntry : IUnknown
|
||
|
{
|
||
|
SCODE AddText( [in] STAT_CHUNK const * pStatChunk,
|
||
|
[in] WCHAR const * pwszText );
|
||
|
|
||
|
SCODE AddProperty( [in] STAT_CHUNK const * pStatChunk,
|
||
|
[in] PROPVARIANT const * pPropVariant );
|
||
|
|
||
|
SCODE AddCompleted( [in] ULONG fAbort );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCIndexNotificationStatus
|
||
|
//
|
||
|
// Description : A client provided interface used by the push filtering
|
||
|
// framework to notify completion status to client. Commit
|
||
|
// means that the document notification has been persisted in
|
||
|
// the CI indexes. An abort means that the client should retry
|
||
|
// the notification. Note: the client should be careful about
|
||
|
// requeuing deletes. Finally, the simple filtering framework
|
||
|
// does not handle failures of Commit or Abort, say by retrying
|
||
|
// at a later time. Commit and Abort are expected to succeed.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(5FFF3840-8E76-11D0-8D69-00A0C908DBF1)
|
||
|
interface ICiCIndexNotificationStatus : IUnknown
|
||
|
{
|
||
|
SCODE Commit();
|
||
|
|
||
|
SCODE Abort();
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ISimpleCommandCreator
|
||
|
//
|
||
|
// Description : A CI provided interface that exposes ICommand for CI.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
interface ICommand;
|
||
|
|
||
|
LOCAL_INTERFACE(5e341ab7-02d0-11d1-900c-00a0c9063796)
|
||
|
interface ISimpleCommandCreator : IUnknown
|
||
|
{
|
||
|
SCODE CreateICommand( IUnknown ** ppIUnknown, IUnknown * pOuterUnk );
|
||
|
|
||
|
SCODE VerifyCatalog( WCHAR const * pwszMachine, WCHAR const * pwszCatalogName );
|
||
|
|
||
|
SCODE GetDefaultCatalog( WCHAR * pwszCatalogName, ULONG cwcIn, ULONG * pcwcOut );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// ClassId : CLSID_CISimpleCommandCreator
|
||
|
//
|
||
|
// Description : ClassId of the simple command creator implemented by CI.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
// C7B6C04A-CBB5-11d0-BB4C-00C04FC2F410
|
||
|
cpp_quote("#define CLSID_CISimpleCommandCreator {0xc7b6c04a, 0xcbb5, 0x11d0, {0xbb, 0x4c, 0x0, 0xc0, 0x4f, 0xc2, 0xf4, 0x10 } }")
|
||
|
|
||
|
|
||
|
//
|
||
|
// All of the following interfaces (from here till eof) are not used in the current version
|
||
|
// of CI framework. They are meant for a future version of CI framework.
|
||
|
//
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCScope
|
||
|
//
|
||
|
// Description : An interface encapsulating a scope.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(1021C882-3CC0-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCScope : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE Init( [in] ULONG cbData,
|
||
|
[in, size_is(cbData)] BYTE const * pbData );
|
||
|
|
||
|
SCODE Clear(void);
|
||
|
|
||
|
SCODE IsValid(void) const;
|
||
|
|
||
|
SCODE QueryScope( [out] ICiCScope ** ppICiCScope ) const;
|
||
|
|
||
|
SCODE GetScope( [out,size_is(*pcbData) ] BYTE * pbScope,
|
||
|
[in,out] ULONG * pcbData );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCScopeChecker
|
||
|
//
|
||
|
// Description : Interface to test if a document is in a given set of scopes.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
LOCAL_INTERFACE(7D820C9C-3CBC-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCScopeChecker : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE IsWorkidInScope( [in] ICiCScope const * pIScope,
|
||
|
[in] WORKID workId,
|
||
|
[out] BOOL * pfInScope );
|
||
|
|
||
|
SCODE IsDocNameInScope( [in] ICiCScope const * pIScope,
|
||
|
[in] ICiCDocName const * pICiCDocName,
|
||
|
[out] BOOL * pfInScope );
|
||
|
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCUserSecurity
|
||
|
//
|
||
|
// Description : An interface to encapsulate a user's security identity.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(5D01D9CE-3CC2-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCUserSecurity : IUnknown
|
||
|
{
|
||
|
SCODE Init( [in] ULONG cbData,
|
||
|
[in, size_is(cbData)] BYTE const * pbData );
|
||
|
|
||
|
SCODE Clear(void);
|
||
|
|
||
|
SCODE IsValid( [out] BOOL * pfValid ) const ;
|
||
|
|
||
|
SCODE GetSecurityInfo( [out, size_is(*pcbData)] BYTE * pbData,
|
||
|
[in,out] ULONG * pcbData );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCSecurityChecker
|
||
|
//
|
||
|
// Description : An interface capable of checking if a given document allows
|
||
|
// the desired access to a user. Capable of doing bulk security
|
||
|
// checking also.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(CA130CF4-3CC2-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCSecurityChecker : IUnknown
|
||
|
{
|
||
|
SCODE AccessCheck( [in] ICiCUserSecurity const * pICiCUserSecurity,
|
||
|
[in] SDID sdid,
|
||
|
[in] CI_ACCESS_MODE am,
|
||
|
[out] BOOL * pfGranted );
|
||
|
|
||
|
SCODE BulkAccessCheck( [in] ICiCUserSecurity const * pICiCUserSecurity,
|
||
|
[in] ULONG nIds,
|
||
|
[in, size_is(nIds)] SDID const * aSDID,
|
||
|
[in, size_is(nIds)] CI_ACCESS_MODE const * pam,
|
||
|
[out, size_is(nIds)] BOOL * afGranted );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiDocChangeNotifySink
|
||
|
//
|
||
|
// Description : Interface capable of accepting document change notifications.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(8BFA1386-3CE5-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiDocChangeNotifySink : IUnknown
|
||
|
{
|
||
|
SCODE ProcessWorkidChange( [in] WORKID wid,
|
||
|
[in] CI_UPDATE_TYPE change );
|
||
|
|
||
|
SCODE ProcessDocNameChange( [in] ICiCDocName * pICiCDocName,
|
||
|
[in] CI_UPDATE_TYPE change );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCQueryNotification
|
||
|
//
|
||
|
// Description : Interface to support document change notifications during
|
||
|
// query processing.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(0A9E9F6C-3CE2-11D0-8C90-0020AF1D740E)
|
||
|
interface ICiCQueryNotification : IUnknown
|
||
|
{
|
||
|
|
||
|
SCODE RegisterScope( [in] ICiDocChangeNotifySink * pINotifySink,
|
||
|
[in] ICiCScope const * pICiCScope,
|
||
|
[out] HANDLE * phNotify );
|
||
|
|
||
|
SCODE CloseNotifications( [in] HANDLE hNotify );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCEventLogItem
|
||
|
//
|
||
|
// Description : A client provided interface to log events.
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(44CC886A-4314-11D0-8C91-0020AF1D740E)
|
||
|
interface ICiCEventLogItem : IUnknown
|
||
|
{
|
||
|
SCODE Init( [in,string] WCHAR const * pwszEventSource,
|
||
|
[in] DWORD dwMsgId );
|
||
|
|
||
|
SCODE AddDWordParam( [in] DWORD dwParam );
|
||
|
|
||
|
SCODE AddAsciiString( [in, string] char const * pszParam );
|
||
|
|
||
|
SCODE AddUnicodeString( [in, string] WCHAR const * pwszParam );
|
||
|
|
||
|
SCODE AddVariantParam( [in] PROPVARIANT const * pVarnt );
|
||
|
|
||
|
SCODE AddData( [in] ULONG cbData,
|
||
|
[in, size_is(cbData)] BYTE const * pbData );
|
||
|
|
||
|
SCODE WriteEvent( void );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCFilterStatus
|
||
|
//
|
||
|
// Description : Per-object filtering status
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(BC5F3D60-8BBC-11D1-8F73-00A0C91917F5)
|
||
|
interface ICiCFilterStatus : IUnknown
|
||
|
{
|
||
|
SCODE PreFilter( [in, size_is(cbName)] BYTE const * pbName,
|
||
|
[in] ULONG cbName );
|
||
|
|
||
|
SCODE PostFilter( [in, size_is(cbName)] BYTE const * pbName,
|
||
|
[in] ULONG cbName,
|
||
|
[in] SCODE scFilterStatus );
|
||
|
}
|
||
|
|
||
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Interface : ICiCResourceMonitor
|
||
|
//
|
||
|
// Description : Allows client to monitor resources (i/o, memory, etc.)
|
||
|
//
|
||
|
//+-------------------------------------------------------------------------
|
||
|
|
||
|
LOCAL_INTERFACE(F700FF8E-20EE-11D2-80F7-00C04FA354BA)
|
||
|
interface ICiCResourceMonitor : IUnknown
|
||
|
{
|
||
|
SCODE IsMemoryLow();
|
||
|
|
||
|
SCODE IsBatteryLow();
|
||
|
|
||
|
SCODE IsIoHigh( [in] BOOL * pfAbort );
|
||
|
|
||
|
SCODE IsUserActive( BOOL fCheckLongTermActivity );
|
||
|
|
||
|
SCODE SampleUserActivity();
|
||
|
|
||
|
SCODE IsOnBatteryPower();
|
||
|
}
|