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.
161 lines
6.0 KiB
161 lines
6.0 KiB
#ifndef __ATTRINTERFACE_H
|
|
#define __ATTRINTERFACE_H
|
|
|
|
|
|
// {C7436F12-A27F-4cab-AACA-2BD27ED1B773}
|
|
DEFINE_GUID(CLSID_DsAttributeEditor,
|
|
0xc7436f12, 0xa27f, 0x4cab, 0xaa, 0xca, 0x2b, 0xd2, 0x7e, 0xd1, 0xb7, 0x73);
|
|
|
|
//
|
|
// Interface GUIDs
|
|
//
|
|
|
|
// {A9948091-69FF-4c00-BE92-925D42E0AD39}
|
|
DEFINE_GUID(IID_IDsAttributeEditor,
|
|
0xa9948091, 0x69ff, 0x4c00, 0xbe, 0x92, 0x92, 0x5d, 0x42, 0xe0, 0xad, 0x39);
|
|
|
|
// {A9948091-69FF-4c00-BE93-925D42E0AD39}
|
|
DEFINE_GUID(IID_IDsAttributeEditorExt,
|
|
0xa9948091, 0x69ff, 0x4c00, 0xbe, 0x93, 0x92, 0x5d, 0x42, 0xe0, 0xad, 0x39);
|
|
|
|
// {5828DF66-95FB-4afa-8F8E-EA0B7D302FB5}
|
|
DEFINE_GUID(IID_IDsBindingInfo,
|
|
0x5828df66, 0x95fb, 0x4afa, 0x8f, 0x8e, 0xea, 0xb, 0x7d, 0x30, 0x2f, 0xb5);
|
|
|
|
// ----------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsBindingInfo
|
|
//
|
|
// Implemented by any client needing to invoke the attribute editor UI
|
|
//
|
|
// Used by: the attribute editor UI
|
|
//
|
|
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsBindingInfo
|
|
|
|
interface __declspec(uuid("{5828DF66-95FB-4afa-8F8E-EA0B7D302FB5}")) IDsBindingInfo : public IUnknown
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
// *** IDsBindingInfo methods ***
|
|
STDMETHOD(DoBind)(THIS_ /*IN*/ LPCWSTR lpszPathName,
|
|
/*IN*/ DWORD dwReserved,
|
|
/*IN*/ REFIID riid,
|
|
/*IN*/ void FAR * FAR * ppObject) PURE;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsAttributeEditor
|
|
//
|
|
// Implemented by the object (implemented by the system) CLSID_DsAttributeEditor
|
|
//
|
|
// Used by: any client needing to invoke the attribute editor UI
|
|
//
|
|
|
|
//
|
|
// Function definition for the binding callback function
|
|
//
|
|
typedef HRESULT (*LPBINDINGFUNC)(/*IN*/ LPCWSTR lpszPathName,
|
|
/*IN*/ DWORD dwReserved,
|
|
/*IN*/ REFIID riid,
|
|
/*IN*/ void FAR * FAR * ppObject,
|
|
/*IN*/ LPARAM lParam);
|
|
|
|
//
|
|
// struct passed to IDsAttributeEditor::Initialize()
|
|
//
|
|
// it contains information regarding the binding function
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwSize; // size of struct, for versioning
|
|
DWORD dwFlags; // flags defined below
|
|
LPBINDINGFUNC lpfnBind; // the callback function used to bind to Active Directory
|
|
LPARAM lParam; // an optional property that is passed back to lpfnBind
|
|
LPWSTR lpszProviderServer; // the provider and server that will be used to perform binds
|
|
// in the form <Provider>://<server>:<port>/
|
|
} DS_ATTREDITOR_BINDINGINFO, * LPDS_ATTREDITOR_BINDINGINFO;
|
|
|
|
//
|
|
// Forward declaration
|
|
//
|
|
class CADSIEditPropertyPageHolder;
|
|
|
|
//
|
|
// Flags used in the DS_ATTREDITOR_BINDINGINFO struct above
|
|
//
|
|
#define DSATTR_EDITOR_ROOTDSE 0x00000001 // Connection is being made to the RootDSE (don't do schema checks)
|
|
#define DSATTR_EDITOR_GC 0x00000002 // Connection is being made to the global catalog (read only attrs)
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsAttributeEditor
|
|
|
|
interface __declspec(uuid("{A9948091-69FF-4c00-BE92-925D42E0AD39}")) IDsAttributeEditor : public IUnknown
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
// *** IDsAttributeEditor methods ***
|
|
STDMETHOD(Initialize)(THIS_ /*IN*/ IADs* pADsObj,
|
|
/*IN*/ LPDS_ATTREDITOR_BINDINGINFO pBindingInfo,
|
|
/*IN*/ CADSIEditPropertyPageHolder* pHolder) PURE;
|
|
STDMETHOD(CreateModal)() PURE;
|
|
STDMETHOD(GetPage)(THIS_ /*OUT*/ HPROPSHEETPAGE* phPropSheetPage) PURE;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsAttributeEditorExt
|
|
//
|
|
// Implemented by any client needing to provide a custom editor for any DS attribute or syntax
|
|
//
|
|
// Used by: the system to provide editing capabilities for attributes
|
|
//
|
|
|
|
//
|
|
// struct passed to IDsAttributeEditorExt::Initialize()
|
|
//
|
|
// it contains information regarding the attribute type and values
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwSize; // size of struct, for versioning
|
|
LPWSTR lpszClass; // pointer to a wide character string containing the class name
|
|
LPWSTR lpszAttribute; // pointer to a wide character string containing the attribute name
|
|
ADSTYPE adsType; // the ADSTYPE of the attribute
|
|
PADSVALUE pADsValue; // pointer to the ADSVALUE struct that holds the current values
|
|
DWORD dwNumValues; // the number of values pointed to by pADsValue
|
|
BOOL bMultivalued; // TRUE if the attribute is multivalued, FALSE if it is not.
|
|
BOOL bReadOnly; // TRUE if the editor should be shown as read-only
|
|
LPBINDINGFUNC lpfnBind; // the callback function used to bind to Active Directory
|
|
LPARAM lParam; // an optional property that is passed back to lpfnBind
|
|
} DS_ATTRIBUTE_EDITORINFO, * LPDS_ATTRIBUTE_EDITORINFO;
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsAttributeEditorExt
|
|
|
|
interface __declspec(uuid("{A9948091-69FF-4c00-BE93-925D42E0AD39}")) IDsAttributeEditorExt : public IUnknown
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
// *** IDsAttributeEditor methods ***
|
|
STDMETHOD(Initialize)(THIS_ /*IN*/ LPDS_ATTRIBUTE_EDITORINFO) PURE;
|
|
STDMETHOD(GetNewValue)(THIS_ /*OUT*/ PADSVALUE* ppADsValue,
|
|
/*OUT*/ DWORD* dwNumValues) PURE;
|
|
STDMETHOD(CreateModal)(THIS_ ) PURE;
|
|
};
|
|
|
|
#endif //__ATTRINTERFACE_H
|