mirror of https://github.com/UMSKT/xpmgr.git
410 lines
11 KiB
Plaintext
410 lines
11 KiB
Plaintext
//+----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (c) 2005 Microsoft Corporation.
|
|
//
|
|
// File: SearchCrawlScopeManager.idl
|
|
//
|
|
// Purpose: Search Crawl Scope Manager Interface Description
|
|
//
|
|
// History: 08/14/2005 louisg Modified
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ISearchRoot - Information about a search root
|
|
//
|
|
// The information about a search root applies to URL's that have the
|
|
// root URL as a prefix. (Longest prefix dominates.)
|
|
//
|
|
[
|
|
object,
|
|
uuid(04C18CCF-1F57-4CBD-88CC-3900F5195CE3),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISearchRoot : IUnknown
|
|
{
|
|
//
|
|
// Queue a scheduled task
|
|
//
|
|
[propput]
|
|
HRESULT Schedule([in, string] LPCWSTR pszTaskArg);
|
|
|
|
[propget]
|
|
HRESULT Schedule([out, retval, string] LPWSTR *ppszTaskArg);
|
|
|
|
//
|
|
// Set Root URL
|
|
//
|
|
[propput]
|
|
HRESULT RootURL([in, string] LPCWSTR pszURL);
|
|
|
|
//
|
|
// Get Root URL
|
|
//
|
|
[propget]
|
|
HRESULT RootURL([out, retval, string] LPWSTR *ppszURL);
|
|
|
|
|
|
//
|
|
// TRUE for hierarchical trees like the file system
|
|
// FALSE for things like web pages
|
|
// This comes from the underlying protocol definition.
|
|
//
|
|
[propput]
|
|
HRESULT IsHierarchical([in] BOOL fIsHierarchical);
|
|
|
|
[propget]
|
|
HRESULT IsHierarchical([out, retval] BOOL *pfIsHierarchical);
|
|
|
|
|
|
//
|
|
// TRUE if provides notifications
|
|
//
|
|
// This is not protocol specific since for example file: could
|
|
// have a CDFS in its space.
|
|
//
|
|
[propput]
|
|
HRESULT ProvidesNotifications([in] BOOL fProvidesNotifications);
|
|
|
|
[propget]
|
|
HRESULT ProvidesNotifications([out, retval] BOOL *pfProvidesNotifications);
|
|
|
|
|
|
//
|
|
// UseNotificationsOnly - in other words, don't crawl this root
|
|
//
|
|
[propput]
|
|
HRESULT UseNotificationsOnly([in] BOOL fUseNotificationsOnly);
|
|
|
|
[propget]
|
|
HRESULT UseNotificationsOnly([out, retval] BOOL *pfUseNotificationsOnly);
|
|
|
|
|
|
//
|
|
// Methods below apply to start pages and primarily to non-hierarchical sources
|
|
//
|
|
|
|
//
|
|
// How deep to enumerate links when crawling
|
|
//
|
|
[propput]
|
|
HRESULT EnumerationDepth([in] DWORD dwDepth);
|
|
|
|
[propget]
|
|
HRESULT EnumerationDepth([out, retval] DWORD *pdwDepth);
|
|
|
|
|
|
//
|
|
// How many hosts away to crawl
|
|
//
|
|
[propput]
|
|
HRESULT HostDepth([in] DWORD dwDepth);
|
|
|
|
[propget]
|
|
HRESULT HostDepth([out, retval] DWORD *pdwDepth);
|
|
|
|
|
|
//
|
|
// FollowDirectories for Hierarchical stores
|
|
//
|
|
[propput]
|
|
HRESULT FollowDirectories([in] BOOL fFollowDirectories);
|
|
|
|
[propget]
|
|
HRESULT FollowDirectories([out, retval] BOOL *pfFollowDirectories);
|
|
|
|
//
|
|
// Authentication information for accessing URL from
|
|
// AUTHENTICATION_INFO defined in srchprth.idl
|
|
//
|
|
[propput]
|
|
HRESULT AuthenticationType([in] AUTH_TYPE authType);
|
|
|
|
[propget]
|
|
HRESULT AuthenticationType([out, retval] AUTH_TYPE *pAuthType);
|
|
|
|
|
|
[propput]
|
|
HRESULT User([in, string] LPCWSTR pszUser);
|
|
|
|
[propget]
|
|
HRESULT User([out, retval, string] LPWSTR *ppszUser);
|
|
|
|
|
|
[propput]
|
|
HRESULT Password([in, string] LPCWSTR pszPassword);
|
|
|
|
[propget]
|
|
HRESULT Password([out, retval, string] LPWSTR *ppszPassword);
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// IEnumSearchRoots - Enumerate all the search roots
|
|
//
|
|
|
|
[
|
|
object,
|
|
uuid(AB310581-AC80-11D1-8DF3-00C04FB6EF52),
|
|
pointer_default(unique)
|
|
]
|
|
interface IEnumSearchRoots : IUnknown
|
|
{
|
|
HRESULT Next([in] ULONG celt,
|
|
[out, size_is(celt)] ISearchRoot **rgelt,
|
|
[in, out, unique] ULONG *pceltFetched);
|
|
|
|
HRESULT Skip([in] ULONG celt);
|
|
|
|
HRESULT Reset();
|
|
|
|
HRESULT Clone([out, retval] IEnumSearchRoots **ppenum);
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ISearchScopeRules - Define scope for crawling and indexing
|
|
//
|
|
|
|
typedef [v1_enum] enum _FOLLOW_FLAGS {
|
|
//
|
|
// Whether or not to index complex URLs (contains '?')
|
|
//
|
|
FF_INDEXCOMPLEXURLS = 0x00000001,
|
|
|
|
//
|
|
// Suppress indexing this URL (i.e., follow but do not index)
|
|
//
|
|
FF_SUPPRESSINDEXING = 0x00000002,
|
|
|
|
} FOLLOW_FLAGS;
|
|
|
|
[
|
|
object,
|
|
uuid(AB310581-AC80-11D1-8DF3-00C04FB6EF53),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISearchScopeRule : IUnknown
|
|
{
|
|
//
|
|
// Zero terminated pattern or URL
|
|
//
|
|
[propget]
|
|
HRESULT PatternOrURL([out, retval, string] LPWSTR *ppszPatternOrURL);
|
|
|
|
//
|
|
// Include or exclude rule
|
|
//
|
|
[propget]
|
|
HRESULT IsIncluded([out, retval] BOOL *pfIsIncluded);
|
|
|
|
//
|
|
// Is a default rule
|
|
//
|
|
[propget]
|
|
HRESULT IsDefault([out, retval] BOOL *pfIsDefault);
|
|
|
|
//
|
|
// Follow properties as described by FOLLOW_FLAGS
|
|
//
|
|
[propget]
|
|
HRESULT FollowFlags([out, retval] DWORD *pFollowFlags);
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// IEnumSearchScopeRules - Enumerate scope rules
|
|
//
|
|
[
|
|
object,
|
|
uuid(AB310581-AC80-11D1-8DF3-00C04FB6EF54),
|
|
pointer_default(unique)
|
|
]
|
|
interface IEnumSearchScopeRules : IUnknown
|
|
{
|
|
HRESULT Next([in] ULONG celt,
|
|
[out, size_is(celt)] ISearchScopeRule **pprgelt,
|
|
[in, out, unique] ULONG *pceltFetched);
|
|
|
|
HRESULT Skip([in] ULONG celt);
|
|
|
|
HRESULT Reset();
|
|
|
|
HRESULT Clone([out, retval] IEnumSearchScopeRules **ppenum);
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Reason for inclusion or exclusion of a given URL
|
|
//
|
|
|
|
typedef enum {
|
|
//
|
|
// By unknown scope - i.e., there is no scope that would include or
|
|
// exclude this URL so it is by default excluded
|
|
//
|
|
CLUSIONREASON_UNKNOWNSCOPE = 0,
|
|
|
|
//
|
|
// By default rule
|
|
//
|
|
CLUSIONREASON_DEFAULT = 1,
|
|
|
|
//
|
|
// By a user rule
|
|
//
|
|
CLUSIONREASON_USER = 2,
|
|
|
|
//
|
|
// By group policy
|
|
//
|
|
CLUSIONREASON_GROUPPOLICY = 3
|
|
} CLUSION_REASON;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ISearchCrawlScopeManager - manipulate crawlscopes and searchroots
|
|
//
|
|
[
|
|
object,
|
|
uuid(AB310581-AC80-11D1-8DF3-00C04FB6EF55),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISearchCrawlScopeManager : IUnknown
|
|
{
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Roots
|
|
//
|
|
// A search root defines information about the root of some scope.
|
|
// It doesn't automatically include or exclude anything--it just
|
|
// defines the characteristic of the root.
|
|
//
|
|
|
|
|
|
//
|
|
// Add a default scope rule
|
|
//
|
|
HRESULT AddDefaultScopeRule([in, string] LPCWSTR pszURL,
|
|
[in] BOOL fInclude,
|
|
//
|
|
// Follow properties as described by FOLLOW_FLAGS
|
|
//
|
|
[in] DWORD fFollowFlags);
|
|
|
|
//
|
|
// Add a new root. Overrides any existing root definition for URL
|
|
//
|
|
HRESULT AddRoot([in] ISearchRoot *pSearchRoot);
|
|
|
|
//
|
|
// Remove an existing root
|
|
//
|
|
HRESULT RemoveRoot([in] LPCWSTR pszURL);
|
|
|
|
//
|
|
// Enumerate over the registered roots
|
|
//
|
|
HRESULT EnumerateRoots([out, retval] IEnumSearchRoots **ppSearchRoots);
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Scope rules
|
|
//
|
|
|
|
HRESULT AddHierarchicalScope([in, string] LPCWSTR pszURL,
|
|
[in] BOOL fInclude, [in] BOOL fDefault,
|
|
[in] BOOL fOverrideChildren);
|
|
|
|
|
|
//
|
|
// Add a user scope rule
|
|
//
|
|
HRESULT AddUserScopeRule([in, string] LPCWSTR pszURL,
|
|
[in] BOOL fInclude,
|
|
//
|
|
// TRUE to override all children rules - this in effect removes all of them
|
|
//
|
|
[in] BOOL fOverrideChildren,
|
|
//
|
|
// Follow properties as described by FOLLOW_FLAGS
|
|
//
|
|
[in] DWORD fFollowFlags);
|
|
|
|
//
|
|
// Remove a scope rule - either user or default
|
|
//
|
|
HRESULT RemoveScopeRule([in, string] LPCWSTR pszRule);
|
|
|
|
//
|
|
// Enumerate over default scope rules
|
|
//
|
|
HRESULT EnumerateScopeRules([out, retval] IEnumSearchScopeRules **ppSearchScopeRules);
|
|
|
|
//
|
|
// TRUE if any parent is explicitly included/excluded
|
|
//
|
|
HRESULT HasParentScopeRule([in, string] LPCWSTR pszURL, [out, retval] BOOL *pfHasParentRule);
|
|
|
|
//
|
|
// TRUE if any child explicitly included/excluded
|
|
//
|
|
HRESULT HasChildScopeRule([in, string] LPCWSTR pszURL, [out, retval] BOOL *pfHasChildRule);
|
|
|
|
//
|
|
// TRUE if URL is included in crawl scope, FALSE if excluded - and the reason for either
|
|
//
|
|
HRESULT IncludedInCrawlScope([in, string] LPCWSTR pszURL, [out, retval] BOOL *pfIsIncluded);
|
|
|
|
HRESULT IncludedInCrawlScopeEx([in, string] LPCWSTR pszURL, [out] BOOL *pfIsIncluded, [out] CLUSION_REASON *pReason);
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Transactions
|
|
//
|
|
|
|
//
|
|
// Revert to default scopes only
|
|
//
|
|
HRESULT RevertToDefaultScopes();
|
|
|
|
//
|
|
// Save changes made
|
|
// This allows a series of changes to be saved or abandoned. ScopeRules
|
|
// do not take effect until SaveAll is called to commit them.
|
|
//
|
|
HRESULT SaveAll();
|
|
|
|
// Get the version ID of the url's parent inclusion
|
|
// This ID will most likely change if a scope rule is removed and then added back
|
|
// returns S_FALSE in case no parent inclusion URL was found
|
|
|
|
HRESULT GetParentScopeVersionId([in, string] LPCWSTR pszURL, [out, retval] LONG *plScopeId);
|
|
|
|
//
|
|
// Removes a default scope rule
|
|
//
|
|
|
|
HRESULT RemoveDefaultScopeRule([in, string] LPCWSTR pszURL);
|
|
};
|
|
|
|
[
|
|
object,
|
|
uuid(6292F7AD-4E19-4717-A534-8FC22BCD5CCD),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISearchCrawlScopeManager2 : ISearchCrawlScopeManager
|
|
{
|
|
[local] HRESULT GetVersion([out] long **plVersion, [out] HANDLE *phFileMapping);
|
|
// this is a dummy function with no implementation. It's only needed because otherwise COM won't let remote clients call
|
|
// GetVersion because it's marked local. call_as tells COM to allow remote clients to call GetVersion because our custom proxy
|
|
// will forward the calls through RemoteGetVersion, but we don't actually implement it that way so RemoteGetVersion is a dummy.
|
|
[call_as(GetVersion)] HRESULT RemoteGetVersion([out] long *plVersion);
|
|
};
|