//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997-2001. // // File: dataobj.h // // Contents: // //---------------------------------------------------------------------------- #ifndef __DATAOBJ_H_INCLUDED__ #define __DATAOBJ_H_INCLUDED__ // For use in multiple selection. LPDATAOBJECT ExtractMultiSelect (LPDATAOBJECT lpDataObject); class CCertMgrDataObject : public CDataObject { DECLARE_NOT_AGGREGATABLE(CCertMgrDataObject) public: // debug refcount #if DBG==1 ULONG InternalAddRef() { return CComObjectRoot::InternalAddRef(); } ULONG InternalRelease() { return CComObjectRoot::InternalRelease(); } int dbg_InstID; #endif // DBG==1 CCertMgrDataObject(); virtual ~CCertMgrDataObject(); STDMETHODIMP Next(ULONG celt, MMC_COOKIE* rgelt, ULONG *pceltFetched); STDMETHODIMP Skip(ULONG celt); STDMETHODIMP Reset(void); void AddCookie(CCertMgrCookie* pCookie); virtual HRESULT Initialize ( CCertMgrCookie* pcookie, DATA_OBJECT_TYPES type, BOOL fAllowOverrideMachineName, DWORD dwLocation, CString szManagedUser, CString szManagedComputer, CString szManagedService, CCertMgrComponentData& refComponentData); // IDataObject interface implementation HRESULT STDMETHODCALLTYPE GetDataHere( FORMATETC __RPC_FAR *pFormatEtcIn, STGMEDIUM __RPC_FAR *pMedium); HRESULT PutDisplayName(STGMEDIUM* pMedium); HRESULT PutServiceName(STGMEDIUM* pMedium); void SetMultiSelData(BYTE* pbMultiSelData, UINT cbMultiSelData); STDMETHODIMP GetData(LPFORMATETC lpFormatetc, LPSTGMEDIUM lpMedium); STDMETHOD(IsMultiSelect)(void) { return (m_rgCookies.GetSize() > 1) ? S_OK : S_FALSE; } protected: HRESULT CreateMultiSelectObject(LPSTGMEDIUM lpMedium); HRESULT Create (const void* pBuffer, int len, LPSTGMEDIUM lpMedium); HRESULT CreateGPTUnknown(LPSTGMEDIUM lpMedium) ; HRESULT CreateRSOPUnknown(LPSTGMEDIUM lpMedium) ; CCertMgrCookie* m_pCookie; // the CCookieBlock is AddRef'ed for the life of the DataObject CertificateManagerObjectType m_objecttype; DATA_OBJECT_TYPES m_dataobjecttype; BOOL m_fAllowOverrideMachineName; // From CCertMgrComponentData GUID m_SnapInCLSID; public: HRESULT SetGPTInformation (IGPEInformation* pGPTInformation); HRESULT SetRSOPInformation (IRSOPInformation* pRSOPInformation); // Clipboard formats static CLIPFORMAT m_CFDisplayName; static CLIPFORMAT m_CFMachineName; static CLIPFORMAT m_CFMultiSel; // Required for multiple selection static CLIPFORMAT m_CFMultiSelDobj; // Required for multiple selection static CLIPFORMAT m_CFSCEModeType; // For SCE snapin mode type static CLIPFORMAT m_CFSCE_GPTUnknown; // For IUnknown of GPT (which SCE extends) static CLIPFORMAT m_CFSCE_RSOPUnknown; // For IUnknown of GPT (which SCE extends) static CLIPFORMAT m_CFMultiSelDataObjs;// for Multiple selection private: // data member used by IEnumCookies ULONG m_iCurr; CCookiePtrArray m_rgCookies; bool m_bMultiSelDobj; IGPEInformation* m_pGPEInformation; IRSOPInformation* m_pRSOPInformation; BYTE* m_pbMultiSelData; UINT m_cbMultiSelData; CString m_szManagedComputer; CString m_szManagedUser; CString m_szManagedService; DWORD m_dwLocation; public: void SetMultiSelDobj() { m_bMultiSelDobj = true; } }; // CCertMgrDataObject #endif // ~__DATAOBJ_H_INCLUDED__