#include <olectl.h>
// oleprn.idl : IDL source for oleprn.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (oleprn.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "objsafe.idl";

    [
        object,
        uuid(7586B34D-EC08-11D0-A466-00C04FC30DF6),
        dual,
        helpstring("Iprturl Interface"),
        pointer_default(unique)
    ]
    interface Iprturl : IDispatch
    {
        [propget, id(1), helpstring("property ClientInfo")]
        HRESULT ClientInfo([out, retval] long *lpdwInfo);

#ifndef WIN9X
        [propget, id(5),  helpstring("property SupportLinkName")]
        HRESULT SupportLinkName([out, retval] BSTR *pVal);

        [propget, id(6),  helpstring("property SupportLink")]
        HRESULT SupportLink([out, retval] BSTR *pVal);

        [propput, id(7),  helpstring("property PrinterName")]
        HRESULT PrinterName([in] BSTR newVal);

        [propget, id(8),  helpstring("property PrinterWebURL")]
        HRESULT PrinterWebURL([out, retval] BSTR *pVal);

        [propget, id(9),  helpstring("property PrinterOemURL")]
        HRESULT PrinterOemURL([out, retval] BSTR *pVal);

        [propget, id(10), helpstring("property PrinterOemName")]
        HRESULT PrinterOemName([out, retval] BSTR *pVal);
#endif

    };
#ifndef WIN9X
    [
        object,
        uuid(4F664F90-FF01-11D0-8AED-00C04FD7B597),
        dual,
        helpstring("ISNMP Interface"),
        pointer_default(unique)
    ]
    interface ISNMP : IDispatch
    {
        [id(1), helpstring("method Open")] HRESULT Open(BSTR bstrHost, BSTR bstrCommunity, [in,optional] VARIANT varRetry, [in,optional] VARIANT varTimeout);
        [id(2), helpstring("method Get")] HRESULT Get(BSTR bstrOID, [out,retval]VARIANT *varValue);
        [id(3), helpstring("method GetList")] HRESULT GetList([in]VARIANT *varList, [out,retval]VARIANT *varValue);
        [id(4), helpstring("method GetTree")] HRESULT GetTree([in] BSTR varTree, [out,retval]VARIANT *varValue);
        [id(5), helpstring("method Close")] HRESULT Close();
        [id(6), helpstring("method OIDFromString")] HRESULT OIDFromString(BSTR bstrOID, [out, retval]VARIANT *varOID);
        [id(7), helpstring("method Set")] HRESULT Set(BSTR bstrOID, VARIANT varValue);
        [id(8), helpstring("method SetList")] HRESULT SetList([in] VARIANT *varName, [in] VARIANT *varValue);
        [id(9), helpstring("method GetAsByte")] HRESULT GetAsByte (BSTR bstrOID, [out,retval]UINT *puValue);
    }

    [ object,
        uuid(3E4D4F1B-2AEE-11D1-9D3D-00C04FC30DF6),
        dual,
        helpstring("Iasphelp Interface"),
        pointer_default(unique)
    ]
    interface Iasphelp : IDispatch
    {
        //Standard Server Side Component Methods
        HRESULT OnStartPage([in] IUnknown* piUnk);
        HRESULT OnEndPage();
        [id(1), helpstring("method Open")] HRESULT Open(BSTR bstrPrinterName);
        [id(2), helpstring("method Close")] HRESULT Close();
        [propget, id(3), helpstring("property AspPage")] HRESULT AspPage(DWORD dwPage, [out, retval] BSTR *pVal);
        [propget, id(4), helpstring("property Community")] HRESULT Community([out, retval] BSTR *pVal);
        [propget, id(5), helpstring("property SNMPDevice")] HRESULT SNMPDevice([out, retval] DWORD *pVal);
        [propget, id(6), helpstring("property SNMPSupported")] HRESULT SNMPSupported([out, retval] BOOL *pVal);
        [propget, id(7), helpstring("property PageRateUnit")] HRESULT PageRateUnit([out, retval] long *pVal);
        [propget, id(9), helpstring("property IsHTTP")] HRESULT IsHTTP([out, retval] BOOL *pVal);
        [propget, id(10), helpstring("property IPAddress")] HRESULT IPAddress([out, retval] BSTR *pVal);
        [propget, id(11), helpstring("property IsTCPMonSupported")] HRESULT IsTCPMonSupported([out, retval] BOOL *pVal);
        [propget, id(12), helpstring("property Color")] HRESULT Color([out, retval] BOOL *pVal);
        [propget, id(13), helpstring("property Duplex")] HRESULT Duplex([out, retval] BOOL *pVal);
        [propget, id(14), helpstring("property MaximumResolution")] HRESULT MaximumResolution([out, retval] long *pVal);
        [propget, id(15), helpstring("property MediaReady")] HRESULT MediaReady([out, retval] VARIANT *pVal);
        [propget, id(16), helpstring("property PaperNames")] HRESULT PaperNames([out, retval] VARIANT *pVal);
        [propget, id(17), helpstring("property PageRate")] HRESULT PageRate([out, retval] long *pVal);
        [propget, id(18), helpstring("property ComputerName")] HRESULT ComputerName([out, retval] BSTR *pVal);
        [propget, id(19), helpstring("property LongPaperName")] HRESULT LongPaperName(BSTR bstrShortName, [out, retval] BSTR *pVal);
        [propget, id(21), helpstring("property Portname")] HRESULT PortName([out, retval] BSTR *pVal);
        [propget, id(22), helpstring("property MibErrorDscp")] HRESULT MibErrorDscp(DWORD dwError, [out, retval] BSTR *pVal);
        [id(23), helpstring("method CalcJobETA")] HRESULT CalcJobETA();
        [propget, id(24), helpstring("property PendingJobCount")] HRESULT PendingJobCount([out, retval] long *pVal);
        [propget, id(25), helpstring("property JobCompletionMinute")] HRESULT JobCompletionMinute([out, retval] long *pVal);
        [propget, id(26), helpstring("property AvgJobSizeUnit")] HRESULT AvgJobSizeUnit([out, retval] long *pVal);
        [propget, id(27), helpstring("property AvgJobSize")] HRESULT AvgJobSize([out, retval] long *pVal);
        [propget, id(28), helpstring("property Status")] HRESULT Status([out, retval] long *pVal);
        [propget, id(31), helpstring("property ErrorDscp")] HRESULT ErrorDscp(long lErrCode, [out, retval] BSTR *pVal);
        [propget, id(32), helpstring("property Model")] HRESULT DriverName([out, retval] BSTR *pVal);
        [propget, id(33), helpstring("property ShareName")] HRESULT ShareName([out, retval] BSTR *pVal);
        [propget, id(34), helpstring("property IsCluster")] HRESULT IsCluster([out, retval] BOOL *pVal);
    };

    [
        object,
        uuid(B57467A5-50B5-11D1-BF97-0000F8773501),
        dual,
        helpstring("IAddPrint Interface"),
        pointer_default(unique)
    ]
    interface IAddPrint : IDispatch
    {
        [id(1), helpstring("method AddPrinterConnection")] HRESULT AddPrinterConnection(BSTR lpPrinterName);
        [id(2), helpstring("method DeletePrinterConnection")] HRESULT DeletePrinterConnection(BSTR lpPrinterName);
    };


    [
        object,
        uuid(435899C8-44AB-11D1-AF00-080036234103),
        dual,
        helpstring("IDSPrintQueue Interface"),
        pointer_default(unique)
    ]
    interface IDSPrintQueue : IDispatch
    {
        [propget, id(1), helpstring("property UNCName")] HRESULT UNCName([out, retval] BSTR *pVal);
        [propput, id(1), helpstring("property UNCName")] HRESULT UNCName([in] BSTR newVal);
        [propget, id(2), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
        [propput, id(2), helpstring("property Name")] HRESULT Name([in] BSTR newVal);
        [propget, id(3), helpstring("property Container")] HRESULT Container([out, retval] BSTR *pVal);
        [propput, id(3), helpstring("property Container")] HRESULT Container([in] BSTR newVal);
        [id(4), helpstring("method Publish")] HRESULT Publish(DWORD dwAction);
        [propget, id(5), helpstring("property Path")] HRESULT Path([out, retval] BSTR *pVal);
    };
    [
        object,
        uuid(65303442-AD66-11D1-9D65-00C04FC30DF6),
        dual,
        helpstring("IOleCvt Interface"),
        pointer_default(unique)
    ]
    interface IOleCvt : IDispatch
    {
        //Standard Server Side Component Methods
        HRESULT OnStartPage([in] IUnknown* piUnk);
        HRESULT OnEndPage();
        [propget, id(1), helpstring("property ToUtf8")] HRESULT ToUtf8(BSTR bstrUnicode, [out, retval] BSTR *pVal);
        [propget, id(2), helpstring("property EncodeUnicodeName")] HRESULT EncodeUnicodeName(BSTR bstrSrcName, [out, retval] BSTR *pVal);
        [propget, id(3), helpstring("property DecodeUnicodeName")] HRESULT DecodeUnicodeName(BSTR bstrSrcName, [out, retval] BSTR *pVal);
        [propget, id(4), helpstring("property ToUnicode")] HRESULT ToUnicode(BSTR bstrString, long lCodePage, [out, retval] BSTR *pVal);
    };

#endif

    [
        object,
        uuid(C3701883-B39B-11D1-9D68-00C04FC30DF6),
        dual,
        helpstring("IOleInstall Interface"),
        pointer_default(unique)
    ]
    interface IOleInstall : IDispatch
    {
        [id(2), helpstring("method InstallPrinter")] HRESULT InstallPrinter(BSTR pbstrUncName, BSTR pbstrUrl);
        [id(5), helpstring("method OpenPrintersFolder")] HRESULT OpenPrintersFolder();

    };

[
    uuid(7586B340-EC08-11D0-A466-00C04FC30DF6),
    version(1.0),
    helpstring("oleprn 1.0 Type Library")
]
library OLEPRNLib
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    [
        uuid(92337A8C-E11D-11D0-BE48-00C04FC30DF6),
        helpstring("prturl Class")
    ]
    coclass prturl
    {
        [default] interface Iprturl;
    };

#ifndef WIN9X
    [
        uuid(4F664F91-FF01-11D0-8AED-00C04FD7B597),
        helpstring("SNMP Class")
    ]
    coclass SNMP
    {
        [default] interface ISNMP;
    };

    [
        uuid(3E4D4F1C-2AEE-11D1-9D3D-00C04FC30DF6),
        helpstring("asphelp Class")
    ]
    coclass asphelp
    {
        [default] interface Iasphelp;
    };

    [
        uuid(B57467A6-50B5-11D1-BF97-0000F8773501),
        helpstring("AddPrint Class")
    ]
    coclass AddPrint
    {
        [default] interface IAddPrint;

    };
    [
        uuid(435899C9-44AB-11D1-AF00-080036234103),
        helpstring("DSPrintQueue Class")
    ]
    coclass DSPrintQueue
    {
        [default] interface IDSPrintQueue;
    };
    [
        uuid(65303443-AD66-11D1-9D65-00C04FC30DF6),
        helpstring("OleCvt Class")
    ]
    coclass OleCvt
    {
        [default] interface IOleCvt;

    };

#endif

    [
        uuid(C3701885-B39B-11D1-9D68-00C04FC30DF6),
        helpstring("Event interface for OleInstall")
    ]
    dispinterface _InstallEvent
    {
        properties:
        methods:
        [id(1)] void OnProgress ([in]long lProgress);
        [id(2)] void InstallError ([in]long lErrCode);
    };
    [
        uuid(C3701884-B39B-11D1-9D68-00C04FC30DF6),
        helpstring("OleInstall Class")
    ]
    coclass OleInstall
    {
        [default] interface IOleInstall;
        [default, source] dispinterface _InstallEvent;
    };
};
