mirror of https://github.com/tongzx/nt5src
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.
272 lines
7.5 KiB
272 lines
7.5 KiB
//+--------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1999.
|
|
//
|
|
// File: dsadmin.h
|
|
//
|
|
// Contents: DS Admin Object Creation public header
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
//
|
|
// CoClass for the Object creation dialog object
|
|
//
|
|
// {E301A009-F901-11d2-82B9-00C04F68928B}
|
|
DEFINE_GUID(CLSID_DsAdminCreateObj,
|
|
0xe301a009, 0xf901, 0x11d2, 0x82, 0xb9, 0x0, 0xc0, 0x4f, 0x68, 0x92, 0x8b);
|
|
|
|
|
|
//
|
|
// Interface GUIDs
|
|
//
|
|
|
|
|
|
// {53554A38-F902-11d2-82B9-00C04F68928B}
|
|
DEFINE_GUID(IID_IDsAdminCreateObj,
|
|
0x53554a38, 0xf902, 0x11d2, 0x82, 0xb9, 0x0, 0xc0, 0x4f, 0x68, 0x92, 0x8b);
|
|
|
|
// {F2573587-E6FC-11d2-82AF-00C04F68928B}
|
|
DEFINE_GUID(IID_IDsAdminNewObj,
|
|
0xf2573587, 0xe6fc, 0x11d2, 0x82, 0xaf, 0x0, 0xc0, 0x4f, 0x68, 0x92, 0x8b);
|
|
|
|
// {BE2B487E-F904-11d2-82B9-00C04F68928B}
|
|
DEFINE_GUID(IID_IDsAdminNewObjPrimarySite,
|
|
0xbe2b487e, 0xf904, 0x11d2, 0x82, 0xb9, 0x0, 0xc0, 0x4f, 0x68, 0x92, 0x8b);
|
|
|
|
|
|
// {6088EAE2-E7BF-11d2-82AF-00C04F68928B}
|
|
DEFINE_GUID(IID_IDsAdminNewObjExt,
|
|
0x6088eae2, 0xe7bf, 0x11d2, 0x82, 0xaf, 0x0, 0xc0, 0x4f, 0x68, 0x92, 0x8b);
|
|
|
|
|
|
// {E4A2B8B3-5A18-11d2-97C1-00A0C9A06D2D}
|
|
DEFINE_GUID(IID_IDsAdminNotifyHandler,
|
|
0xe4a2b8b3, 0x5a18, 0x11d2, 0x97, 0xc1, 0x0, 0xa0, 0xc9, 0xa0, 0x6d, 0x2d);
|
|
|
|
|
|
#ifndef _DSADMIN_H
|
|
#define _DSADMIN_H
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsAdminCreateObj
|
|
//
|
|
// Implemented by the object (implemented by the system) CLSID_DsAdminCreateObj
|
|
//
|
|
// Used by: any client needing to invoke the creation UI
|
|
//
|
|
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsAdminCreateObj
|
|
|
|
DECLARE_INTERFACE_(IDsAdminCreateObj, IUnknown)
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
// *** IDsAdminCreateObj methods ***
|
|
STDMETHOD(Initialize)(THIS_ /*IN*/ IADsContainer* pADsContainerObj,
|
|
/*IN*/ IADs* pADsCopySource,
|
|
/*IN*/ LPCWSTR lpszClassName) PURE;
|
|
STDMETHOD(CreateModal)(THIS_ /*IN*/ HWND hwndParent,
|
|
/*OUT*/ IADs** ppADsObj) PURE;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsAdminNewObj
|
|
//
|
|
// Implemented by: DS Admin
|
|
//
|
|
// Used by: creation extension in proc server (both primary and regular)
|
|
//
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsAdminNewObj
|
|
|
|
DECLARE_INTERFACE_(IDsAdminNewObj, IUnknown)
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
// *** IDsAdminNewObj methods ***
|
|
STDMETHOD(SetButtons)(THIS_ /*IN*/ ULONG nCurrIndex, /*IN*/ BOOL bValid) PURE;
|
|
STDMETHOD(GetPageCounts)(THIS_ /*OUT*/ LONG* pnTotal,
|
|
/*OUT*/ LONG* pnStartIndex) PURE;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsAdminNewObjPrimarySite
|
|
//
|
|
// Implemented by: DS Admin
|
|
//
|
|
// Used by: creation extension in proc server (primary only)
|
|
//
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsAdminNewObjPrimarySite
|
|
|
|
DECLARE_INTERFACE_(IDsAdminNewObjPrimarySite, IUnknown)
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
|
|
// *** IDsAdminNewObjPrimarySite methods ***
|
|
STDMETHOD(CreateNew)(THIS_ /*IN*/ LPCWSTR pszName) PURE;
|
|
STDMETHOD(Commit)(THIS_ ) PURE;
|
|
};
|
|
|
|
|
|
|
|
//
|
|
// struct passed to IDsAdminNewObjExt::Initialize()
|
|
//
|
|
// it contains information regarding UI look
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwSize; // size of struct, for versioning
|
|
HICON hObjClassIcon; // class icon for the object to be created
|
|
LPWSTR lpszWizTitle; // title of the wizard
|
|
LPWSTR lpszContDisplayName; // container display name (canonical name)
|
|
} DSA_NEWOBJ_DISPINFO, * LPDSA_NEWOBJ_DISPINFO;
|
|
|
|
|
|
|
|
|
|
//
|
|
// context flags passed to IDsAdminNewObjExt::OnError() and to IDsAdminNewObjExt::WriteData()
|
|
//
|
|
|
|
#define DSA_NEWOBJ_CTX_PRECOMMIT 0x00000001 // before SetInfo()
|
|
#define DSA_NEWOBJ_CTX_COMMIT 0x00000002 // SetInfo(), commit phase
|
|
#define DSA_NEWOBJ_CTX_POSTCOMMIT 0x00000003 // after SetInfo()
|
|
#define DSA_NEWOBJ_CTX_CLEANUP 0x00000004 // on post commit fail
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsAdminNewObjExt
|
|
//
|
|
// Implemented by: creation extension in proc server (both primary and regular)
|
|
//
|
|
// Used by: DS Admin
|
|
//
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsAdminNewObjExt
|
|
|
|
DECLARE_INTERFACE_(IDsAdminNewObjExt, IUnknown)
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
|
|
// *** IDsAdminNewObjExt methods ***
|
|
STDMETHOD(Initialize)(THIS_ /*IN*/ IADsContainer* pADsContainerObj,
|
|
/*IN*/ IADs* pADsCopySource,
|
|
/*IN*/ LPCWSTR lpszClassName,
|
|
/*IN*/ IDsAdminNewObj* pDsAdminNewObj,
|
|
/*IN*/ LPDSA_NEWOBJ_DISPINFO pDispInfo) PURE;
|
|
|
|
STDMETHOD(AddPages)(THIS_ /*IN*/ LPFNADDPROPSHEETPAGE lpfnAddPage,
|
|
/*IN*/ LPARAM lParam) PURE;
|
|
|
|
STDMETHOD(SetObject)(THIS_ /*IN*/ IADs* pADsObj) PURE;
|
|
|
|
STDMETHOD(WriteData)(THIS_ /*IN*/ HWND hWnd,
|
|
/*IN*/ ULONG uContext) PURE;
|
|
|
|
STDMETHOD(OnError)(THIS_ /*IN*/ HWND hWnd,
|
|
/*IN*/ HRESULT hr,
|
|
/*IN*/ ULONG uContext) PURE;
|
|
|
|
STDMETHOD(GetSummaryInfo)(THIS_ /*OUT*/BSTR* pBstrText) PURE;
|
|
};
|
|
|
|
|
|
//
|
|
// Notification opcodes for IDsAdminNotifyHandler
|
|
//
|
|
|
|
#define DSA_NOTIFY_DEL 0x00000001 // delete
|
|
#define DSA_NOTIFY_REN 0x00000002 // rename
|
|
#define DSA_NOTIFY_MOV 0x00000004 // move
|
|
#define DSA_NOTIFY_PROP 0x00000008 // property change
|
|
|
|
#define DSA_NOTIFY_ALL (DSA_NOTIFY_DEL|DSA_NOTIFY_REN|DSA_NOTIFY_MOV|DSA_NOTIFY_PROP)
|
|
|
|
//
|
|
// TODO: add explaination
|
|
//
|
|
// flags to handle additional data
|
|
//
|
|
|
|
#define DSA_NOTIFY_FLAG_ADDITIONAL_DATA 0x00000002 //process additional extension data?
|
|
#define DSA_NOTIFY_FLAG_FORCE_ADDITIONAL_DATA 0x00000001 //operation forced
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
//
|
|
// Interface: IDsAdminNotifyHandler
|
|
//
|
|
// Implemented by: notification handler in proc server
|
|
//
|
|
// Used by: DS Admin
|
|
//
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDsAdminNotifyHandler
|
|
|
|
|
|
DECLARE_INTERFACE_(IDsAdminNotifyHandler, IUnknown)
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
// IDsAdminNotifyHandler methods
|
|
STDMETHOD(Initialize)(THIS_ /*IN*/ IDataObject* pExtraInfo,
|
|
/*OUT*/ ULONG* puEventFlags) PURE;
|
|
STDMETHOD(Begin)(THIS_ /*IN*/ ULONG uEvent,
|
|
/*IN*/ IDataObject* pArg1,
|
|
/*IN*/ IDataObject* pArg2,
|
|
/*OUT*/ ULONG* puFlags,
|
|
/*OUT*/ BSTR* pBstr) PURE;
|
|
|
|
STDMETHOD(Notify)(THIS_ /*IN*/ ULONG nItem, /*IN*/ ULONG uFlags) PURE;
|
|
|
|
STDMETHOD(End)(THIS_) PURE;
|
|
};
|
|
|
|
|
|
|
|
#endif // _DSADMIN_H
|
|
|