2025-04-27 07:49:33 -04:00

178 lines
5.4 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
DSUMICONT.H
Abstract:
Defines the CDsUmiWrapCallResult class which hides some implementation
specific detains of the DS teams implementation of the UMI
History:
--*/
#ifndef __DSUMICONT_RESULT__H_
#define __DSUMICONT_RESULT__H_
class CDsUmiContainer : public IUmiContainer, public _IUmiDsWrapper
{
protected:
long m_lRef;
IUmiContainer *m_pUmiContainer;
IUmiContainer *m_pUmiClassContainer;
IUmiConnection *m_pIUmiConn;
public:
// IUnknown
STDMETHOD_(ULONG, AddRef)() {return InterlockedIncrement(&m_lRef);}
STDMETHOD_(ULONG, Release)()
{
long lRef = InterlockedDecrement(&m_lRef);
if(lRef == 0)
delete this;
return lRef;
}
STDMETHOD(QueryInterface)(REFIID riid, void** ppv);
// IUmiPropList
HRESULT STDMETHODCALLTYPE Put(
/* [in] */ LPCWSTR pszName,
/* [in] */ ULONG uFlags,
/* [in] */ UMI_PROPERTY_VALUES __RPC_FAR *pProp);
HRESULT STDMETHODCALLTYPE Get(
/* [in] */ LPCWSTR pszName,
/* [in] */ ULONG uFlags,
/* [out] */ UMI_PROPERTY_VALUES __RPC_FAR *__RPC_FAR *pProp);
HRESULT STDMETHODCALLTYPE GetAt(
/* [in] */ LPCWSTR pszName,
/* [in] */ ULONG uFlags,
/* [in] */ ULONG uBufferLength,
/* [out] */ LPVOID pExistingMem);
HRESULT STDMETHODCALLTYPE GetAs(
/* [in] */ LPCWSTR pszName,
/* [in] */ ULONG uFlags,
/* [in] */ ULONG uCoercionType,
/* [out] */ UMI_PROPERTY_VALUES __RPC_FAR *__RPC_FAR *pProp);
HRESULT STDMETHODCALLTYPE FreeMemory(
ULONG uReserved,
LPVOID pMem);
HRESULT STDMETHODCALLTYPE Delete(
/* [in] */ LPCWSTR pszName,
/* [in] */ ULONG uFlags);
HRESULT STDMETHODCALLTYPE GetProps(
/* [in] */ LPCWSTR __RPC_FAR *pszNames,
/* [in] */ ULONG uNameCount,
/* [in] */ ULONG uFlags,
/* [out] */ UMI_PROPERTY_VALUES __RPC_FAR *__RPC_FAR *pProps);
HRESULT STDMETHODCALLTYPE PutProps(
/* [in] */ LPCWSTR __RPC_FAR *pszNames,
/* [in] */ ULONG uNameCount,
/* [in] */ ULONG uFlags,
/* [in] */ UMI_PROPERTY_VALUES __RPC_FAR *pProps);
HRESULT STDMETHODCALLTYPE PutFrom(
/* [in] */ LPCWSTR pszName,
/* [in] */ ULONG uFlags,
/* [in] */ ULONG uBufferLength,
/* [in] */ LPVOID pExistingMem);
// IUmiBaseObject
HRESULT STDMETHODCALLTYPE GetLastStatus(
/* [in] */ ULONG uFlags,
/* [out] */ ULONG __RPC_FAR *puSpecificStatus,
/* [in] */ REFIID riid,
/* [iid_is][out] */ LPVOID __RPC_FAR *pStatusObj);
HRESULT STDMETHODCALLTYPE GetInterfacePropList(
/* [in] */ ULONG uFlags,
/* [out] */ IUmiPropList __RPC_FAR *__RPC_FAR *pPropList);
// IUmiObject
HRESULT STDMETHODCALLTYPE Clone(
/* [in] */ ULONG uFlags,
/* [in] */ REFIID riid,
/* [iid_is][out] */ LPVOID __RPC_FAR *pCopy);
HRESULT STDMETHODCALLTYPE Refresh(
/* [in] */ ULONG uFlags,
/* [in] */ ULONG uNameCount,
/* [in] */ LPWSTR __RPC_FAR *pszNames);
HRESULT STDMETHODCALLTYPE CopyTo(
/* [in] */ ULONG uFlags,
/* [in] */ IUmiURL *pURL,
/* [in] */ REFIID riid,
/* [out, iid_is(riid)] */ LPVOID *pCopy);
HRESULT STDMETHODCALLTYPE Commit(
/* [in] */ ULONG uFlags);
// IUmiContainer
HRESULT STDMETHODCALLTYPE Open(
/* [in] */ IUmiURL __RPC_FAR *pURL,
/* [in] */ ULONG uFlags,
/* [in] */ REFIID TargetIID,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvRes);
HRESULT STDMETHODCALLTYPE PutObject(
/* [in] */ ULONG uFlags,
/* [in] */ REFIID TargetIID,
/* [iid_is][out][in] */ void __RPC_FAR *pObj);
HRESULT STDMETHODCALLTYPE DeleteObject(
/* [in] */ IUmiURL __RPC_FAR *pURL,
/* [optional][in] */ ULONG uFlags);
HRESULT STDMETHODCALLTYPE Create(
/* [in] */ IUmiURL __RPC_FAR *pURL,
/* [in] */ ULONG uFlags,
/* [out] */ IUmiObject __RPC_FAR *__RPC_FAR *pNewObj);
HRESULT STDMETHODCALLTYPE Move(
/* [in] */ ULONG uFlags,
/* [in] */ IUmiURL __RPC_FAR *pOldURL,
/* [in] */ IUmiURL __RPC_FAR *pNewURL);
HRESULT STDMETHODCALLTYPE CreateEnum(
/* [in] */ IUmiURL __RPC_FAR *pszEnumContext,
/* [in] */ ULONG uFlags,
/* [in] */ REFIID TargetIID,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvEnum);
HRESULT STDMETHODCALLTYPE ExecQuery(
/* [in] */ IUmiQuery __RPC_FAR *pQuery,
/* [in] */ ULONG uFlags,
/* [in] */ REFIID TargetIID,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppResult);
STDMETHOD(GetRealContainer)( IUnknown** pUnk );
public:
CDsUmiContainer();
~CDsUmiContainer();
HRESULT SetInterface(IUmiContainer * pUmiContainer, IUmiURL * pPath, IUmiConnection *pIUmiConn);
};
#endif