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