//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName:            WMSInternalAdminNetSource.idl
//
// Abstract:            
//
//*****************************************************************************

cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("//  Microsoft Windows Media")
cpp_quote("//  Copyright (C) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//  Automatically generated by Midl from WMSInternalAdminNetSource.idl ")
cpp_quote("//")
cpp_quote("// DO NOT EDIT THIS FILE.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")

import "oaidl.idl";
import "wmnetsourcecreator.idl";


cpp_quote( "EXTERN_GUID( IID_IWMSInternalAdminNetSource, 0x8BB23E5F,0xD127,0x4afb,0x8D,0x02,0xAE,0x5B,0x66,0xD5,0x4C,0x78  );" )
cpp_quote( "EXTERN_GUID( IID_IWMSInternalAdminNetSource2, 0xE74D58C3,0xCF77,0x4b51,0xAF,0x17,0x74,0x46,0x87,0xC4,0x3E,0xAE  );" )
cpp_quote( "EXTERN_GUID( IID_IWMSInternalAdminNetSource3, 0x6b63d08e,0x4590,0x44af,0x9e,0xb3,0x57,0xff,0x1e,0x73,0xbf,0x80  );" )


typedef [public, uuid( 068A6457-4099-4c72-9AA9-9105C1C03177)] enum NETSOURCE_URLCREDPOLICY_SETTINGS
{
    NETSOURCE_URLCREDPOLICY_SETTING_SILENTLOGONOK   = 0,
    NETSOURCE_URLCREDPOLICY_SETTING_MUSTPROMPTUSER  = 1,
    NETSOURCE_URLCREDPOLICY_SETTING_ANONYMOUSONLY   = 2
} NETSOURCE_URLCREDPOLICY_SETTINGS;


////////////////////////////////////////////////////////////////////////////////////////////////////
//
// This interface is used by WMP 7 and MPXP
//

[
    local,
    object,
    uuid(8BB23E5F-D127-4afb-8D02-AE5B66D54C78),
    helpstring("IWMSInternalAdminNetSource Interface"),
    pointer_default(unique)
]
interface IWMSInternalAdminNetSource : IUnknown
{
    HRESULT Initialize( [in] IUnknown *pSharedNamespace, 
                        [in] IUnknown *pNamespaceNode, 
                        [in] INSNetSourceCreator *pNetSourceCreator,
                        [in] BOOL fEmbeddedInServer );

    HRESULT GetNetSourceCreator( [out] INSNetSourceCreator **ppNetSourceCreator );

    //
    // Authentication
    //
    HRESULT SetCredentials( [in] BSTR bstrRealm, [in] BSTR bstrName, [in] BSTR bstrPassword, [in] BOOL fPersist, [in] BOOL fConfirmedGood );
    HRESULT GetCredentials( [in] BSTR bstrRealm, [out] BSTR *pbstrName, [out] BSTR *pbstrPassword, [out] BOOL *pfConfirmedGood );
    HRESULT DeleteCredentials( [in] BSTR bstrRealm );
    HRESULT GetCredentialFlags( [out] DWORD *lpdwFlags );
    HRESULT SetCredentialFlags( [in] DWORD dwFlags );

    //
    // Proxy
    //
    HRESULT FindProxyForURL( [in] BSTR bstrProtocol, 
                             [in] BSTR bstrHost, 
                             [out] BOOL *pfProxyEnabled, 
                             [out] BSTR *pbstrProxyServer, 
                             [out] DWORD *pdwProxyPort, 
                             [in, out] DWORD *pdwProxyContext );

    HRESULT RegisterProxyFailure( [in] HRESULT hrParam, [in] DWORD dwProxyContext );
    HRESULT ShutdownProxyContext( [in] DWORD dwProxyContext );
    HRESULT IsUsingIE( [in] DWORD dwProxyContext, [out] BOOL *pfIsUsingIE );
};


////////////////////////////////////////////////////////////////////////////////////////////////////
//
// This interface is used by WMP 7 and MPXP
//

[
    local,
    object,
    uuid(E74D58C3-CF77-4b51-AF17-744687C43EAE),
    helpstring("IWMSInternalAdminNetSource2 Interface"),
    pointer_default(unique)
]
interface IWMSInternalAdminNetSource2 : IUnknown
{
    //
    // Authentication
    //
    HRESULT SetCredentialsEx( [in] BSTR bstrRealm,
                              [in] BSTR bstrUrl,
                              [in] BOOL fProxy,
                              [in] BSTR bstrName,
                              [in] BSTR bstrPassword,
                              [in] BOOL fPersist,
                              [in] BOOL fConfirmedGood );

    HRESULT GetCredentialsEx( [in] BSTR bstrRealm,
                              [in] BSTR bstrUrl,
                              [in] BOOL fProxy,
                              [out] NETSOURCE_URLCREDPOLICY_SETTINGS *pdwUrlPolicy,
                              [out] BSTR *pbstrName,
                              [out] BSTR *pbstrPassword,
                              [out] BOOL *pfConfirmedGood );

    HRESULT DeleteCredentialsEx( [in] BSTR bstrRealm, [in] BSTR bstrUrl, [in] BOOL fProxy );

    HRESULT FindProxyForURLEx( [in] BSTR bstrProtocol,
                               [in] BSTR bstrHost,
                               [in] BSTR bstrUrl,
                               [out] BOOL *pfProxyEnabled,
                               [out] BSTR *pbstrProxyServer,
                               [out] DWORD *pdwProxyPort,
                               [in, out] DWORD *pdwProxyContext );

};


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

[
    local,
    object,
    uuid(6b63d08e-4590-44af-9eb3-57ff1e73bf80),
    helpstring("IWMSInternalAdminNetSource3 Interface"),
    pointer_default(unique)
]
interface IWMSInternalAdminNetSource3 : IWMSInternalAdminNetSource2
{
    HRESULT GetNetSourceCreator2( [out] IUnknown **ppNetSourceCreator );

    //
    // Proxy
    //
    HRESULT FindProxyForURLEx2( [in] BSTR bstrProtocol,
                                [in] BSTR bstrHost,
                                [in] BSTR bstrUrl,
                                [out] BOOL *pfProxyEnabled,
                                [out] BSTR *pbstrProxyServer,
                                [out] DWORD *pdwProxyPort,
                                [in, out] QWORD *pqwProxyContext );

    HRESULT RegisterProxyFailure2( [in] HRESULT hrParam, [in] QWORD qwProxyContext );
    HRESULT ShutdownProxyContext2( [in] QWORD qwProxyContext );
    HRESULT IsUsingIE2( [in] QWORD qwProxyContext, [out] BOOL *pfIsUsingIE );

    //
    // Authentication
    //
    HRESULT SetCredentialsEx2( [in] BSTR bstrRealm,
                               [in] BSTR bstrUrl,
                               [in] BOOL fProxy,
                               [in] BSTR bstrName,
                               [in] BSTR bstrPassword,
                               [in] BOOL fPersist,
                               [in] BOOL fConfirmedGood,
                               [in] BOOL fClearTextAuthentication );

    HRESULT GetCredentialsEx2( [in] BSTR bstrRealm,
                               [in] BSTR bstrUrl,
                               [in] BOOL fProxy,
                               [in] BOOL fClearTextAuthentication,
                               [out] NETSOURCE_URLCREDPOLICY_SETTINGS *pdwUrlPolicy,
                               [out] BSTR *pbstrName,
                               [out] BSTR *pbstrPassword,
                               [out] BOOL *pfConfirmedGood );
};
