//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (c) Microsoft Corporation. All rights reserved.
//
//  File: upnpp.idl
//  Contents: Private interfaces used by UPnP.  Do not publically distribute.
//
//----------------------------------------------------------------------------

cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("//  Microsoft Windows")
cpp_quote("//  Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")


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

#ifndef __UPNP_IDL_DEFINE__
import "upnp.idl";
#endif // __UPNP_IDL_DEFINE__

[
    object,
    uuid(8dcc8327-dbe9-48e6-846c-33725865d50c),
    pointer_default(unique)
]
interface IUPnPPrivateCallbackHelper: IUnknown
{
    HRESULT HandleDeviceAdd([in] LPWSTR szwLocation,
                            [in] BSTR bstrUdn,
                            [in] BOOL fSearchResult,
			    [in] GUID *guidInterface);
    HRESULT HandleDeviceRemove([in] BSTR bstrUdn);
    HRESULT HandleDone();
};



[
    object,
    uuid(340f4076-6856-48f9-b3c4-97b91b68d77e),
    pointer_default(unique)
]
interface IUPnPPrivateServiceHelper2 : IUnknown
{
    HRESULT GetServiceObject([out] IUnknown ** ppunkService);
};

[
    object,
    uuid(24ea2515-f612-4528-ba82-7bd3dbbad303),
    pointer_default(unique)
]
interface IUPnPServiceCallbackPrivate: IUnknown
{
    HRESULT AddTransientCallback([in] IUnknown  * pUnkCallback,
                                 [out] DWORD *pdwCookie);
    HRESULT RemoveTransientCallback([in] DWORD dwCookie);
};


//
// ISOAPRequest HRESULTs
//

cpp_quote("#define SOAPREQ_E_METHODFAILED                 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0300)")
cpp_quote("#define SOAPREQ_E_TRANSPORTERROR               MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0301)")
cpp_quote("#define SOAPREQ_E_ERROR_PROCESSING_RESPONSE    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0302)")
cpp_quote("#define SOAPREQ_E_TIMEOUT                      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0303)")


cpp_quote("EXTERN_C const CLSID CLSID_SOAPRequest;")

[
    object,
    uuid(ad194525-6e01-4bca-929c-23c7383336af),
    helpstring("ISOAPRequest"),
    pointer_default(unique),
    nonextensible
]
interface ISOAPRequest : IUnknown
{
    // Initialization

    [helpstring("method Open")]
    HRESULT Open([in] BSTR bstrMethodName,
                 [in] BSTR bstrInterfaceName,
                 [in] BSTR bstrMethodNameSpace);


// Parameter Manipulation

    [helpstring("method SetParameter")]
    HRESULT SetParameter([in] BSTR bstrName,
                         [in] IUnknown * pUnkNewValue);

    // Invoke

    [helpstring("method Execute")]
    HRESULT Execute([in] BSTR bstrTargetURI, 
					[in] DWORD_PTR Connection);

    // Feedback

    [propget, helpstring("property ResponseElement")]
    HRESULT ResponseElement([out, retval] IUnknown **ppUnkValue);

    [propget, helpstring("property ResponseFaultDetail")]
    HRESULT ResponseFaultDetail([out, retval] IUnknown **ppUnkValue);

    [propget, helpstring("property ResponseHTTPStatus")]
    HRESULT ResponseHTTPStatus([out, retval] long *plValue);
};

[
    uuid(3FFC5AE5-A66B-499c-A180-C7393DB6BA8D),
    pointer_default(unique)
]
interface IUPnPDeviceHostICSSupport : IUnknown
{
    HRESULT SetICSInterfaces([in] long nCount, [in, size_is(nCount)] GUID * arPrivateInterfaceGuids);
    HRESULT SetICSOff();
}

[
    uuid(983dfc0b-1796-44df-8975-ca545b620ee5),
    pointer_default(unique)
]
interface IUPnPDeviceFinderAddCallbackWithInterface : IUnknown
{
    HRESULT DeviceAddedWithInterface(
        [in] LONG lFindData,
        [in] IUPnPDevice * pDevice,
        [in] GUID * pguidInterface);
};

[
    object,
    uuid(19432a8e-4a32-4860-b8fb-95b1117cd4e5),
    pointer_default(unique)
]
interface IUPnPPrivateDocumentCallbackHelper : IUnknown
{
    HRESULT DocumentDownloadReady(DWORD_PTR hOpenUrl);
    HRESULT DocumentDownloadAbort(DWORD_PTR hOpenUrl, DWORD dwError);
    HRESULT DocumentDownloadRedirect(DWORD_PTR hOpenUrl, LPCWSTR bstrNewUrl);
};



[
    uuid(797A9BB1-9E49-4e63-AFE1-1B45B9DC8162)
]
coclass UPnPDeviceHostICSSupport
{
    [default] interface IUnknown;
}

cpp_quote("EXTERN_C const CLSID CLSID_UPnPDeviceHostICSSupport;")

