Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

553 lines
17 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: H O S T P . I D L
//
// Contents: Private objects for the UPnP Device Host
//
// Notes:
//
// Author: danielwe 7 Aug 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
// We want to be a proxy/stub DLL for all of the interfaces in
// the following IDL files. Therefore we #include them instead of importing
// them.
//
//#define DO_NO_IMPORTS
import "upnphost.idl";
// Reserved GUIDS for our use
//
// 6d8ff8d0-730d-11d4-bf42-00b0d0118b56
// 6d8ff8d1-730d-11d4-bf42-00b0d0118b56 IID_IUPnPEventingManager
// 6d8ff8d2-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPEventingManager
// 6d8ff8d3-730d-11d4-bf42-00b0d0118b56 IID_IUPnPContainer
// 6d8ff8d4-730d-11d4-bf42-00b0d0118b56 IID_IUPnPContainerManager
// 6d8ff8d5-730d-11d4-bf42-00b0d0118b56 IID_IUPnPDynamicContentProvider
// 6d8ff8d6-730d-11d4-bf42-00b0d0118b56 IID_IUPnPDynamicContentSource
// 6d8ff8d7-730d-11d4-bf42-00b0d0118b56 IID_IUPnPDescriptionManager
// 6d8ff8d8-730d-11d4-bf42-00b0d0118b56 IID_IUPnPAutomationProxy
// 6d8ff8d9-730d-11d4-bf42-00b0d0118b56 IID_IUPnPDevicePersistenceManager
// 6d8ff8da-730d-11d4-bf42-00b0d0118b56 IID_IUPnPRegistrarLookup
// 6d8ff8db-730d-11d4-bf42-00b0d0118b56 IID_IUPnPRegistrarPrivate
// 6d8ff8dc-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPDynamicContentSource
// 6d8ff8dd-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPDescriptionManager
// 6d8ff8de-730d-11d4-bf42-00b0d0118b56 IID_IUPnPRegistrarICSSupport
// 6d8ff8df-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPDevicePersistenceManager
// 6d8ff8e0-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPContainer
// 6d8ff8e1-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPContainerManager
// 6d8ff8e2-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPEventingManagerDiag (obsoleted)
// 6d8ff8e4-730d-11d4-bf42-00b0d0118b56 IID_IUPnPValidationManager
// 6d8ff8e5-730d-11d4-bf42-00b0d0118b56 CLSID_UPnPValidationManager
// 6d8ff8e6-730d-11d4-bf42-00b0d0118b56
// 6d8ff8e7-730d-11d4-bf42-00b0d0118b56
// 6d8ff8e8-730d-11d4-bf42-00b0d0118b56
// 6d8ff8e9-730d-11d4-bf42-00b0d0118b56
// ...
// 6d8ffcb0-730d-11d4-bf42-00b0d0118b56
// 6d8ffcb1-730d-11d4-bf42-00b0d0118b56
cpp_quote("EXTERN_C const CLSID CLSID_UPnPEventingManager;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPAutomationProxy;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPDynamicContentSource;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPDescriptionManager;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPRegistrar;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPDevicePersistenceManager;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPContainer;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPContainerManager;")
cpp_quote("EXTERN_C const CLSID CLSID_UPnPValidationManager;")
////////////////////////////////////
// Error definitions
cpp_quote("#define UPNP_E_INVALID_CONTENT_TYPE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA200)")
cpp_quote("#define UPNP_E_MISSING_SOAP_ACTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA201)")
cpp_quote("#define UPNP_E_MISSING_CONTENT_LENGTH MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA202)")
cpp_quote("#define UPNP_E_METHOD_NOT_IMPLEMENTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA203)")
cpp_quote("#define UPNP_E_METHOD_NOT_ALLOWED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA204)")
cpp_quote("#define UPNP_E_BAD_REQUEST MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xA205)")
////////////////////////////////////////
// Interface forward declarations
interface IUPnPEventingManager;
interface IUPnPContainer;
interface IUPnPContainerManager;
interface IUPnPDynamicContentProvider;
interface IUPnPDynamicContentSource;
interface IUPnPDescriptionManager;
interface IUPnPDevicePersistenceManager;
interface IUPnPRegistrarLookup;
interface IUPnPRegistrarPrivate;
interface IUPnPAutomationProxy;
interface IUPnPServiceDescriptionInfo;
interface IUPnPRegistrarICSSupport;
////////////////////////////////////////
// Interface definitions
[
uuid(6d8ff8d1-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPEventingManager : IUnknown
{
[helpstring("method Initialize")]
HRESULT Initialize(
[in] LPCWSTR szUdn,
[in] LPCWSTR szSid,
[in] IUPnPAutomationProxy * puap,
[in] IUnknown * punkSvc,
[in] BOOL bRunning);
[helpstring("method AddSubscriber")]
HRESULT AddSubscriber(
[in] DWORD cszUrl,
[in, size_is(cszUrl)] LPCWSTR * rgszCallbackUrl,
[in] DWORD dwIpAddr,
[in, out] DWORD * pcsecTimeout,
[out] LPWSTR * pszSid);
[helpstring("method RenewSubscriber")]
HRESULT RenewSubscriber(
[in, out] DWORD * pcsecTimeout,
[in] LPWSTR szSid);
[helpstring("method RemoveSubscriber")]
HRESULT RemoveSubscriber(
[in] LPWSTR szSid);
[helpstring("method Shutdown")]
HRESULT Shutdown();
}
[
uuid(6d8ff8d3-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPContainer : IUnknown
{
HRESULT CreateInstance(
[in] REFCLSID clsid,
[in] REFIID riid,
[out, iid_is(riid)] void ** ppv);
HRESULT Shutdown();
HRESULT SetParent(
[in] DWORD pid);
}
[
uuid(6d8ff8d4-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPContainerManager : IUnknown
{
HRESULT ReferenceContainer(
[in, string] const wchar_t * szContainer);
HRESULT UnreferenceContainer(
[in, string] const wchar_t * szContainer);
HRESULT CreateInstance(
[in, string] const wchar_t * szContainer,
[in] REFCLSID clsid,
[in] REFIID riid,
[out, iid_is(riid)] void ** ppv);
HRESULT CreateInstanceWithProgId(
[in, string] const wchar_t * szContainer,
[in, string] const wchar_t * szProgId,
[in] REFIID riid,
[out, iid_is(riid)] void ** ppv);
HRESULT Shutdown();
}
[
uuid(6d8ff8d5-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPDynamicContentProvider : IUnknown
{
HRESULT GetContent(
[in] REFGUID guidContent,
[out] long * pnHeaderCount,
[out, string, size_is(,*pnHeaderCount,)] wchar_t *** parszHeaders,
[out] long * pnBytes,
[out, size_is(,*pnBytes)] byte ** parBytes);
}
[
uuid(6d8ff8d6-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPDynamicContentSource : IUnknown
{
HRESULT GetContent(
[in] REFGUID guidContent,
[out] long * pnHeaderCount,
[out, string, size_is(,*pnHeaderCount,)] wchar_t *** parszHeaders,
[out] long * pnBytes,
[out, size_is(,*pnBytes)] byte ** parBytes);
HRESULT RegisterProvider(
[in] IUPnPDynamicContentProvider * pProvider);
HRESULT UnregisterProvider(
[in] IUPnPDynamicContentProvider * pProvider);
}
[
uuid(6d8ff8d7-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPDescriptionManager : IUnknown
{
HRESULT ProcessDescriptionTemplate(
[in] BSTR bstrTemplate,
[in, string] const wchar_t * szResourcePath,
[in, out] GUID * pguidPhysicalDeviceIdentifier,
[in] BOOL bPersist,
[in] BOOL bReregister);
HRESULT PublishDescription(
[in] REFGUID guidPhysicalDeviceIdentifier,
[in] long nLifeTime);
HRESULT LoadDescription(
[in] REFGUID guidPhysicalDeviceIdentifier);
HRESULT RemoveDescription(
[in] REFGUID guidPhysicalDeviceIdentifier,
[in] BOOL bPermanent);
HRESULT GetDescriptionText(
[in] REFGUID guidPhysicalDeviceIdentifier,
[out] BSTR * pbstrDescriptionDocument);
HRESULT GetUDNs(
[in] REFGUID guidPhysicalDeviceIdentifier,
[out] long * pnUDNCount,
[out, size_is(,*pnUDNCount,), string]
wchar_t *** parszUDNs);
HRESULT GetUniqueDeviceName(
[in] REFGUID guidPhysicalDeviceIdentifier,
[in, string] const wchar_t * szTemplateUDN,
[out, string] wchar_t ** pszUDN);
HRESULT GetSCPDText(
[in] REFGUID guidPhysicalDeviceIdentifier,
[in, string] const wchar_t * szUDN,
[in, string] const wchar_t * szServiceId,
[out, string] wchar_t ** pszSCPDText,
[out, string] wchar_t ** pszServiceType);
}
[
uuid(6d8ff8d9-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPDevicePersistenceManager : IUnknown
{
HRESULT SavePhyisicalDevice(
[in] REFGUID guidPhysicalDeviceIdentifier,
[in, string] const wchar_t * szProgIdDeviceControlClass,
[in, string] const wchar_t * szInitString,
[in, string] const wchar_t * szContainerId,
[in, string] const wchar_t * szResourcePath,
[in] long nLifeTime);
HRESULT LookupPhysicalDevice(
[in] REFGUID guidPhysicalDeviceIdentifier,
[out, string] wchar_t ** pszProgIdDeviceControlClass,
[out, string] wchar_t ** pszInitString,
[out, string] wchar_t ** pszContainerId,
[out, string] wchar_t ** pszResourcePath,
[out] long * pnLifeTime);
HRESULT RemovePhysicalDevice(
[in] REFGUID guidPhysicalDeviceIdentifier);
HRESULT GetPhysicalDevices(
[out] long * pnDevices,
[out, size_is(,*pnDevices)]
GUID ** parguidPhysicalDeviceIdentifiers);
HRESULT SaveDeviceProvider(
[in, string] const wchar_t * szProviderName,
[in, string] const wchar_t * szProgIdProviderClass,
[in, string] const wchar_t * szInitString,
[in, string] const wchar_t * szContainerId);
HRESULT LookupDeviceProvider(
[in, string] const wchar_t * szProviderName,
[out, string] wchar_t ** pszProgIdProviderClass,
[out, string] wchar_t ** pszInitString,
[out, string] wchar_t ** pszContainerId);
HRESULT RemoveDeviceProvider(
[in, string] const wchar_t * szProviderName);
HRESULT GetDeviceProviders(
[out] long * pnProviders,
[out, string, size_is(,*pnProviders,)]
wchar_t *** parszProviderNames);
}
[
uuid(6d8ff8da-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPRegistrarLookup : IUnknown
{
HRESULT GetEventingManager(
[in, string] const wchar_t * szUDN,
[in, string] const wchar_t * szServiceId,
[out] IUPnPEventingManager ** ppEventingManager);
HRESULT GetAutomationProxy(
[in, string] const wchar_t * szUDN,
[in, string] const wchar_t * szServiceId,
[out] IUPnPAutomationProxy ** ppAutomationProxy);
}
[
uuid(6d8ff8db-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPRegistrarPrivate : IUnknown
{
HRESULT Initialize();
HRESULT Shutdown();
HRESULT GetSCPDText(
[in] REFGUID guidPhysicalDeviceIdentifier,
[in, string] const wchar_t * szUDN,
[in, string] const wchar_t * szServiceId,
[out, string] wchar_t ** pszSCPDText,
[out, string] wchar_t ** pszServerType);
HRESULT GetDescriptionText(
[in] REFGUID guidPhysicalDeviceIdentifier,
[out] BSTR * pbstrDescriptionDocument);
}
typedef struct tagUPNP_CONTROL_REQUEST
{
BSTR bstrActionName;
DWORD cInputArgs;
[size_is(cInputArgs)] VARIANT * rgvarInputArgs;
} UPNP_CONTROL_REQUEST;
typedef [switch_type(BOOL)] union tagUPNP_CONTROL_RESPONSE_DATA
{
[case(TRUE)] struct
{
DWORD cOutputArgs;
[size_is(cOutputArgs)] VARIANT * rgvarOutputArgs;
} Success;
[case(FALSE)] struct
{
BSTR bstrFaultCode;
BSTR bstrFaultString;
BSTR bstrUPnPErrorCode;
BSTR bstrUPnPErrorString;
} Fault;
[default];
} UPNP_CONTROL_RESPONSE_DATA;
typedef struct tagUPNP_CONTROL_RESPONSE
{
BSTR bstrActionName;
BOOL fSucceeded;
[switch_is(fSucceeded)] UPNP_CONTROL_RESPONSE_DATA ucrData;
} UPNP_CONTROL_RESPONSE;
[
uuid(c4ab1fea-d0dd-44fd-96cb-41b41b5f718a),
helpstring("IUPnPAutomationProxy Interface"),
pointer_default(unique)
]
interface IUPnPAutomationProxy : IUnknown
{
[helpstring("method Initialize")]
HRESULT Initialize(
[in] IUnknown * punkSvcObject,
[in] LPWSTR pszSvcDescription,
[in] LPWSTR pszSvcType,
[in] BOOL bRunning);
[helpstring("method GetDispIdsOfEventedVariables")]
HRESULT GetDispIdsOfEventedVariables(
[out] DWORD * pcEventedVars,
[out, size_is(, *pcEventedVars)] DISPID ** prgdispidEventedVars);
[helpstring("method QueryStateVariablesByDispId")]
HRESULT QueryStateVariablesByDispIds(
[in] DWORD cDispIds,
[in, size_is(cDispIds)] DISPID * rgDispIds,
[out] DWORD * pcVariables,
[out, size_is(, *pcVariables)] LPWSTR ** prgszVariableNames,
[out, size_is(, *pcVariables)] VARIANT ** prgvarVariableValues,
[out, size_is(, *pcVariables)] LPWSTR ** prgszVariableDataTypes);
[helpstring("method ExecuteRequest")]
HRESULT ExecuteRequest(
[in] UPNP_CONTROL_REQUEST * pucreq,
[out] UPNP_CONTROL_RESPONSE * pucresp);
[helpstring("method GetServiceType")]
HRESULT GetServiceType(
[out] LPWSTR * pszSvcType);
};
[
uuid(f5b63656-069d-4e80-b4fd-9e0db16604d8),
helpstring("IUPnPServiceDescriptionInfo Interface"),
pointer_default(unique)
]
interface IUPnPServiceDescriptionInfo : IUnknown
{
[helpstring("method GetVariableType")]
HRESULT GetVariableType(
[in] LPWSTR pszVarName,
[out] BSTR * pbstrType);
[helpstring("method GetInputArgumentNamesAndTypes")]
HRESULT GetInputArgumentNamesAndTypes(
[in] LPWSTR pszActionName,
[out] DWORD * pcInArguments,
[out, size_is(, *pcInArguments)] BSTR ** prgbstrNames,
[out, size_is(, *pcInArguments)] BSTR ** prgbstrTypes);
[helpstring("method GetOutputArgumentNamesAndTypes")]
HRESULT GetOutputArgumentNamesAndTypes(
[in] LPWSTR pszActionName,
[out] DWORD * pcOutArguments,
[out, size_is(, *pcOutArguments)] BSTR ** prgbstrNames,
[out, size_is(, *pcOutArguments)] BSTR ** prgbstrTypes);
};
//
// Debug only
//
typedef struct _UDH_SUBSCRIBER_INFO {
[string] LPWSTR szDestUrl;
FILETIME ftTimeout;
DWORD csecTimeout;
DWORD iSeq;
[string] LPWSTR szSid;
} UDH_SUBSCRIBER_INFO;
typedef struct _UDH_EVTSRC_INFO {
[string] LPWSTR szEsid;
DWORD cSubs;
[size_is(cSubs)] UDH_SUBSCRIBER_INFO *rgSubs;
} UDH_EVTSRC_INFO;
[
uuid(6d8ff8e4-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPValidationManager : IUnknown
{
HRESULT ValidateDescriptionDocument(
[in] BSTR bstrTemplate,
[out, string] wchar_t ** pszErrorString);
HRESULT ValidateServiceDescription(
[in, string] const wchar_t * szFullPath,
[out, string] wchar_t ** pszErrorString);
HRESULT ValidateDescriptionDocumentAndReferences(
[in] BSTR bstrTemplate,
[in, string] const wchar_t * szResourcePath,
[out, string] wchar_t ** pszErrorString);
}
[
uuid(6d8ff8de-730d-11d4-bf42-00b0d0118b56),
pointer_default(unique)
]
interface IUPnPRegistrarICSSupport : IUnknown
{
HRESULT SetICSInterfaces([in] long nCount, [in, size_is(nCount)] GUID * arPrivateInterfaceGuids);
HRESULT SetICSOff();
}
///////////////////////////////////////////
// coclasses
[
uuid(6d8ff8d2-730d-11d4-bf42-00b0d0118b56),
helpstring("UPnPEventingManagerClass")
]
coclass UPnPEventingManager
{
[default] interface IUPnPEventingManager;
interface IUPnPEventSink;
};
[
uuid(0fb40f0d-1021-4022-8da0-aab0588dfc8b),
helpstring("UPnPAutomationProxy Class")
]
coclass UPnPAutomationProxy
{
[default] interface IUPnPAutomationProxy;
interface IUPnPServiceDescriptionInfo;
};
[
uuid(6d8ff8dc-730d-11d4-bf42-00b0d0118b56)
]
coclass UPnPDynamicContentSource
{
[default] interface IUnknown;
};
[
uuid(6d8ff8dd-730d-11d4-bf42-00b0d0118b56)
]
coclass UPnPDescriptionManager
{
[default] interface IUnknown;
};
[
uuid(6d8ff8df-730d-11d4-bf42-00b0d0118b56)
]
coclass UPnPDevicePersistenceManager
{
[default] interface IUnknown;
};
[
uuid(6d8ff8e0-730d-11d4-bf42-00b0d0118b56)
]
coclass UPnPContainer
{
[default] interface IUnknown;
}
[
uuid(6d8ff8e1-730d-11d4-bf42-00b0d0118b56)
]
coclass UPnPContainerManager
{
[default] interface IUnknown;
}
[
uuid(6d8ff8e5-730d-11d4-bf42-00b0d0118b56)
]
coclass UPnPValidationManager
{
[default] interface IUnknown;
}