xpmgr/BuildTools/Include/srchprth.idl

201 lines
5.8 KiB
Plaintext

//+----------------------------------------------------------------------------
//
// Microsoft (R) Search
// Copyright (C) Microsoft Corporation, 1998-2000.
//
// File: srchprth.idl
//
// Contents: Search Protocol Handler Data Structures and Interfaces
//
// Structures: TIMEOUT_INFO
// PROXY_INFO
// AUTHENTICATION_INFO
// INCREMENTAL_ACCESS_INFO
//
// Interfaces: ISearchProtocol
// IProtocolHandlerSite
// ISearchUrlAccessor
//
// History: 02/09/00 mcheng Created
//
//+----------------------------------------------------------------------------
interface IUrlAccessor;
#pragma pack(8)
typedef struct _TIMEOUT_INFO
{
DWORD dwSize; // Actual size of structure (bytes)
DWORD dwConnectTimeout; // Timeout for connection (seconds)
DWORD dwDataTimeout; // Timeout for data (seconds)
} TIMEOUT_INFO;
typedef enum _PROXY_ACCESS
{
PROXY_ACCESS_PRECONFIG = 0,
PROXY_ACCESS_DIRECT,
PROXY_ACCESS_PROXY
} PROXY_ACCESS;
typedef struct _PROXY_INFO
{
DWORD dwSize; // Actual size of structure (bytes)
LPCWSTR pcwszUserAgent; //
PROXY_ACCESS paUseProxy; //
BOOL fLocalBypass; // Bypass proxy for local address
DWORD dwPortNumber;
LPCWSTR pcwszProxyName;
LPCWSTR pcwszBypassList;
} PROXY_INFO;
typedef enum _AUTH_TYPE
{
eAUTH_TYPE_ANONYMOUS = 0,
eAUTH_TYPE_NTLM,
eAUTH_TYPE_BASIC
} AUTH_TYPE;
typedef struct _AUTHENTICATION_INFO
{
DWORD dwSize; // Actual size of structure (bytes)
AUTH_TYPE atAuthenticationType; // Anonymous, Basic, or NTLM
LPCWSTR pcwszUser;
LPCWSTR pcwszPassword;
} AUTHENTICATION_INFO;
typedef struct _INCREMENTAL_ACCESS_INFO
{
DWORD dwSize; // Actual size of structure (bytes)
FILETIME ftLastModifiedTime;
} INCREMENTAL_ACCESS_INFO;
typedef struct _ITEM_INFO
{
DWORD dwSize; // Actual size of structure (bytes)
LPCWSTR pcwszFromEMail;
LPCWSTR pcwszApplicationName;
LPCWSTR pcwszCatalogName;
LPCWSTR pcwszContentClass;
} ITEM_INFO;
interface ISearchProtocol;
interface IProtocolHandlerSite;
//+----------------------------------------------------------------------------
//
// Interface: ISearchProtocol
//
// Comment: This is the main protocol handler interface where accessors
// are created. Initialization information is passed in through
// this interface. Re-using or pooling of accessors are
// encouraged, if the protocol allows. The CloseAccessor method
// is there to support this re-use/pooling.
//
// History: 02/18/00 mcheng Created
//
//+----------------------------------------------------------------------------
[
object,
local,
uuid(c73106ba-ac80-11d1-8df3-00c04fb6ef4f),
helpstring("Protocol Handler Interface"),
pointer_default(unique)
]
interface ISearchProtocol : IUnknown
{
HRESULT Init([in] TIMEOUT_INFO *pTimeoutInfo,
[in] IProtocolHandlerSite *pProtocolHandlerSite,
[in] PROXY_INFO *pProxyInfo);
HRESULT CreateAccessor([in] LPCWSTR pcwszURL,
[in] AUTHENTICATION_INFO *pAuthenticationInfo,
[in] INCREMENTAL_ACCESS_INFO *pIncrementalAccessInfo,
[in] ITEM_INFO *pItemInfo,
[out] IUrlAccessor **ppAccessor);
// ISSUE: The last step will cause us to return ISearchUrlAccessor
// [out] ISearchUrlAccessor **ppAccessor);
// ISSUE: Pass ISearchUrlAccessor when we support that
HRESULT CloseAccessor([in] IUrlAccessor *pAccessor);
HRESULT ShutDown();
}
//+----------------------------------------------------------------------------
//
// Interface: ISearchProtocol2
//
// Comment: Protocol handler interface which allows user data that is
// passed in with notifications to reach the PHs.
//
// History: 11/11/05 mabarbis Created
//
//+----------------------------------------------------------------------------
[
object,
local,
uuid(7789F0B2-B5B2-4722-8B65-5DBD150697A9),
helpstring("Protocol Handler Interface"),
pointer_default(unique)
]
interface ISearchProtocol2 : ISearchProtocol
{
HRESULT CreateAccessorEx([in] LPCWSTR pcwszURL,
[in] AUTHENTICATION_INFO *pAuthenticationInfo,
[in] INCREMENTAL_ACCESS_INFO *pIncrementalAccessInfo,
[in] ITEM_INFO *pItemInfo,
[in] const BLOB *pUserData,
[out] IUrlAccessor **ppAccessor);
}
//+----------------------------------------------------------------------------
//
// Interface: IProtocolHandlerSite
//
// Comment: This interface allows protocol handlers to get "services" from
// the filter daemon. If a protocol handler needs to get an
// IFilter for an embedded document, it can do so by calling the
// GetFilter method.
//
// History: 02/18/00 mcheng Created
//
//+----------------------------------------------------------------------------
[
object,
local,
uuid(0b63e385-9ccc-11d0-bcdb-00805fccce04),
helpstring("Protocol Handler Site Interface"),
pointer_default(unique)
]
interface IProtocolHandlerSite : IUnknown
{
HRESULT GetFilter([in] CLSID *pclsidObj,
[in] LPCWSTR pcwszContentType,
[in] LPCWSTR pcwszExtension,
[out] IFilter **ppFilter);
};
#pragma pack()