windows-nt/Source/XPSP1/NT/ds/adsi/winnt/cschema.hxx
2020-09-26 16:20:57 +08:00

338 lines
7.4 KiB
C++

typedef struct _PropertyInfo
{
LPTSTR szPropertyName;
BSTR bstrOID;
BSTR bstrSyntax;
long lMaxRange;
long lMinRange;
BOOL fMultiValued;
DWORD dwFlags;
DWORD dwInfoLevel;
DWORD dwSyntaxId;
} PROPERTYINFO, *PPROPERTYINFO, *LPPROPERTYINFO;
typedef struct _ClassInfo
{
BSTR bstrName;
const GUID *pCLSID;
const GUID *pPrimaryInterfaceGUID;
BSTR bstrOID;
BOOL fAbstract;
BSTR bstrMandatoryProperties;
BSTR bstrOptionalProperties;
BSTR bstrPossSuperiors;
BSTR bstrContainment;
BOOL fContainer;
BSTR bstrHelpFileName;
long lHelpFileContext;
PROPERTYINFO *aPropertyInfo;
DWORD cPropertyInfo;
} CLASSINFO;
typedef struct _SyntaxInfo
{
BSTR bstrName;
long lOleAutoDataType;
} SYNTAXINFO;
extern DWORD g_cWinNTClasses;
extern CLASSINFO g_aWinNTClasses[];
extern DWORD g_cWinNTSyntax;
extern SYNTAXINFO g_aWinNTSyntax[];
HRESULT MakeVariantFromStringList(
BSTR bstrList,
VARIANT *pvVariant );
class CWinNTSchema;
class CWinNTSchema : INHERIT_TRACKING,
public CCoreADsObject,
public ISupportErrorInfo,
public IADs,
public IADsContainer,
public INonDelegatingUnknown,
public IADsExtension
{
public:
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// INonDelegatingUnknown methods
STDMETHOD(NonDelegatingQueryInterface)(THIS_
const IID&,
void **
);
DECLARE_NON_DELEGATING_REFCOUNTING
/* Other methods */
DECLARE_IDispatch_METHODS
DECLARE_ISupportErrorInfo_METHODS
DECLARE_IADs_METHODS
DECLARE_IADsContainer_METHODS
DECLARE_IADsExtension_METHODS
/* Constructors, Destructors .... */
CWinNTSchema::CWinNTSchema();
CWinNTSchema::~CWinNTSchema();
static HRESULT CWinNTSchema::CreateSchema(
BSTR bstrParent,
BSTR bstrName,
DWORD dwObjectState,
REFIID riid,
CWinNTCredentials& Credentials,
void **ppvObj );
static HRESULT CWinNTSchema::AllocateSchemaObject(
CWinNTSchema **ppSchema );
STDMETHOD(ImplicitGetInfo)(void);
protected:
CAggregatorDispMgr FAR * _pDispMgr;
VARIANT _vFilter;
CWinNTCredentials _Credentials;
};
class CWinNTClass : INHERIT_TRACKING,
public CCoreADsObject,
public ISupportErrorInfo,
public IADsClass,
public INonDelegatingUnknown,
public IADsExtension
{
public:
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// INonDelegatingUnknown methods
STDMETHOD(NonDelegatingQueryInterface)(THIS_
const IID&,
void **
);
DECLARE_NON_DELEGATING_REFCOUNTING
/* Other methods */
DECLARE_IDispatch_METHODS
DECLARE_ISupportErrorInfo_METHODS
DECLARE_IADs_METHODS
DECLARE_IADsClass_METHODS
DECLARE_IADsExtension_METHODS
/* Constructors, Destructors, .... */
CWinNTClass::CWinNTClass();
CWinNTClass::~CWinNTClass();
static HRESULT CWinNTClass::CreateClass(
BSTR bstrParent,
CLASSINFO *pClassInfo,
DWORD dwObjectState,
REFIID riid,
CWinNTCredentials& Credentials,
void **ppvObj );
static HRESULT CWinNTClass::AllocateClassObject(
CWinNTClass **ppClass );
STDMETHOD(GetInfo)(THIS_ DWORD dwApiLevel, BOOL fExplicit) ;
STDMETHOD(ImplicitGetInfo)(void);
protected:
CAggregatorDispMgr FAR * _pDispMgr;
VARIANT _vFilter;
DWORD _cPropertyInfo;
PROPERTYINFO *_aPropertyInfo;
/* Properties */
BSTR _bstrCLSID;
BSTR _bstrOID;
BSTR _bstrPrimaryInterface;
VARIANT_BOOL _fAbstract;
VARIANT _vMandatoryProperties;
VARIANT _vOptionalProperties;
VARIANT _vPossSuperiors;
VARIANT _vContainment;
VARIANT_BOOL _fContainer;
BSTR _bstrHelpFileName;
long _lHelpFileContext;
CWinNTCredentials _Credentials;
};
class CWinNTProperty : INHERIT_TRACKING,
public CCoreADsObject,
public ISupportErrorInfo,
public IADsProperty,
public INonDelegatingUnknown,
public IADsExtension
{
public:
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// INonDelegatingUnknown methods
STDMETHOD(NonDelegatingQueryInterface)(THIS_
const IID&,
void **
);
DECLARE_NON_DELEGATING_REFCOUNTING
/* Other methods */
DECLARE_IDispatch_METHODS
DECLARE_ISupportErrorInfo_METHODS
DECLARE_IADs_METHODS
DECLARE_IADsProperty_METHODS
DECLARE_IADsExtension_METHODS
/* Constructors, Destructors, ... */
CWinNTProperty::CWinNTProperty();
CWinNTProperty::~CWinNTProperty();
static HRESULT CWinNTProperty::CreateProperty(
BSTR bstrParent,
PROPERTYINFO *pPropertyInfo,
DWORD dwObjectState,
REFIID riid,
CWinNTCredentials& Credentials,
void **ppvObj );
static HRESULT CWinNTProperty::AllocatePropertyObject(
CWinNTProperty **ppProperty );
STDMETHOD(GetInfo)(THIS_ DWORD dwApiLevel, BOOL fExplicit) ;
STDMETHOD(ImplicitGetInfo)(void);
protected:
CAggregatorDispMgr FAR * _pDispMgr;
/* Properties */
BSTR _bstrOID;
BSTR _bstrSyntax;
long _lMaxRange;
long _lMinRange;
VARIANT_BOOL _fMultiValued;
CWinNTCredentials _Credentials;
};
class CWinNTSyntax : INHERIT_TRACKING,
public CCoreADsObject,
public ISupportErrorInfo,
public IADsSyntax,
public INonDelegatingUnknown,
public IADsExtension
{
public:
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// INonDelegatingUnknown methods
STDMETHOD(NonDelegatingQueryInterface)(THIS_
const IID&,
void **
);
DECLARE_NON_DELEGATING_REFCOUNTING
/* Other methods */
DECLARE_IDispatch_METHODS
DECLARE_ISupportErrorInfo_METHODS
DECLARE_IADs_METHODS
DECLARE_IADsSyntax_METHODS
DECLARE_IADsExtension_METHODS
/* Constructors, Destructors, ... */
CWinNTSyntax::CWinNTSyntax();
CWinNTSyntax::~CWinNTSyntax();
static HRESULT CWinNTSyntax::CreateSyntax(
BSTR bstrParent,
SYNTAXINFO *pSyntaxInfo,
DWORD dwObjectState,
REFIID riid,
CWinNTCredentials& Credentials,
void **ppvObj );
static HRESULT CWinNTSyntax::AllocateSyntaxObject(
CWinNTSyntax **ppSyntax );
STDMETHOD(GetInfo)(THIS_ DWORD dwApiLevel, BOOL fExplicit) ;
STDMETHOD(ImplicitGetInfo)(void);
protected:
CAggregatorDispMgr FAR * _pDispMgr;
/* Properties */
long _lOleAutoDataType;
CWinNTCredentials _Credentials;
};