//+------------------------------------------------------------------------ // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1996 - 1997 // // File: admin.hxx // // Contents: Definition for Class factory and IUnknown methods // for CClassContainer // // Author: DebiM // //------------------------------------------------------------------------- #define SEARCHFLAG_PUBLISHED L'P' #define SEARCHFLAG_ASSIGNED L'A' #define SEARCHFLAG_REMOVED L'R' #define MAX_SEARCH_FLAGS 3 HRESULT GetConsistentPackageFlags( HANDLE hADs, DWORD* pdwPackageFlags, UINT* pdwUpgrades, UINT* pdwInstallUiLevel, CLASSPATHTYPE* pdwPathType, DWORD* pdwNewPackageFlags); typedef struct tagCLASSCONTAINER { LPOLESTR pszClassStorePath; CServerContext ServerContext; } CLASSCONTAINER, *PCLASSCONTAINER; class CClassContainerCF : public IClassFactory { public: CClassContainerCF(); ~CClassContainerCF(); virtual HRESULT __stdcall QueryInterface( REFIID riid, void ** ppvObject); virtual ULONG __stdcall AddRef(); virtual ULONG __stdcall Release(); virtual HRESULT __stdcall CreateInstance( IUnknown * pUnkOuter, REFIID riid, void ** ppvObject); virtual HRESULT __stdcall LockServer( BOOL fLock); HRESULT __stdcall CreateConnectedInstance( CServerContext* pServerContext, LPOLESTR pszPath, void ** ppvObject); protected: unsigned long m_uRefs; }; // // ClassContainer class. // class CClassContainer : public IClassAdmin { private: HRESULT GetGPOName( WCHAR** ppszPolicyName ); WCHAR m_szContainerName[_MAX_PATH]; WCHAR * m_szPackageName; WCHAR * m_szCategoryName; BOOL m_fOpen; HANDLE m_ADsContainer; HANDLE m_ADsPackageContainer; WCHAR * m_szPolicyName; GUID m_PolicyId; CServerContext m_ServerContext; public: CClassContainer(); CClassContainer( CServerContext* pServerContext, LPOLESTR pszPath, HRESULT *phr); ~CClassContainer(void); // // IUnknown // HRESULT __stdcall QueryInterface( REFIID iid, void ** ppv ); ULONG __stdcall AddRef(); ULONG __stdcall Release(); // // IClassAdmin Methods // HRESULT __stdcall GetGPOInfo( GUID *GPOId, LPOLESTR *pszPolicyName ); HRESULT __stdcall AddPackage( PACKAGEDETAIL *pPackageDetail, GUID *PkgGuid ); HRESULT __stdcall RemovePackage( LPOLESTR pszPackageName, DWORD dwFlags ); HRESULT __stdcall SetPriorityByFileExt( LPOLESTR pszPackageName, LPOLESTR pszFileExt, UINT Priority ); HRESULT __stdcall ChangePackageUpgradeInfoIncremental( GUID PkgGuid, UPGRADEINFO UpgradeInfo, DWORD OpFlags ); HRESULT __stdcall ChangePackageProperties( LPOLESTR pszPackageName, LPOLESTR pszNewName, DWORD *pdwFlags, LPOLESTR pszUrl, LPOLESTR pszScriptPath, UINT *pInstallUiLevel, DWORD *pdwRevision ); HRESULT __stdcall ChangePackageCategories( LPOLESTR pszPackageName, UINT cCategories, GUID *rpCategory ); HRESULT __stdcall ChangePackageSourceList( LPOLESTR pszPackageName, UINT cSources, LPOLESTR *pszSourceList ); HRESULT __stdcall ChangePackageUpgradeList( LPOLESTR pszPackageName, UINT cUpgrades, UPGRADEINFO *prgUpgradeInfoList ); HRESULT __stdcall EnumPackages( LPOLESTR pszFileExt, GUID *pCategory, DWORD dwAppFlags, DWORD *pdwUserLangId, CSPLATFORM *pPlatform, IEnumPackage **ppIEnumPackage ); HRESULT __stdcall GetPackageDetails ( LPOLESTR pszPackageName, PACKAGEDETAIL *pPackageDetail ); HRESULT __stdcall GetPackageDetailsFromGuid ( GUID PkgGuid, PACKAGEDETAIL *pPackageDetail ); HRESULT __stdcall GetAppCategories ( LCID Locale, APPCATEGORYINFOLIST *pAppCategoryList ); HRESULT __stdcall RegisterAppCategory ( APPCATEGORYINFO *pAppCategory ); HRESULT __stdcall UnregisterAppCategory ( GUID *pAppCategoryId ); HRESULT __stdcall Cleanup ( FILETIME *pTimeBefore ); HRESULT __stdcall GetDNFromPackageName (LPOLESTR pszPackageName, LPOLESTR *szDN); HRESULT __stdcall RedeployPackage( GUID* pPackageGuid, PACKAGEDETAIL *pPackageDetail ); // // Utility functions // HRESULT BuildDNFromPackageGuid(GUID PackageGuid, LPOLESTR *szDN); HRESULT GetPackageGuid(WCHAR *szRDN, GUID *pPackageGuid); HRESULT MarkPackageUpgradeBy( LPOLESTR szClassStore, GUID PackageGuid, GUID UpgradedByPackageGuid, DWORD Flags, DWORD Add ); HRESULT __stdcall DeletePackage ( LPOLESTR szRDN ); //---------------------------------------------------------------------- protected: HRESULT __stdcall DeployPackage( HANDLE hExistingPackage, PACKAGEDETAIL *pPackageDetail, GUID *PkgGuid ); unsigned long m_uRefs; };