/*++ Copyright (C) 1996-2001 Microsoft Corporation Module Name: PROVAUTO.H Abstract: Declares the classes necessary for the automation provider. History: a-davj 04-Mar-96 Created. --*/ #ifndef _PROVAUTO_H_ #define _PROVAUTO_H_ #include "autoprov.h" #include "impdyn.h" #include "cfdyn.h" #include typedef enum {BOTH,PATH,NEWCLASS,RUNNINGCLASS} OBJTYPE; extern HANDLE ghAutoMutex; #define MAX_AUTO_WAIT 3000 //*************************************************************************** // // CLASS NAME: // // CCtlWnd // // DESCRIPTION: // // //*************************************************************************** class CCtlWnd : public CFrameWnd { public: CCtlWnd(); COleControlContainer * pGetCont(){return m_pCtrlCont;}; }; class CAutoCache : public CHandleCache { public: COleControlSite * pSite; TCHAR * pSavePath; CCtlWnd * pCtlWnd; CAutoCache(); }; //*************************************************************************** // // CLASS NAME: // // CEnumAutoInfo // // DESCRIPTION: // // //*************************************************************************** class CEnumAutoInfo : public CEnumInfo{ public: CEnumAutoInfo(int iCount); ~CEnumAutoInfo(); int GetCount(){return m_iCount;}; private: int m_iCount; }; // This defines the maximum number of arguments to a method. Note that if this // is changed, then the InvokeHelper CALLS MUST ALSO BE UPDATED! #define MAX_ARGS 5 //*************************************************************************** // // CLASS NAME: // // CImpAuto // // DESCRIPTION: // // //*************************************************************************** class CImpAuto : public CImpDyn { public: // Standard provider routines CImpAuto(); int iGetMinTokens(void){return 2;}; SCODE StartBatch(long lFlags, IWbemClassObject FAR * pClassInt,CObject **pObj,BOOL bGet); void EndBatch(long lFlags, IWbemClassObject FAR * pClassInt,CObject *pObj,BOOL bGet); SCODE UpdateProperty(long lFlags, IWbemClassObject FAR * pClassInt, BSTR PropName,CProvObj & ProvObj,CObject * pPackage, CVariant * pVar); SCODE RefreshProperty(long lFlags, IWbemClassObject FAR * pClassInt, BSTR PropName,CProvObj & ProvObj,CObject * pPackage, CVariant * pVar); SCODE MakeEnum(IWbemClassObject * pClass, CProvObj & ProvObj, CEnumInfo ** ppInfo); SCODE GetKey(CEnumInfo * pInfo, int iIndex, LPWSTR * ppKey); SCODE MergeStrings(LPWSTR * ppOut,LPWSTR pClassContext,LPWSTR pKey,LPWSTR pPropContext); // Special routines for automation BOOL bIsControl(LPUNKNOWN lpTest); SCODE DoCall(WORD wOpt, CProvObj & ProvObj,int iIndex, LPDISPATCH pDisp,VARTYPE vt, void *pData, WCHAR * pProp = NULL); SCODE GetCFileStreamObj(const TCHAR * pPath, LPSTORAGE * ppStorage, COleStreamFile **ppFile,CAutoCache *pCache); SCODE ParsePathClass(const CString & sMix, CString & sPath, CString & sClass, OBJTYPE * type); void Free(int iStart, CAutoCache * pCache); LPDISPATCH pGetBoth(SCODE * psc, const TCHAR * pPath, const TCHAR * pClass,CAutoCache *pCache); LPDISPATCH pGetDispatch(SCODE * psc,CProvObj & ObjectPath,LPCTSTR pPathClass, CAutoCache *pCache, int iDepth); LPDISPATCH pGetPath(SCODE * psc, const TCHAR * pPath); LPDISPATCH pGetNewClass(SCODE * psc, const TCHAR * pClass,CAutoCache *pCache); LPDISPATCH pGetOCX(SCODE * psc, const TCHAR * pPath,CLSID & clsid, CAutoCache *pCache, LPUNKNOWN lpUnk); LPDISPATCH pGetRunningClass(SCODE * psc, const TCHAR * pClass,CAutoCache *pCache); LPDISPATCH pGetDispatchRoot(SCODE * psc,CProvObj & ObjectPath,LPCTSTR pPathClass, CAutoCache *pCache,int & iNumSkip); void StoreControl(CAutoCache *pCache); }; class CCFAuto : public CCFDyn { public: IUnknown * CreateImpObj() {return (IWbemServices*) new CImpAuto;}; } ; //*************************************************************************** // // CLASS NAME: // // CImpAutoProp // // DESCRIPTION: // // //*************************************************************************** class CImpAutoProp : public CImpDynProp { public: CImpAutoProp(); ~CImpAutoProp(); }; //*************************************************************************** // // CLASS NAME: // // CCFAutoProp // // DESCRIPTION: // // //*************************************************************************** class CCFAutoProp : public CCFDyn { public: IUnknown * CreateImpObj() {return new CImpAutoProp();}; } ; #endif //_PROVAUTO_H_