/******************************************************************************

Copyright (c) 1999 Microsoft Corporation

Module Name:
    HelpService.idl

Abstract:
    This file contains the declaration of the set of coclasses and interfaces
    implemented by the Help Center Service.

Revision History:
    Davide Massarenti   (Dmassare)  03/14/2000
        created

    Kalyani Narlanka    (Kalyanin)  10/20/2000
        Added functionality for Unsolicited Remote Control

******************************************************************************/

cpp_quote( "#include <HelpServiceDID.h>" )
#include <HelpServiceDID.h>

[
    object,
    uuid(833E4200-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHService Interface"),
    pointer_default(unique)
]
interface IPCHService : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_SVC__REMOTESKUS)] HRESULT RemoteSKUs( [out, retval] IPCHCollection* *pVal );


    ////////////////////////////////////////////////////////////////////////////////

    //
    // Methods
    //
    [id(DISPID_PCH_SVC__ISTRUSTED)] HRESULT IsTrusted( [in] BSTR bstrURL, [out, retval] VARIANT_BOOL *pfTrusted );

    ////////////////////////////////////////

    [id(DISPID_PCH_SVC__UTILITY            )] HRESULT Utility            ( [in] BSTR bstrSKU, [in] long lLCID, [out] IPCHUtility*            *pVal );
    [id(DISPID_PCH_SVC__REMOTEHELPCONTENTS )] HRESULT RemoteHelpContents ( [in] BSTR bstrSKU, [in] long lLCID, [out] IPCHRemoteHelpContents* *pVal );

    ////////////////////////////////////////

    [id(DISPID_PCH_SVC__REGISTERHOST       )] HRESULT RegisterHost       (                       [in] BSTR bstrID                     , [in ] IUnknown*   pObj );
    [id(DISPID_PCH_SVC__CREATESCRIPTWRAPPER)] HRESULT CreateScriptWrapper( [in] REFCLSID rclsid, [in] BSTR bstrCode, [in] BSTR bstrURL, [out] IUnknown* *ppObj );

    ////////////////////////////////////////

    [id(DISPID_PCH_SVC__TRIGGERSCHEDULEDDATACOLLECTION)] HRESULT TriggerScheduledDataCollection( [in] VARIANT_BOOL fStart );
    [id(DISPID_PCH_SVC__PREPAREFORSHUTDOWN            )] HRESULT PrepareForShutdown            (                          );

    [id(DISPID_PCH_SVC__FORCESYSTEMRESTORE)] HRESULT ForceSystemRestore(                                    );
    [id(DISPID_PCH_SVC__UPGRADEDETECTED	  )] HRESULT UpgradeDetected   (                                    );
    [id(DISPID_PCH_SVC__MUI_INSTALL    	  )] HRESULT MUI_Install       ( [in] long LCID, [in] BSTR bstrFile );
    [id(DISPID_PCH_SVC__MUI_UNINSTALL  	  )] HRESULT MUI_Uninstall     ( [in] long LCID                     );

    ////////////////////////////////////////

    ////////////////////////////////////////

    [id(DISPID_PCH_SVC__REMOTECONNECTIONPARMS)] HRESULT RemoteConnectionParms( [in] 		 BSTR 			   bstrUserName         ,
																			   [in] 		 BSTR 			   bstrDomainName       ,
																			   [in] 		 long 			   lSessionID           ,
																			   [in] 		 BSTR 			   bstrUserHelpBlob     ,
																			   [out, retval] BSTR 			 *pbstrConnectionString );
    [id(DISPID_PCH_SVC__REMOTEUSERSESSIONINFO)] HRESULT RemoteUserSessionInfo( [out, retval] IPCHCollection* *pVal                  );
};

[
    object,
    uuid(833E4201-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHRemoteHelpContents Interface"),
    pointer_default(unique)
]
interface IPCHRemoteHelpContents : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_RHC__SKU        )] HRESULT SKU        ( [out, retval] BSTR    *pVal );
    [propget, id(DISPID_PCH_RHC__LANGUAGE   )] HRESULT Language   ( [out, retval] long    *pVal );
    [propget, id(DISPID_PCH_RHC__LISTOFFILES)] HRESULT ListOfFiles( [out, retval] VARIANT *pVal );

    //
    // Methods
    //
    [id(DISPID_PCH_RHC__GETDATABASE)] HRESULT GetDatabase(                         [out, retval] IUnknown* *pVal );
    [id(DISPID_PCH_RHC__GETFILE    )] HRESULT GetFile    ( [in] BSTR bstrFileName, [out, retval] IUnknown* *pVal );
};

////////////////////////////////////////////////////////////////////////////////

#ifndef NOJETBLUECOM
[
    object,
    uuid(833E4F01-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHDBCollection Interface"),
    pointer_default(unique)
]
interface IPCHDBCollection : IDispatch
{
    [propget, id(DISPID_NEWENUM)] HRESULT _NewEnum(                      [out, retval] IUnknown* *pVal    );
    [propget, id(DISPID_VALUE)  ] HRESULT Item    ( [in] VARIANT vIndex, [out, retval] VARIANT   *ppEntry );
    [propget                    ] HRESULT Count   (                      [out, retval] long      *pVal    );
};

[
    object,
    uuid(833E4F02-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHDBColumn Interface"),
    pointer_default(unique)
]
interface IPCHDBColumn : IDispatch
{
    [propget] HRESULT Name ( [out, retval] BSTR    *pVal   );
    [propget] HRESULT Type ( [out, retval] long    *pVal   );
    [propget] HRESULT Bits ( [out, retval] long    *pVal   );
    [propget] HRESULT Value( [out, retval] VARIANT *pVal   );
    [propput] HRESULT Value( [in]          VARIANT  newVal );
};

[
    object,
    uuid(833E4F03-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHDBIndex Interface"),
    pointer_default(unique)
]
interface IPCHDBIndex : IDispatch
{
    [propget] HRESULT Name   ( [out, retval] BSTR              *pVal );
    [propget] HRESULT Columns( [out, retval] IPCHDBCollection* *pVal );
};

[
    object,
    uuid(833E4F04-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHDBTable Interface"),
    pointer_default(unique)
]
interface IPCHDBTable : IDispatch
{
    [propget] HRESULT Name   ( [out, retval] BSTR              *pVal );
    [propget] HRESULT Columns( [out, retval] IPCHDBCollection* *pVal );
    [propget] HRESULT Indexes( [out, retval] IPCHDBCollection* *pVal );

    ////////////////////

    HRESULT SelectIndex  ( [in] BSTR bstrIndex, [in] long grbit );
    HRESULT SetIndexRange(                      [in] long grbit );

    HRESULT PrepareInsert();
    HRESULT PrepareUpdate();

    HRESULT Move( [in] long grbit, [in] long    cRow, [out, retval] VARIANT_BOOL *pfValid );
    HRESULT Seek( [in] long grbit, [in] VARIANT vKey, [out, retval] VARIANT_BOOL *pfValid );

    HRESULT UpdateRecord();
    HRESULT DeleteRecord();
};

[
    object,
    uuid(833E4F05-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHDBDatabase Interface"),
    pointer_default(unique)
]
interface IPCHDBDatabase : IDispatch
{
    [propget] HRESULT Name  ( [out, retval] BSTR              *pVal );
    [propget] HRESULT Tables( [out, retval] IPCHDBCollection* *pVal );

    HRESULT AttachTable( [in] BSTR bstrName, [in, optional] VARIANT vXMLDef, [out,retval] IPCHDBTable* *pVal );
};

[
    object,
    uuid(833E4F06-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHDBSession Interface"),
    pointer_default(unique)
]
interface IPCHDBSession : IDispatch
{
    [propget] HRESULT Databases( [out, retval] IPCHDBCollection* *pVal );

    HRESULT AttachDatabase( [in] BSTR bstrName, [in, optional] VARIANT vCreate, [out,retval] IPCHDBDatabase* *pVal );

    HRESULT BeginTransaction   ();
    HRESULT CommitTransaction  ();
    HRESULT RollbackTransaction();
};
#endif
