338 lines
7.4 KiB
C++
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;
|
|
};
|