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

135 lines
3.6 KiB
C++

//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
// ***************************************************************************
//
// Original Author: Rajesh Rao
//
// $Author: rajeshr $
// $Date: 6/11/98 4:43p $
// $Workfile:adsiinst.cpp $
//
// $Modtime: 6/11/98 11:21a $
// $Revision: 1 $
// $Nokeywords: $
//
//
// Description: Contains the implementation of the CADSIInstance which encapsulates an ADSI instance
//
//***************************************************************************
#include "precomp.h"
//***************************************************************************
//
// CADSIInstance::CADSIInstance
//
// Purpose : Constructor
//
// Parameters:
// lpszADSIPath : The ADSI Path to the object
//***************************************************************************
CADSIInstance :: CADSIInstance(LPCWSTR lpszADSIPath, IDirectoryObject *pDirectoryObject)
: CRefCountedObject(lpszADSIPath)
{
m_pAttributes = NULL;
m_dwNumAttributes = 0;
m_pObjectInfo = NULL;
m_pDirectoryObject = pDirectoryObject;
m_pDirectoryObject->AddRef();
}
//***************************************************************************
//
// CADSIInstance :: ~CADSIInstance
//
// Purpose : Destructor
//***************************************************************************
CADSIInstance :: ~CADSIInstance()
{
// Free the attributes
if(m_pAttributes)
FreeADsMem((LPVOID *) m_pAttributes);
if(m_pObjectInfo)
FreeADsMem((LPVOID *) m_pObjectInfo);
if(m_pDirectoryObject)
m_pDirectoryObject->Release();
}
IDirectoryObject *CADSIInstance :: GetDirectoryObject()
{
m_pDirectoryObject->AddRef();
return m_pDirectoryObject;
}
//***************************************************************************
//
// CADSIInstance :: GetAttributes
//
// Purpose : See header for details
//***************************************************************************
PADS_ATTR_INFO CADSIInstance :: GetAttributes(DWORD *pdwNumAttributes)
{
*pdwNumAttributes = m_dwNumAttributes;
return m_pAttributes;
}
//***************************************************************************
//
// CADSIInstance :: SetAttributes
//
// Purpose : See header for details
//***************************************************************************
void CADSIInstance :: SetAttributes(PADS_ATTR_INFO pAttributes, DWORD dwNumAttributes)
{
// Go thru the attributes and release them
if(m_pAttributes)
FreeADsMem((LPVOID *) m_pAttributes);
m_pAttributes = pAttributes;
m_dwNumAttributes = dwNumAttributes;
}
//***************************************************************************
//
// CADSIInstance :: GetObjectInfo
//
// Purpose : See header for details
//***************************************************************************
PADS_OBJECT_INFO CADSIInstance :: GetObjectInfo()
{
return m_pObjectInfo;
}
//***************************************************************************
//
// CADSIInstance :: SetObjectInfo
//
// Purpose : See header for details
//***************************************************************************
void CADSIInstance :: SetObjectInfo(PADS_OBJECT_INFO pObjectInfo)
{
// Go thru the attributes and release them
if(m_pObjectInfo)
FreeADsMem((LPVOID *) m_pObjectInfo);
m_pObjectInfo = pObjectInfo;
}
//***************************************************************************
//
// CADSIInstance :: GetADSIClassName
//
// Purpose : See header for details
//***************************************************************************
LPCWSTR CADSIInstance :: GetADSIClassName()
{
if(m_pObjectInfo)
return m_pObjectInfo->pszClassName;
return NULL;
}