259 lines
7.4 KiB
C++
259 lines
7.4 KiB
C++
//+------------------------------------------------------------------------
|
||
//
|
||
// Microsoft Windows
|
||
// Copyright (C) Microsoft Corporation, 1996 - 1997
|
||
//
|
||
// File: cclstor.hxx
|
||
//
|
||
// Contents: Definition for Class factory and IUnknown methods
|
||
// for CClassContainer
|
||
//
|
||
// Author: DebiM
|
||
//
|
||
//-------------------------------------------------------------------------
|
||
|
||
class CClassContainerCF : public IClassFactory, public IParseDisplayName
|
||
{
|
||
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 ParseDisplayName(
|
||
IBindCtx * pbc,
|
||
LPOLESTR pszDisplayName,
|
||
ULONG * pchEaten,
|
||
IMoniker ** ppmkOut);
|
||
|
||
HRESULT __stdcall CreateConnectedInstance(
|
||
LPOLESTR pszPath,
|
||
void ** ppvObject);
|
||
|
||
protected:
|
||
|
||
unsigned long m_uRefs;
|
||
};
|
||
|
||
|
||
//
|
||
// ClassContainer class.
|
||
//
|
||
|
||
class CClassContainer :
|
||
public IClassAdmin,
|
||
public ICatRegister,
|
||
public ICatInformation
|
||
{
|
||
private:
|
||
WCHAR m_szContainerName[_MAX_PATH];
|
||
WCHAR m_szClassName [_MAX_PATH];
|
||
WCHAR m_szPackageName [_MAX_PATH];
|
||
WCHAR m_szCategoryName [_MAX_PATH];
|
||
BOOL m_fOpen;
|
||
IADsContainer * m_ADsContainer;
|
||
IADs * m_pADsClassStore;
|
||
IADsContainer * m_ADsClassContainer;
|
||
IADsContainer * m_ADsPackageContainer;
|
||
IADsContainer * m_ADsCategoryContainer;
|
||
IDBCreateCommand * m_pIDBCreateCommand;
|
||
|
||
public:
|
||
CClassContainer();
|
||
CClassContainer(LPOLESTR pszPath, HRESULT *phr);
|
||
~CClassContainer(void);
|
||
|
||
//
|
||
// IUnknown
|
||
//
|
||
|
||
HRESULT __stdcall QueryInterface(
|
||
REFIID iid,
|
||
void ** ppv );
|
||
ULONG __stdcall AddRef();
|
||
ULONG __stdcall Release();
|
||
|
||
|
||
//
|
||
// IClassAdmin Methods
|
||
//
|
||
|
||
HRESULT __stdcall AddPackage(
|
||
LPOLESTR pszPackageName,
|
||
PACKAGEDETAIL *pPackageDetail
|
||
);
|
||
|
||
HRESULT __stdcall RemovePackage(
|
||
LPOLESTR pszPackageName
|
||
);
|
||
|
||
HRESULT __stdcall SetPriorityByFileExt(
|
||
LPOLESTR pszPackageName,
|
||
LPOLESTR pszFileExt,
|
||
UINT Priority
|
||
);
|
||
|
||
HRESULT __stdcall ChangePackageProperties(
|
||
LPOLESTR pszPackageName,
|
||
LPOLESTR pszNewName,
|
||
DWORD *pdwFlags,
|
||
LPOLESTR pszUrl,
|
||
LPOLESTR pszScriptPath,
|
||
DWORD *pInstallUiLevel
|
||
);
|
||
|
||
HRESULT __stdcall ChangePackageCategories(
|
||
LPOLESTR szPackageName,
|
||
UINT cCategories,
|
||
GUID *rpCategory
|
||
);
|
||
|
||
HRESULT __stdcall EnumPackages(
|
||
LPOLESTR pszFileExt,
|
||
GUID *pCategory,
|
||
DWORD dwAppFlags,
|
||
DWORD *pdwLocale,
|
||
CSPLATFORM *pPlatform,
|
||
IEnumPackage **ppIEnumPackage
|
||
);
|
||
|
||
HRESULT __stdcall GetPackageDetails (
|
||
LPOLESTR pszPackageName,
|
||
PACKAGEDETAIL *pPackageDetail
|
||
);
|
||
|
||
HRESULT __stdcall GetAppCategories (
|
||
LCID Locale,
|
||
APPCATEGORYINFOLIST *pAppCategoryList
|
||
);
|
||
|
||
|
||
HRESULT __stdcall RegisterAppCategory (
|
||
APPCATEGORYINFO *pAppCategory
|
||
);
|
||
|
||
HRESULT __stdcall UnregisterAppCategory (
|
||
GUID *pAppCategoryId
|
||
);
|
||
|
||
// helper functions.
|
||
HRESULT __stdcall DeleteClass (
|
||
LPOLESTR szClsid
|
||
);
|
||
|
||
HRESULT __stdcall NewClass (
|
||
CLASSDETAIL *pClassDetail
|
||
);
|
||
//
|
||
// ICatRegister
|
||
//
|
||
|
||
HRESULT __stdcall RegisterCategories(
|
||
ULONG cCategories,
|
||
CATEGORYINFO __RPC_FAR rgCategoryInfo[ ]);
|
||
|
||
HRESULT __stdcall UnRegisterCategories(
|
||
ULONG cCategories,
|
||
CATID __RPC_FAR rgcatid[ ]);
|
||
|
||
HRESULT __stdcall RegisterClassImplCategories(
|
||
REFCLSID rclsid,
|
||
ULONG cCategories,
|
||
CATID __RPC_FAR rgcatid[ ]);
|
||
|
||
HRESULT __stdcall UnRegisterClassImplCategories(
|
||
REFCLSID rclsid,
|
||
ULONG cCategories,
|
||
CATID __RPC_FAR rgcatid[ ]);
|
||
|
||
|
||
HRESULT __stdcall RegisterClassReqCategories(
|
||
REFCLSID rclsid,
|
||
ULONG cCategories,
|
||
CATID __RPC_FAR rgcatid[ ]);
|
||
|
||
HRESULT __stdcall UnRegisterClassReqCategories(
|
||
REFCLSID rclsid,
|
||
ULONG cCategories,
|
||
CATID __RPC_FAR rgcatid[ ]);
|
||
//
|
||
// utility functions
|
||
//
|
||
|
||
HRESULT __stdcall RegisterClassXXXCategories(
|
||
REFCLSID rclsid,
|
||
ULONG cCategories,
|
||
CATID __RPC_FAR rgcatid[ ],
|
||
BSTR impl_or_req);
|
||
|
||
HRESULT __stdcall UnRegisterClassXXXCategories(
|
||
REFCLSID rclsid,
|
||
ULONG cCategories,
|
||
CATID __RPC_FAR rgcatid[ ],
|
||
BSTR impl_or_req);
|
||
|
||
// this is the largely hidden interface which does the
|
||
// actual work.
|
||
//
|
||
// ICatInformation
|
||
//
|
||
HRESULT __stdcall EnumCategories(
|
||
LCID lcid,
|
||
IEnumCATEGORYINFO __RPC_FAR *__RPC_FAR *ppenumCategoryInfo);
|
||
|
||
HRESULT __stdcall GetCategoryDesc(
|
||
REFCATID rcatid,
|
||
LCID lcid,
|
||
LPWSTR __RPC_FAR *pszDesc);
|
||
|
||
HRESULT __stdcall EnumClassesOfCategories(
|
||
ULONG cImplemented,
|
||
CATID __RPC_FAR rgcatidImpl[ ],
|
||
ULONG cRequired,
|
||
CATID __RPC_FAR rgcatidReq[ ],
|
||
IEnumGUID __RPC_FAR *__RPC_FAR *ppenumClsid);
|
||
|
||
HRESULT __stdcall IsClassOfCategories(
|
||
REFCLSID rclsid,
|
||
ULONG cImplemented,
|
||
CATID __RPC_FAR rgcatidImpl[ ],
|
||
ULONG cRequired,
|
||
CATID __RPC_FAR rgcatidReq[ ]);
|
||
|
||
HRESULT __stdcall EnumImplCategoriesOfClass(
|
||
REFCLSID rclsid,
|
||
IEnumGUID __RPC_FAR *__RPC_FAR *ppenumCatid);
|
||
|
||
HRESULT __stdcall EnumReqCategoriesOfClass(
|
||
REFCLSID rclsid,
|
||
IEnumGUID __RPC_FAR *__RPC_FAR *ppenumCatid);
|
||
|
||
//
|
||
// Utility functions
|
||
//
|
||
HRESULT EnumCategoriesOfClass(
|
||
REFCLSID rclsid,
|
||
BSTR impl_or_req,
|
||
IEnumGUID **ppenumCatid);
|
||
|
||
//----------------------------------------------------------------------
|
||
protected:
|
||
unsigned long m_uRefs;
|
||
};
|
||
|
||
|