//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1997 - 1998.
//
//  File:       fsciclnt.idl
//
//  Contents:   File System Content Index Client
//
//  History:    09 Jan 1997    SrikantS    Created
//
//--------------------------------------------------------------------------

#ifdef IMPORT_IDL_DEPENDENTS
import "oaidl.idl";
import "filter.idl";
#endif

#include "idlmulti.h"

cpp_quote("#define CLSID_StorageDocStoreLocator  {0x2A488070, 0x6FD9, 0x11D0, {0xA8,0x08,0x00,0xA0,0xC9,0x06,0x24,0x1A} }")

typedef ULONG PARTITIONID;

//
// NOTE: CI_STATE is redefined in NtQuery.h for export in the SDK
//

cpp_quote("#ifndef CI_STATE_DEFINED")
cpp_quote("#define CI_STATE_DEFINED")

cpp_quote("#include <pshpack4.h>")
typedef struct _CI_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
    DWORD eState;                   // bit array of state information
    DWORD cFilteredDocuments;       // # of documents filtered thus far
    DWORD cTotalDocuments;          // # of documents in corpus
    DWORD cPendingScans;            // # of pending directory scans
    DWORD dwIndexSize;              // Total size (in MB) of index
    DWORD cUniqueKeys;              // # of unique keys in index
    DWORD cSecQDocuments;           // # of documents in secondary Q
    DWORD dwPropCacheSize;          // Size of property cache
} CI_STATE;
cpp_quote("#include <poppack.h>")

cpp_quote("#endif   // CI_STATE_DEFINED")

LOCAL_INTERFACE(75398C30-7A26-11D0-A80A-00A0C906241A)
interface IFsCiAdmin : IUnknown
{
    SCODE ForceMerge( [in] PARTITIONID partId );

    SCODE AbortMerge( [in] PARTITIONID partId );

    SCODE CiState( [out] CI_STATE * pCiState );

    SCODE UpdateDocuments( [string,in] WCHAR const * rootPath,
                           [in] ULONG flag );

    SCODE AddScopeToCI( [string,in] WCHAR const * rootPath );

    SCODE RemoveScopeFromCI( [string,in] WCHAR const * rootPath );

    SCODE BeginCacheTransaction( [out] ULONG_PTR * pulToken );

    SCODE SetupCache( [in] FULLPROPSPEC const * ps,
                      [in] ULONG vt,
                      [in] ULONG cbMaxLen,
                      [in] ULONG_PTR ulToken,
                      [in] BOOL  fCanBeModified,
                      [in] DWORD dwStoreLevel );

    SCODE EndCacheTransaction( [in] ULONG_PTR ulToken,
                               [in] BOOL fCommit );

}




