windows-nt/Source/XPSP1/NT/admin/wmi/wbem/providers/dsprovider/adsiprop.h
2020-09-26 16:20:57 +08:00

314 lines
10 KiB
C++

//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
// ***************************************************************************
//
// Original Author: Rajesh Rao
//
// $Author: rajeshr $
// $Date: 6/11/98 4:43p $
// $Workfile:adsiprop.h $
//
// $Modtime: 6/11/98 11:21a $
// $Revision: 1 $
// $Nokeywords: $
//
//
// Description: Contains the declaration for the CADSIProperty which encapsulates an ADSI property. The syntax of an ADSI Property
// is based on the values of the following 3 attributes:
// Attribute Syntax : This is an OID
// OMSyntax: This is an integer
// OMObjectClass : This is an octet string
// For all the syntaxes in the AD, the value om Attribute Syntax is enough for our purposes of
// mapping to a CIM Syntax since values of instances of these properties come mapped to the same
// ADS_TYPE if the value of their OMSyntax is same. Except for the syntaxes Object(OR-Name) and DN_With_Binary
// which have the same value for OMSyntax and Attribute Syntax, but are differentiated based on the value
// of the OMObjectClass. Hence instead of storing the value of OMObjectClass (which is an LPBYTE value) for
// every attribute, we just store one BOOLEAN value isORName which tells us whether the syntax is OR-Name or DN_With_Binary.
// Call it a hack, optimization whatever.
//
//***************************************************************************
#ifndef ADSI_PROPERTY_H
#define ADSI_PROPERTY_H
class CADSIProperty : public CRefCountedObject
{
public:
//***************************************************************************
//
// CADSIProperty::CADSIProperty
//
// Purpose : Constructor
//
// Parameters:
//
// None
//***************************************************************************
CADSIProperty();
//***************************************************************************
//
// CADSIProperty::CADSIProperty
//
// Purpose : Constructor
//
// Parameters:
// lpszWBEMPropertyName : The WBEM name of the property being created. A copy of this is made
// lpszADSIPropertyName : The ADSI name of the property being created. A copy of this is made
//***************************************************************************
CADSIProperty(LPCWSTR lpszWBEMPropertyName, LPCWSTR lpszADSIPropertyName);
//***************************************************************************
//
// CADSIProperty :: ~CADSIProperty
//
// Purpose : Destructor
//***************************************************************************
virtual ~CADSIProperty();
//***************************************************************************
//
// CADSIProperty :: GetWBEMPropertyName
//
// Purpose : Returns the WBEM property name of this property
//***************************************************************************
LPCWSTR GetWBEMPropertyName();
//***************************************************************************
//
// CADSIProperty :: SetWBEMPropertyName
//
// Purpose : Sets the WBEM name of this property
//***************************************************************************
void SetWBEMPropertyName(LPCWSTR lpszWBEMName);
//***************************************************************************
//
// CADSIProperty :: GetADSIPropertyName
//
// Purpose : Returns the ADSI property name of this property
//***************************************************************************
LPCWSTR GetADSIPropertyName();
//***************************************************************************
//
// CADSIProperty :: SetADSIPropertyName
//
// Purpose : Sets the ADSI name of this property
//***************************************************************************
void SetADSIPropertyName(LPCWSTR lpszADSIName);
//***************************************************************************
//
// CADSIProperty :: GetSyntaxOID
//
// Purpose : Returns the ADSI Syntax OID of this property
//***************************************************************************
LPCWSTR GetSyntaxOID();
//***************************************************************************
//
// CADSIProperty :: SetSyntaxOID
//
// Purpose : Sets the ADSI Syntax OID of this property
//***************************************************************************
void SetSyntaxOID(LPCWSTR lpszSystaxOID);
//***************************************************************************
//
// CADSIProperty :: IsORName
//
// Purpose : Returns whether the property has a syntax of Object(OR-Name).
//***************************************************************************
BOOLEAN IsORName();
//***************************************************************************
//
// CADSIProperty :: SetORName
//
// Purpose : Sets the m_bORName property of this property
//***************************************************************************
void SetORName(BOOLEAN bORName);
//***************************************************************************
//
// CADSIProperty :: IsMultiValued
//
// Purpose : Returns whether the property is multi valued
//***************************************************************************
BOOLEAN IsMultiValued();
//***************************************************************************
//
// CADSIProperty :: SetMultiValued
//
// Purpose : Sets the multi-valued property of this property
//***************************************************************************
void SetMultiValued(BOOLEAN bMultiValued);
//***************************************************************************
//
// CADSIProperty :: IsSystemOnly
//
// Purpose : Returns whether the property is SystemOnly
//***************************************************************************
BOOLEAN IsSystemOnly();
//***************************************************************************
//
// CADSIProperty :: SetSystemOnly
//
// Purpose : Sets the SystemOnly property of this property
//***************************************************************************
void SetSystemOnly(BOOLEAN bSystemOnly);
//***************************************************************************
//
// CADSIProperty :: GetSearchFlags
//
// Purpose : Returns the SearchFlags property of the property
//***************************************************************************
DWORD GetSearchFlags();
//***************************************************************************
//
// CADSIProperty :: SetSearchFlags
//
// Purpose : Sets the SearchFlags property of this property
//***************************************************************************
void SetSearchFlags(DWORD dwSearchFlags);
//***************************************************************************
//
// CADSIProperty :: GetOMSyntax
//
// Purpose : Returns the OMSyntax property of the property
//***************************************************************************
DWORD GetOMSyntax();
//***************************************************************************
//
// CADSIProperty :: SetOMSyntax
//
// Purpose : Sets the OMSyntax property of this property
//***************************************************************************
void SetOMSyntax(DWORD dwOMSyntax);
//***************************************************************************
//
// CADSIProperty :: GetMAPI_ID
//
// Purpose : Returns the MAPI_ID property of the property
//***************************************************************************
DWORD GetMAPI_ID();
//***************************************************************************
//
// CADSIProperty :: SetMAPI_ID
//
// Purpose : Sets the MAPI_ID property of this property
//***************************************************************************
void SetMAPI_ID(DWORD dwMAPI_ID);
//***************************************************************************
//
// CADSIProperty :: GetAttributeID
//
// Purpose : Returns the Attribute ID of this property
//***************************************************************************
LPCWSTR GetAttributeID();
//***************************************************************************
//
// CADSIProperty :: SetAttributeID
//
// Purpose : Sets the Attribute ID of this property
//***************************************************************************
void SetAttributeID(LPCWSTR lpszAttributeID);
//***************************************************************************
//
// CADSIProperty :: GetCommonName
//
// Purpose : Returns the Common Name of this property
//***************************************************************************
LPCWSTR GetCommonName();
//***************************************************************************
//
// CADSIProperty :: SetCommonName
//
// Purpose : Sets the CommonName of this property
//***************************************************************************
void SetCommonName(LPCWSTR lpszCommonName);
//***************************************************************************
//
// CADSIProperty :: GetDirectoryObject
//
// Purpose : Returns the ADSI object pertaining to this property
// It is the user's duty to release it when done
//
// Parameters:
// None
//
// Return Value:
// The ADSI object interface pertaining to this property
//***************************************************************************
IDirectoryObject *GetDirectoryObject();
//***************************************************************************
//
// CADSIProperty :: SetDirectoryObject
//
// Purpose : Sets the ADSI object pertaining to this property
//
// Parameter : The directory object pertaining to this property
//***************************************************************************
void SetDirectoryObject(IDirectoryObject *pDirectoryObject);
protected:
// The WBEM name of this property
LPWSTR m_lpszWBEMPropertyName;
// The ADSI interface for the object representing this property
IDirectoryObject * m_pDirectoryObject;
// The Syntax OID
LPWSTR m_lpszSyntaxOID;
// Used to differentiate between the syntaxes Object(OR-Name) and DN_with_Binary
// See the beginning of this file for a detailed explanation of this.
BOOLEAN m_bORName;
// Whether it is multi valued
BOOLEAN m_bMultiValued;
// The Attribute ID
LPWSTR m_lpszAttributeID;
// The Common Name
LPWSTR m_lpszCommonName;
// Whether this property is SystemOnly
BOOLEAN m_bSystemOnly;
// Search Flags
DWORD m_dwSearchFlags;
// MAPI ID
DWORD m_dwMAPI_ID;
// OM Syntax
DWORD m_dwOMSyntax;
};
#endif /* ADSI_PROPERTY_H */