//***************************************************************************** 
// 
// Microsoft Windows Media 
// Copyright (C) Microsoft Corporation. All rights reserved. 
//
// FileName:            wmsplugin.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 wmsplugin.idl" )
cpp_quote("//")
cpp_quote("// DO NOT EDIT THIS FILE.")
cpp_quote("//")
cpp_quote("//*****************************************************************************") 

import "oaidl.idl";

import "WMSNamedValues.idl";


// Bit mask for Plugin Load Type.
// 0 = Unspecified Plugin Load Type
// 1 = Load Plugin as an In-Proc Dll
// 2 = Load Plugin as an Out-Of-Proc Local Server
// There will be more options to come.
typedef [public, uuid(56209C38-39FA-432a-8068-307B7BAE01B8)] enum WMS_PLUGIN_LOAD_TYPE
{
    WMS_PLUGIN_LOAD_TYPE_UNSPECIFIED    = 0,
    WMS_PLUGIN_LOAD_TYPE_IN_PROC        = 1,
    WMS_PLUGIN_LOAD_TYPE_OUT_OF_PROC    = 2,
    [hidden] WMS_NUM_PLUGIN_LOAD_TYPE   = 3
} WMS_PLUGIN_LOAD_TYPE;

// Bit mask for Plugin Unsupported Load Type.
// 0 = Plugin supports all plugin load types
// 1 = Plugin does not support In-Proc execution
// 2 = Plugin does not support Out-Of-Proc execution
// There will be more options to come.
typedef [public, uuid(56209C39-39FA-432a-8068-307B7BAE01B8)] enum WMS_PLUGIN_UNSUPPORTED_LOAD_TYPE
{
    WMS_PLUGIN_UNSUPPORTED_LOAD_TYPE_NONE           = 0,
    WMS_PLUGIN_UNSUPPORTED_LOAD_TYPE_IN_PROC        = 1,
    WMS_PLUGIN_UNSUPPORTED_LOAD_TYPE_OUT_OF_PROC    = 2
} WMS_PLUGIN_UNSUPPORTED_LOAD_TYPE;


typedef [public, uuid(8AC2B32C-A223-4134-8DCF-6673C95CE924)] enum WMS_PLUGIN_SUPPORT_TYPE
{
    WMS_PLUGIN_SUPPORT_IS_SUPPORTED                 = 0,
    WMS_PLUGIN_SUPPORT_REQUIRES_ADVANCED_SERVER     = 1,
} WMS_PLUGIN_SUPPORT_TYPE;





/////////////////////////////////////////////////////////////////////////////
    [
        object,
        uuid(517758ed-603c-4b98-82c1-4b2fa7787166),
        dual,
        nonextensible,
        helpstring("Contains properties to retrieve and manage the properties of a plug-in."),
        pointer_default(unique)
    ]
    interface IWMSPlugin : IDispatch
    {
        typedef [public, uuid(3E52E0E2-72A7-11D2-BF2F-00805FBE84A6)] enum WMS_PLUGIN_STATUS
        {
            WMS_PLUGIN_NONE                 = 0x0000,
            WMS_PLUGIN_ERROR                = 0x0001,
            WMS_PLUGIN_LOADED               = 0x0002,
            WMS_PLUGIN_ENABLED              = 0x0004,
            WMS_PLUGIN_LOADED_IN_PROC       = 0x0008,
            WMS_PLUGIN_LOADED_OUT_OF_PROC   = 0x0010,
            WMS_PLUGIN_REMOVE_ON_SERVICE_RESTART = 0x0020
        } WMS_PLUGIN_STATUS;

            [propput, id(DISPID_VALUE), helpstring("Specifies or retrieves the name of the plug-in.")] HRESULT
        Name([in] BSTR pVal);
            [propget, id(DISPID_VALUE), helpstring("Specifies or retrieves the name of the plug-in.")] HRESULT
        Name([out, retval] BSTR *pVal);
            [propget, id(1), helpstring("Specifies or retrieves a Boolean value indicating whether the plug-in is enabled.")] HRESULT
        Enabled([out, retval] VARIANT_BOOL *pVal);
            [propput, id(1), helpstring("Specifies or retrieves a Boolean value indicating whether the plug-in is enabled.")] HRESULT
        Enabled([in] VARIANT_BOOL newVal);
            [propget, id(2), helpstring("Retrieves the CLSID of the plug-in.")] HRESULT
        CLSID([out, retval] BSTR *pVal);
            [propget, id(7), helpstring("Retrieves the administration object for the plug-in.")] HRESULT
        CustomInterface([out, retval] IDispatch **ppVal);
            [propget, id(8), helpstring("Retrieves the status of the plug-in.")] HRESULT
        Status([out, retval] long *pVal);
            [propget, id(9), helpstring("Retrieves an HRESULT error code for the plug-in.")] HRESULT
        ErrorCode([out, retval] long *pVal);
            [propget, id(10), helpstring("Retrieves the collection of name-value pairs for the plug-in.")] HRESULT
        Properties([out, retval] IWMSNamedValues* *pVal);
            [propget, id(11), helpstring("Retrieves the version number of the plug-in.")] HRESULT
        Version([out, retval] BSTR *pVal);

            [propget, id(12), helpstring("Specifies or retrieves how the server should load the plugin.")] HRESULT
        LoadType([out, retval] WMS_PLUGIN_LOAD_TYPE *pVal);
            [propput, id(12), helpstring("Specifies or retrieves how the server should load the plugin.")] HRESULT
        LoadType([in] WMS_PLUGIN_LOAD_TYPE val);

            [propget, id(13), helpstring("Retrieves the text associated with the plug-in error.")] HRESULT
        ErrorText([out, retval] BSTR *pVal);
             
            [propget, id(14), helpstring("Specifies or retrieves the order in which the plug-in will be selected for use.")] HRESULT
        SelectionOrder( [out, retval] long *pVal );
            [propput, id(14), helpstring("Specifies or retrieves the order in which the plug-in will be selected for use.")] HRESULT
        SelectionOrder( [in] long lVal );

            [propget, id(15), helpstring("Retrieves an enumeration value that indicates which version of Windows Server is required to load the plug-in.")] HRESULT
        SupportStatus([out, retval] WMS_PLUGIN_SUPPORT_TYPE *pVal);

            [propget, id(50), helpstring("Retrieves the moniker display name for the plug-in.")] HRESULT
        MonikerName( [out,retval] BSTR* pbstrVal );

    };




