//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 2000.
//
//  File:       S D E V . I D L 
//
//  Contents:   IDL file for sample device
//
//  Notes:      
//
//  Author:     mbend   26 Sep 2000
//
//----------------------------------------------------------------------------



cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("//  Microsoft Windows")
cpp_quote("//  Copyright (C) Microsoft Corporation, 1992-2000.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")

cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#pragma warning(disable:4201)")
cpp_quote("#endif")

#ifndef DO_NO_IMPORTS
import "ocidl.idl";
#endif

//////////////////////////////////////////
// Type library

[
    uuid(EE6ECBF9-0EB2-44e4-A274-FAC45A72C01F),
    version(1.0),
    helpstring("UPnP Device Host Sample")
]
library UPnPDeviceHostSampleLib
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    typedef [v1_enum] enum SAMPLE_DISPIDS
    {
        DISPID_POWER = 1, DISPID_LEVEL, DISPID_POWER_ON, DISPID_POWER_OFF, 
        DISPID_SET_LEVEL, DISPID_INCREASE_LEVEL, DISPID_DECREASE_LEVEL,
        DISPID_TEST
    } SAMPLE_DISPIDS;

    [
        oleautomation,
        uuid(774B4314-82C7-4560-BBC8-960F8C7139F7),
        pointer_default(unique)
    ]
    interface IUPnPSampleService : IUnknown
    {
        [id(DISPID_POWER), propget] HRESULT Power([out, retval] VARIANT_BOOL * pbPower);
        [id(DISPID_POWER), propput] HRESULT Power([in] VARIANT_BOOL bPower);
        [id(DISPID_LEVEL), propget] HRESULT Level([out, retval] long * pnLevel);
        [id(DISPID_LEVEL), propput] HRESULT Level([in] long nLevel);
        [id(DISPID_POWER_ON)] HRESULT PowerOn();
        [id(DISPID_POWER_OFF)] HRESULT PowerOff();
        [id(DISPID_SET_LEVEL)] HRESULT SetLevel([in] long nLevel);
        [id(DISPID_INCREASE_LEVEL)] HRESULT IncreaseLevel();
        [id(DISPID_DECREASE_LEVEL)] HRESULT DecreaseLevel();
        [id(DISPID_TEST)] HRESULT Test([in] long nMultiplier, [in, out] long * pnNewValue, [out, retval] long * pnOldValue);
    }

    [
        uuid(7648DFD4-79F5-492f-A277-CDA01B721CA1)
    ]
    coclass UPnPSampleDevice
    {
        [default] interface IUnknown;
    }
};

