WindowsXP/Source/XPSP1/NT/public/sdk/inc/dsadmin.h
2024-08-03 16:30:48 +02:00

273 lines
7.5 KiB
C

//+--------------------------------------------------------------------------
//
// 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