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.
 
 
 
 
 
 

124 lines
3.5 KiB

//////////////////////////////////////////////////////////////////////////////
/*++
Copyright (C) Microsoft Corporation
Module Name:
NTGroups.h
Abstract:
Declaration of the CIASGroupsAttributeEditor class.
This class is the C++ implementation of the IIASAttributeEditor interface on
the NTGroups Attribute Editor COM object.
See NTGroups.cpp for implementation.
Revision History:
mmaguire 08/11/98 - created based on byao's code to add groups
--*/
//////////////////////////////////////////////////////////////////////////////
#if !defined(_GROUPS_ATTRIBUTE_EDITOR_H_)
#define _GROUPS_ATTRIBUTE_EDITOR_H_
#pragma once
#include <objsel.h>
//////////////////////////////////////////////////////////////////////////////
// BEGIN INCLUDES
//
// where we can find what this class derives from:
//
//
// where we can find what this class has or uses:
//
//
// END INCLUDES
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CIASGroupAttributeEditor
class ATL_NO_VTABLE CIASGroupsAttributeEditor :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CIASGroupsAttributeEditor, &CLSID_IASGroupsAttributeEditor>,
public IDispatchImpl<IIASAttributeEditor, &IID_IIASAttributeEditor, &LIBID_NAPMMCLib>
{
public:
CIASGroupsAttributeEditor()
{
}
DECLARE_NO_REGISTRY()
BEGIN_COM_MAP(CIASGroupsAttributeEditor)
COM_INTERFACE_ENTRY(IIASAttributeEditor)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// IIASAttributeEditor:
public:
STDMETHOD(GetDisplayInfo)(/*[in]*/ IIASAttributeInfo *pIASAttributeInfo, /*[in]*/ VARIANT *pAttributeValue, /*[out]*/ BSTR *pVendorName, /*[out]*/ BSTR *pValueAsString, /*[in, out]*/ BSTR *pReserved );
STDMETHOD(Edit)(/*[in]*/ IIASAttributeInfo *pIASAttributeInfo, /*[in]*/ VARIANT *pAttributeValue, /*[in, out]*/ BSTR *pReserved );
};
// We define a class for a list of groups which encapsulates some of the
// problems of maintaining a list of SID/Human Readable NT Groups.
typedef std::pair< CComBSTR /* bstrTextualSid */, CComBSTR /* bstrHumanReadable */ > GROUPPAIR;
typedef std::vector< GROUPPAIR > GROUPLIST;
class GroupList : public GROUPLIST
{
public:
HRESULT PopulateGroupsFromVariant( VARIANT * pvarGroups );
HRESULT PopulateVariantFromGroups( VARIANT * pvarGroups );
HRESULT PickNtGroups( HWND hWndParent );
// This BSTR is needed because popping up group picker and
// correctly converting SIDs to HumanReadable text
// requires machine name.
CComBSTR m_bstrServerName;
#ifdef DEBUG
HRESULT DebugPrintGroups();
#endif DEBUG
protected:
HRESULT AddPairToGroups( GROUPPAIR &thePair );
#ifndef OLD_OBJECT_PICKER
HRESULT AddSelectionSidsToGroup( PDS_SELECTION_LIST pDsSelList );
#else // OLD_OBJECT_PICKER
HRESULT AddSelectionSidsToGroup( PDSSELECTIONLIST pDsSelList );
#endif // OLD_OBJECT_PICKER
};
// class to populate the groups in list view control ...
class NTGroup_ListView : public GroupList
{
public:
NTGroup_ListView() : m_hListView ( NULL ), m_hParent(NULL) { };
void SetListView(HWND hListView, HWND hParent = NULL) {m_hListView = hListView; m_hParent = hParent;};
BOOL PopulateGroupList( int iStartIndex );
DWORD AddMoreGroups();
DWORD RemoveSelectedGroups();
protected:
HWND m_hListView;
HWND m_hParent;
};
#endif // _GROUPS_ATTRIBUTE_EDITOR_H_