//+----------------------------------------------------------------------------
//
//  Microsoft (R) Search
//  Copyright (C) Microsoft Corporation, 1998-2000.
//
//  File:       urlaccsdk.idl
//
//  Contents:   Search Protocol Handler URL Accessor Interface
//
//  Interfaces: IUrlAccessor
//
//  History:    11/11/00    mcheng      Created
//
//+----------------------------------------------------------------------------

import "propsys.idl";

[
    object,
    uuid(0b63e318-9ccc-11d0-bcdb-00805fccce04),
    helpstring("URL Accessor Interface"),
    public,
    pointer_default(unique)
]
interface IUrlAccessor: IUnknown
{
    HRESULT AddRequestParameter([in] PROPSPEC *pSpec,
                                [in] PROPVARIANT *pVar);

    HRESULT GetDocFormat([out, length_is(*pdwLength), size_is(dwSize)] WCHAR wszDocFormat[],
                            [in] DWORD dwSize,
                            [out] DWORD *pdwLength);

    HRESULT GetCLSID([out] CLSID *pClsid);

    HRESULT GetHost([out, length_is(*pdwLength), size_is(dwSize)] WCHAR wszHost[],
                            [in] DWORD dwSize,
                            [out] DWORD *pdwLength);

    HRESULT IsDirectory();

    HRESULT GetSize([out] ULONGLONG *pllSize);

    HRESULT GetLastModified([out] FILETIME *pftLastModified);

    HRESULT GetFileName([out, length_is(*pdwLength), size_is(dwSize)] WCHAR wszFileName[],
                        [in] DWORD dwSize,
                        [out] DWORD *pdwLength);

    HRESULT GetSecurityDescriptor([out, size_is(dwSize)] BYTE *pSD,
                                    [in] DWORD dwSize,
                                    [out] DWORD *pdwLength);

    HRESULT GetRedirectedURL([out, length_is(*pdwLength), size_is(dwSize)] WCHAR wszRedirectedURL[],
                                [in] DWORD dwSize,
                                [out] DWORD *pdwLength);

      HRESULT GetSecurityProvider([out] CLSID *pSPClsid);

    HRESULT BindToStream([out] IStream **ppStream);
    HRESULT BindToFilter([out] IFilter **ppFilter);
};

[
    object,
    uuid(c7310734-ac80-11d1-8df3-00c04fb6ef4f),
    helpstring("URL Accessor Interface"),
    public,
    pointer_default(unique)
]

interface IUrlAccessor2: IUrlAccessor
{
    HRESULT  GetDisplayUrl([out, length_is(*pdwLength), size_is(dwSize)] WCHAR wszDocUrl[],
                            [in] DWORD dwSize,
                            [out] DWORD *pdwLength);

    HRESULT IsDocument();

    HRESULT GetCodePage([out, length_is(*pdwLength), size_is(dwSize)] WCHAR wszCodePage[],
                            [in] DWORD dwSize,
                            [out] DWORD *pdwLength);
};

[
    object,
    uuid(6FBC7005-0455-4874-B8FF-7439450241A3),
    helpstring("URL Accessor Interface"),
    public,
    pointer_default(unique)
]

interface IUrlAccessor3: IUrlAccessor2
{
    HRESULT GetImpersonationSidBlobs([in] LPCWSTR pcwszURL, [out] DWORD *pcSidCount, [out] BLOB **ppSidBlobs);
};

[
    object,
    uuid(5CC51041-C8D2-41d7-BCA3-9E9E286297DC),
    helpstring("URL Accessor Interface"),
    public,
    pointer_default(unique)
]

interface IUrlAccessor4: IUrlAccessor3
{
    HRESULT ShouldIndexItemContent([out] BOOL *pfIndexContent);
    HRESULT ShouldIndexProperty([in] REFPROPERTYKEY key, [out] BOOL *pfIndexProperty);
};
