mirror of https://github.com/UMSKT/xpmgr.git
364 lines
9.5 KiB
Plaintext
364 lines
9.5 KiB
Plaintext
//+----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (c) 2005 Microsoft Corporation.
|
|
//
|
|
// File: SearchCatalog.idl
|
|
//
|
|
// Purpose: Search Catalog Interface Description
|
|
//
|
|
// History: 07/06/2005 louisg Modified
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//
|
|
// Forward references
|
|
//
|
|
|
|
interface ISearchQueryHelper;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ISearchCatalogManager - Manage catalogs
|
|
//
|
|
|
|
typedef enum _CatalogStatus {
|
|
//
|
|
// No indexing is needed
|
|
//
|
|
CATALOG_STATUS_IDLE = 0,
|
|
|
|
//
|
|
// Indexer is paused, queries are still OK
|
|
//
|
|
CATALOG_STATUS_PAUSED = 1,
|
|
|
|
//
|
|
// Indexer is recovering--no indexing or querying
|
|
//
|
|
CATALOG_STATUS_RECOVERING = 2,
|
|
|
|
//
|
|
// Indexer is doing a full crawl and indexing everything
|
|
//
|
|
CATALOG_STATUS_FULL_CRAWL = 3,
|
|
|
|
//
|
|
// Indexer is checking to see if anything needs to be indexed because it has changed
|
|
//
|
|
CATALOG_STATUS_INCREMENTAL_CRAWL = 4,
|
|
|
|
//
|
|
// Indexer is processing notification queue which is done before resuming any crawl.
|
|
//
|
|
CATALOG_STATUS_PROCESSING_NOTIFICATIONS = 5,
|
|
|
|
//
|
|
// Indexer is shutting down and is not indexing and can't be queried.
|
|
//
|
|
CATALOG_STATUS_SHUTTING_DOWN = 6
|
|
} CatalogStatus;
|
|
|
|
|
|
typedef enum _CatalogPausedReason {
|
|
//
|
|
// Not paused
|
|
//
|
|
CATALOG_PAUSED_REASON_NONE = 0,
|
|
|
|
//
|
|
// Paused due to high I/O
|
|
//
|
|
CATALOG_PAUSED_REASON_HIGH_IO = 1,
|
|
|
|
//
|
|
// Paused due to high CPU usage
|
|
//
|
|
CATALOG_PAUSED_REASON_HIGH_CPU = 2,
|
|
|
|
//
|
|
// Paused due to high NTF rate
|
|
//
|
|
CATALOG_PAUSED_REASON_HIGH_NTF_RATE = 3,
|
|
|
|
//
|
|
// Paused due to low battery
|
|
//
|
|
CATALOG_PAUSED_REASON_LOW_BATTERY = 4,
|
|
|
|
//
|
|
// Paused due to low memory
|
|
//
|
|
CATALOG_PAUSED_REASON_LOW_MEMORY = 5,
|
|
|
|
//
|
|
// Paused due to low disk space
|
|
//
|
|
CATALOG_PAUSED_REASON_LOW_DISK = 6,
|
|
|
|
//
|
|
// Paused due to need for delayed recovery
|
|
//
|
|
CATALOG_PAUSED_REASON_DELAYED_RECOVERY = 7,
|
|
|
|
//
|
|
// Paused due to user activity on the machine
|
|
//
|
|
CATALOG_PAUSED_REASON_USER_ACTIVE = 8,
|
|
|
|
//
|
|
// Paused by external request
|
|
//
|
|
CATALOG_PAUSED_REASON_EXTERNAL = 9,
|
|
|
|
//
|
|
// Paused by upgrading
|
|
//
|
|
CATALOG_PAUSED_REASON_UPGRADING = 10
|
|
|
|
} CatalogPausedReason;
|
|
|
|
[
|
|
object,
|
|
uuid(AB310581-AC80-11D1-8DF3-00C04FB6EF50),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISearchCatalogManager: IUnknown
|
|
{
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Basic catalog properties
|
|
//
|
|
|
|
//
|
|
// Get the name of the catalog
|
|
//
|
|
[propget]
|
|
HRESULT Name([out, retval, string] LPWSTR *pszName);
|
|
|
|
//
|
|
// Get or set parameters for the catalog
|
|
//
|
|
// Some examples:
|
|
// MaxBytesPerFile (307,200 bytes)
|
|
// MaxBytesPerProperty (8k)
|
|
// Default timeouts, authentication
|
|
|
|
HRESULT GetParameter([in, string] LPCWSTR pszName, [out, retval] PROPVARIANT **ppValue);
|
|
|
|
HRESULT SetParameter([in, string] LPCWSTR pszName, [in] PROPVARIANT *pValue);
|
|
|
|
//
|
|
// Get the status of the catalog
|
|
//
|
|
// If *pStatus is CATALOG_STATUS_PAUSED, further information
|
|
// may be obtained from the pPausedReason parameter.
|
|
//
|
|
HRESULT GetCatalogStatus([out] CatalogStatus *pStatus, [out] CatalogPausedReason *pPausedReason);
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Catalog control
|
|
//
|
|
|
|
//
|
|
// Reset the underlying catalog by rebuilding databases, etc. then
|
|
// reindex everything.
|
|
//
|
|
HRESULT Reset();
|
|
|
|
//
|
|
// Reindex all of the URL's in the catalog. The old information
|
|
// will remain until it is replaced by new information.
|
|
//
|
|
HRESULT Reindex();
|
|
|
|
//
|
|
// Force reindexing URL's that match the pattern
|
|
// This is useful to for example recrawl everything in a
|
|
// particular directory or with a particular extension.
|
|
//
|
|
HRESULT ReindexMatchingURLs([in, string] LPCWSTR pszPattern);
|
|
|
|
//
|
|
// Reindex all of the paths that the search root pszRootURL encompasses
|
|
//
|
|
HRESULT ReindexSearchRoot([in, string] LPCWSTR pszRootURL);
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Timeouts
|
|
//
|
|
|
|
//
|
|
// Timeout information for connection and data from TIMEOUT_INFO
|
|
//
|
|
|
|
//
|
|
// Set the current connect timeout
|
|
//
|
|
[propput]
|
|
HRESULT ConnectTimeout([in] DWORD dwConnectTimeout);
|
|
|
|
//
|
|
// Get the current connect timeout
|
|
//
|
|
[propget]
|
|
HRESULT ConnectTimeout([out, retval] DWORD *pdwConnectTimeout);
|
|
|
|
//
|
|
// Set the current data timeout
|
|
//
|
|
[propput]
|
|
HRESULT DataTimeout([in] DWORD dwDataTimeout);
|
|
|
|
|
|
//
|
|
// Get the current data timeout
|
|
//
|
|
[propget]
|
|
HRESULT DataTimeout([out, retval] DWORD *pdwDataTimeout);
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Catalog information
|
|
//
|
|
|
|
//
|
|
// Number of items in this catalog
|
|
//
|
|
HRESULT NumberOfItems([out, retval] LONG *plCount);
|
|
|
|
//
|
|
// Number of items pending indexing
|
|
//
|
|
HRESULT NumberOfItemsToIndex([out] LONG *plIncrementalCount, [out] LONG *plNotificationQueue,
|
|
[out] LONG *plHighPriorityQueue);
|
|
|
|
//
|
|
// URL currently being indexed
|
|
//
|
|
HRESULT URLBeingIndexed([out, retval, string] LPWSTR *pszUrl);
|
|
|
|
//
|
|
// Current indexing state of URL
|
|
//
|
|
HRESULT GetURLIndexingState([in, string] LPCWSTR pszURL, [out, retval] DWORD *pdwState);
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Notifications
|
|
//
|
|
|
|
|
|
|
|
HRESULT GetPersistentItemsChangedSink([out, retval] ISearchPersistentItemsChangedSink **ppISearchPersistentItemsChangedSink);
|
|
|
|
//
|
|
// When an item is indexed, a notification will be passed to
|
|
// the sink if the user token used when registering has access to
|
|
// the newly indexed item. If query is NULL, then InView will
|
|
// always be FALSE. If query is specified then InView will
|
|
// reflect whether or not the newly indexed item is then in
|
|
// the view. The select list will be used to return information
|
|
// on the newly indexed item. If the select list is only docid,
|
|
// then no values will be generated.
|
|
//
|
|
// Related to PQS
|
|
//
|
|
//
|
|
// When the interface is registered, a cookie is returned. This cookie
|
|
// is passed in to unregister the view
|
|
//
|
|
HRESULT RegisterViewForNotification([in, string] LPCWSTR pszView,
|
|
[in] ISearchViewChangedSink *pViewChangedSink,
|
|
[out] DWORD *pdwCookie);
|
|
|
|
//
|
|
// Get the change notification sink interface
|
|
//
|
|
HRESULT GetItemsChangedSink([in] ISearchNotifyInlineSite *pISearchNotifyInlineSite,
|
|
[in] REFIID riid,
|
|
[out, iid_is(riid)] void **ppv,
|
|
[out] GUID *pGUIDCatalogResetSignature,
|
|
[out] GUID *pGUIDCheckPointSignature,
|
|
[out] DWORD *pdwLastCheckPointNumber );
|
|
|
|
HRESULT UnregisterViewForNotification([in] DWORD dwCookie);
|
|
|
|
//
|
|
// Exclude (fExclude is TRUE): Add extension to list of excluded extensions
|
|
// Include: (fExclude is FALSE): Remove this from the list of excluded
|
|
// extensions so that it is indexed.
|
|
//
|
|
HRESULT SetExtensionClusion([in, string] LPCWSTR pszExtension, [in] BOOL fExclude);
|
|
|
|
//
|
|
// Enumerate excluded extensions - extensions are included by default,
|
|
// so only the excluded ones need to be looked at.
|
|
//
|
|
HRESULT EnumerateExcludedExtensions([out, retval] IEnumString **ppExtensions);
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Return a query helper
|
|
//
|
|
|
|
HRESULT GetQueryHelper([out, retval] ISearchQueryHelper **ppSearchQueryHelper);
|
|
|
|
//
|
|
// Sensitive to diacritics
|
|
//
|
|
[propput]
|
|
HRESULT DiacriticSensitivity([in] BOOL fDiacriticSensitive);
|
|
|
|
[propget]
|
|
HRESULT DiacriticSensitivity([out, retval] BOOL *pfDiacriticSensitive);
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Crawl scope manager for catalog
|
|
//
|
|
|
|
HRESULT GetCrawlScopeManager([out, retval] ISearchCrawlScopeManager **ppCrawlScopeManager);
|
|
};
|
|
|
|
|
|
|
|
[v1_enum] enum tagPRIORITIZE_FLAGS
|
|
{
|
|
// In prioritization, kick off a retry of items that have failed indexing with the
|
|
// requested pattern.
|
|
|
|
PRIORITIZE_FLAG_RETRYFAILEDITEMS = 0x00000001,
|
|
|
|
// Valid only in combination with PRIORITIZE_FLAG_RETRYFAILEDITEMS.
|
|
// Normally, items are no longer retried after a series of failed indexing attempts.
|
|
// This flag indicates that those items should also be re-attempted.
|
|
|
|
PRIORITIZE_FLAG_IGNOREFAILURECOUNT = 0x00000002
|
|
};
|
|
typedef int PRIORITIZE_FLAGS;
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(7AC3286D-4D1D-4817-84FC-C1C85E3AF0D9),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISearchCatalogManager2 : ISearchCatalogManager
|
|
{
|
|
//
|
|
// Allow the indexer to prioritize the given pattern of URLs over other potential
|
|
// tasks.
|
|
//
|
|
HRESULT PrioritizeMatchingURLs([in, string] LPCWSTR pszPattern, [in] PRIORITIZE_FLAGS dwPrioritizeFlags);
|
|
};
|
|
|
|
|
|
|