CCLSOBJ.H
/*++ 
 
Copyright (c) 1996 Microsoft Corporation 
 
Module Name: 
 
    CClsObj.h 
 
Abstract: 
 
Author: 
 
Environment: 
 
    User mode 
 
Revision History : 
 
--*/ 
#ifndef _CCLSOBJ_H_ 
#define _CCLSOBJ_H_ 
 
typedef struct _propentry{ 
    DWORD dwSyntaxId; 
    LPWSTR pszPropName; 
    struct _propentry *pNext; 
} PROPENTRY, *PPROPENTRY; 
 
#define SampleDS_CONTAINER_CLASS               0x01 
#define SampleDS_EFFECTIVE_CLASS               0x02 
#define SampleDS_NONREMOVABLE_CLASS            0x04 
#define SampleDS_AMBIGUOUS_NAMING              0x08 
#define SampleDS_AMBIGUOUS_CONTAINMENT         0x10 
 
class CSampleDSClass; 
 
 
class CSampleDSClass : INHERIT_TRACKING, 
                     public CCoreADsObject, 
                     public IADsClass 
{ 
public: 
 
    /* IUnknown methods */ 
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ; 
 
    DECLARE_STD_REFCOUNTING 
 
    DECLARE_IDispatch_METHODS 
 
    DECLARE_IADs_METHODS 
 
 
    DECLARE_IADsClass_METHODS 
 
    CSampleDSClass::CSampleDSClass(); 
 
    CSampleDSClass::~CSampleDSClass(); 
 
    static 
    HRESULT 
    CSampleDSClass::CreateClass( 
        BSTR Parent, 
        BSTR CommonName, 
        LPSampleDS_CLASS_DEF lpClassDefs, 
        DWORD dwObjectState, 
        REFIID riid, 
        void **ppvObj 
        ); 
 
    static 
    HRESULT 
    CSampleDSClass::CreateClass( 
        BSTR Parent, 
        BSTR CommonName, 
        HANDLE hTree, 
        DWORD dwObjectState, 
        REFIID riid, 
        void **ppvObj 
        ); 
     
    static 
    HRESULT 
    CSampleDSClass::AllocateClassObject( 
        CSampleDSClass ** ppClass 
        ); 
 
    STDMETHOD(GetInfo)( 
        THIS_ DWORD dwApiLevel, 
        BOOL fExplicit 
        ); 
 
protected: 
    VARIANT     _vFilter; 
    LPWSTR      _lpClassName; 
    DWORD       _dwNumberOfMandatoryAttributes; 
    PPROPENTRY  _lpMandatoryAttributes; 
    CDispatchMgr FAR * _pDispMgr; 
}; 
 
 
PPROPENTRY 
CreatePropertyList( 
    LPWSTR_LIST  lpStringList 
    ); 
 
PPROPENTRY 
CreatePropertyEntry( 
    LPWSTR pszPropertyName, 
    DWORD dwSyntaxId 
    ); 
 
void 
FreePropertyEntry( 
    PPROPENTRY pPropName 
    ); 
 
 
HRESULT 
MakeVariantFromPropList( 
    PPROPENTRY pPropList, 
    DWORD dwNumEntries, 
    VARIANT * pVarList 
    ); 
#endif