#ifndef _IDTExtensibility2_H
#define _IDTExtensibility2_H
typedef enum ext_ConnectMode {
ext_cm_AfterStartup = 0,
ext_cm_Startup = 1,
ext_cm_External = 2,
ext_cm_CommandLine = 3
} ext_ConnectMode;
typedef enum ext_DisconnectMode {
ext_dm_HostShutdown = 0,
ext_dm_UserClosed = 1
} ext_DisconnectMode;
typedef struct _IDTExtensibility2 _IDTExtensibility2;
typedef struct _IDTExtensibility2Vtbl {
HRESULT (NDAPI *QueryInterface)(
_IDTExtensibility2 *This,
REFIID riid,
void **ppvObject
);
ULONG (NDAPI *AddRef)(
_IDTExtensibility2 *This
);
ULONG (NDAPI *Release)(
_IDTExtensibility2 *This
);
HRESULT (NDAPI *GetTypeInfoCount)(
_IDTExtensibility2 *This,
UINT *pctinfo
);
HRESULT (NDAPI *GetTypeInfo)(
_IDTExtensibility2 *This,
UINT iTInfo,
LCID lcid,
ITypeInfo **ppTInfo
);
HRESULT (NDAPI *GetIDsOfNames)(
_IDTExtensibility2 *This,
REFIID riid,
LPOLESTR *rgszNames,
UINT cNames,
LCID lcid,
DISPID *rgDispId
);
HRESULT (NDAPI *Invoke)(
_IDTExtensibility2 *This,
DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS *pDispParams,
VARIANT *pVarResult,
EXCEPINFO *pExcepInfo,
UINT *puArgErr
);
HRESULT (NDAPI *OnConnection)(
_IDTExtensibility2 *This,
IDispatch *Application,
ext_ConnectMode ConnectMode,
IDispatch *AddInInst,
SAFEARRAY **custom
);
HRESULT (NDAPI *OnDisconnection)(
_IDTExtensibility2 *This,
ext_DisconnectMode RemoveMode,
SAFEARRAY **custom
);
HRESULT (NDAPI *OnAddInsUpdate)(
_IDTExtensibility2 *This,
SAFEARRAY **custom
);
HRESULT (NDAPI *OnStartupComplete)(
_IDTExtensibility2 *This,
SAFEARRAY **custom
);
HRESULT (NDAPI *OnBeginShutdown)(
_IDTExtensibility2 *This,
SAFEARRAY **custom
);
} _IDTExtensibility2Vtbl;
typedef struct _IDTExtensibility2
{
const struct _IDTExtensibility2Vtbl *lpVtbl;
} _IDTExtensibility2;
const IID*
_IDTExtensibility2_GetIID(
VOID
);
// macros
#define IDTExtensibility2_QueryInterface(This, riid, ppv) \
((((This)->lpVtbl)->QueryInterface)((This), (riid), (ppv)))
#define IDTExtensibility2_AddRef(This) \
((((This)->lpVtbl)->AddRef)(This))
#define IDTExtensibility2_Release(This) \
((((This)->lpVtbl)->Release)(This))
#define IDTExtensibility2_GetTypeInfoCount(This, pctinfo) \
((((This)->lpVtbl)->GetTypeInfoCount)((This), (pctinfo)))
#define IDTExtensibility2_GetTypeInfo(This, iTInfo, lcid, ppTInfo) \
((((This)->lpVtbl)->GetTypeInfo)((This), (iTInfo), (lcid), (pctinfo)))
#define IDTExtensibility2_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) \
((((This)->lpVtbl)->GetIDsOfNames)((This), (riid), (rgszNames), (cNames), (lcid), (rgDispId)))
#define IDTExtensibility2_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) \
((((This)->lpVtbl)->Invoke)((This), (riid), (lcid), (wFlags), (pDispParams), (pVarResult), (pExcepInfo), (puArgErr)))
#define IDTExtensibility2_OnConnection(This, Application, ConnectMode, AddInInst, custom) \
((((This)->lpVtbl)->OnConnection)((This), (Application), (ConnectMode), (AddInInst), (custom)))
#define IDTExtensibility2_OnDisconnection(This, RemoveMode, custom) \
((((This)->lpVtbl)->OnDisconnection)((This), (RemoveMode), (custom)))
#define IDTExtensibility2_OnAddInsUpdate(This, custom) \
((((This)->lpVtbl)->OnAddInsUpdate)((This), (custom)))
#define IDTExtensibility2_OnStartupComplete(This, custom) \
((((This)->lpVtbl)->OnStartupComplete)((This), (custom)))
#define IDTExtensibility2_OnBeginShutdown(This, custom) \
((((This)->lpVtbl)->OnBeginShutdown)((This), (custom)))
#endif // _IDTExtensibility2_H