Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "stdafx.h"
#include "objects.h"
#include "maindoc.h"
#include "resource.h"
#include "grpcrtit.h"
#include "delgrpit.h"
/***********************************************************
Function: Arguments: Return: Purpose: Author(s): Revision: Date: ***********************************************************/ COleDsGroup::COleDsGroup( ) { }
/***********************************************************
Function: Arguments: Return: Purpose: Author(s): Revision: Date: ***********************************************************/ COleDsGroup::COleDsGroup( IUnknown *pIUnk): COleDsObject( pIUnk ) { BOOL bContainer; IADsContainer* pContainer; HRESULT hResult;
hResult = pIUnk->QueryInterface( IID_IADsContainer, (void**)&pContainer ); bContainer = SUCCEEDED( hResult );
if( SUCCEEDED( hResult ) ) pContainer->Release( );
m_bHasChildren = bContainer; m_bSupportAdd = bContainer; m_bSupportMove = bContainer; m_bSupportCopy = bContainer; }
/***********************************************************
Function: Arguments: Return: Purpose: Author(s): Revision: Date: ***********************************************************/ COleDsGroup::~COleDsGroup( ) {
}
/***********************************************************
Function: Arguments: Return: Purpose: Author(s): Revision: Date: ***********************************************************/ DWORD COleDsGroup::GetChildren( DWORD* pTokens, DWORD dwMaxChildren, CDialog* pQueryStatus, BOOL* pFilters, DWORD dwFilters ) { HRESULT hResult; IADsGroup* pIGroup; //IOleDsGroupOperations* pIGroupOper;
MEMBERS* pIMembers;
if( NULL == m_pIUnk ) { ASSERT( FALSE ); return 0L; } hResult = m_pIUnk->QueryInterface( IID_IADsGroup, (void**) &pIGroup ); if( FAILED( hResult ) ) { TRACE( _T("ERROR!!! Group object does not return IID_IADsGroup interface\n") ); return 0L; }
COleDsObject::GetChildren( pTokens, dwMaxChildren, pQueryStatus, pFilters, dwFilters );
//hResult = pIGroup->QueryInterface( IID_IADsGroupOperations, (void**)&pIGroupOper );
if( SUCCEEDED( hResult ) ) { hResult = pIGroup->Members( &pIMembers ); if( SUCCEEDED( hResult ) ) { COleDsObject::GetChildren( pIMembers ); pIMembers->Release( ); } else { TRACE( _T("ERROR!!! Members fails for Group object\n") ); }
//pIGroupOper->Release( );
} else { TRACE( _T("ERROR!!! GeneralInfo fails for Group object\n") ); } pIGroup->Release( );
return m_dwCount; }
/***********************************************************
Function: Arguments: Return: Purpose: Author(s): Revision: Date: ***********************************************************/ HRESULT COleDsGroup::DeleteItem ( COleDsObject* pObject ) { return ContainerDeleteItem( pObject ); CDeleteGroupItem aDeleteItem; BSTR bstrName; //IOleDsGroupOperations* pIGroupOperations = NULL;
IADsGroup* pIGroup = NULL; HRESULT hResult; CString strFullName; CString strQualifiedName; CString strItemType;
MakeQualifiedName( strQualifiedName, m_strOleDsPath, m_dwType ); strFullName = pObject->GetOleDsPath( ); strItemType = pObject->GetClass( );
aDeleteItem.m_strItemName = strFullName; aDeleteItem.m_strParent = strQualifiedName; aDeleteItem.m_strItemType = strItemType;
if( aDeleteItem.DoModal( ) != IDOK ) { return E_FAIL; }
while( TRUE ) { hResult = m_pIUnk->QueryInterface( IID_IADsGroup, (void**)&pIGroup ); ASSERT( SUCCEEDED( hResult ) ); if( FAILED( hResult ) ) { break; }
//hResult = m_pIUnk->QueryInterface( IID_IADsGroupOperations,
// (void**)&pIGroupOperations );
//ASSERT( SUCCEEDED( hResult ) );
//if( FAILED( hResult ) )
//{
// break;
//}
bstrName = AllocBSTR( aDeleteItem.m_strItemName.GetBuffer( 128 ) ); //hResult = pIGroupOperations->Remove( bstrName );
hResult = pIGroup->Remove( bstrName ); SysFreeString( bstrName );
break; }
//if( NULL != pIGroupOperations )
//{
// pIGroupOperations->Release( );
//}
if( NULL != pIGroup ) { pIGroup->Release( ); }
return hResult;
}
/***********************************************************
Function: Arguments: Return: Purpose: Author(s): Revision: Date: ***********************************************************/ HRESULT COleDsGroup::AddItem( ) {
return ContainerAddItem( );
CGroupCreateItem aCreateItem; BSTR bstrName; //IOleDsGroupOperations* pIGroupOperations = NULL;
IADsGroup* pIGroup = NULL; HRESULT hResult; CString strQualifiedName;
MakeQualifiedName( strQualifiedName, m_strOleDsPath, m_dwType ); aCreateItem.m_strParent = strQualifiedName; aCreateItem.m_strItemType = _T("NA");
if( aCreateItem.DoModal( ) != IDOK ) { return E_FAIL; }
bstrName = AllocBSTR( aCreateItem.m_strNewItemName.GetBuffer(128) );
while( TRUE ) { hResult = m_pIUnk->QueryInterface( IID_IADsGroup, (void**)&pIGroup ); ASSERT( SUCCEEDED( hResult ) ); if( FAILED( hResult ) ) { break; }
//hResult = m_pIUnk->QueryInterface( IID_IADsGroupOperations, (void**)&pIGroupOperations );
//ASSERT( SUCCEEDED( hResult ) );
//if( FAILED( hResult ) )
//{
// break;
//}
hResult = pIGroup->Add( bstrName ); break; }
SysFreeString( bstrName );
//if( NULL != pIGroupOperations )
//{
// pIGroupOperations->Release( );
//}
if( NULL != pIGroup ) { pIGroup->Release( ); }
return hResult; }
|