Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

129 lines
4.4 KiB

//
// Global variables
//
extern LONG g_cRefThisDll;
extern HINSTANCE g_hInstance;
extern HINSTANCE g_hUIInstance;
extern GUID g_guidSnapinExt;
extern GUID g_guidClientExt;
extern CRITICAL_SECTION g_LayoutCriticalSection;
extern CRITICAL_SECTION g_ContextMenuCriticalSection;
// Constants/macros
#define IEAK_SUBDIR TEXT("MICROSOFT\\IEAK")
#define INS_NAME TEXT("install.ins")
#define HELP_FILENAME L"ieakmmc.chm"
// Snapin extension guid
// {FC715823-C5FB-11D1-9EEF-00A0C90347FF}
DEFINE_GUID(CLSID_IEAKSnapinExt,0xFC715823,0xC5FB,0x11D1,0x9E,0xEF,0x00,0xA0,0xC9,0x03,0x47,0xFF);
// {D524927D-6C08-46bf-86AF-391534D779D3}
DEFINE_GUID(CLSID_IEAKRSoPSnapinExt,0xd524927d,0x6c08,0x46bf,0x86,0xaf,0x39,0x15,0x34,0xd7,0x79,0xd3);
// Client extension guid
// {A2E30F80-D7DE-11d2-BBDE-00C04F86AE3B}
DEFINE_GUID(CLSID_IEAKClientExt, 0xA2E30F80, 0xD7DE, 0x11d2, 0xBB, 0xDE, 0x00, 0xC0, 0x4F, 0x86, 0xAE, 0x3B);
//
// Functions to create class factories
//
HRESULT CreateComponentDataClassFactory (REFCLSID rclsid, REFIID riid, LPVOID* ppv);
class CSnapIn;
#include "cookie.h"
//
// SnapIn class
//
class CSnapIn:
public IComponent,
public IExtendPropertySheet,
public IExtendContextMenu
{
protected:
ULONG m_cRef;
LPCONSOLE m_pConsole; // Console's IFrame interface
CComponentData *m_pcd;
LPRESULTDATA m_pResult; // Result pane's interface
LPHEADERCTRL m_pHeader; // Result pane's header control interface
LPIMAGELIST m_pImageResult; // Result pane's image list interface
LPDISPLAYHELP m_pDisplayHelp; // IDisplayHelp interface
LPCONSOLEVERB m_pConsoleVerb; // pointer the console verb
TCHAR m_szColumn1[32]; // Text for column 1
TCHAR m_szColumn2[32]; // Text for column 2
INT m_nColumnSize1; // Size of column 1
INT m_nColumnSize2; // Size of column 2
LONG m_lViewMode; // View mode
TCHAR m_szInsFile[MAX_PATH]; // current path to ins file in current GPO
LPIEAKMMCCOOKIE m_lpCookieList; // list of cookies we allocated
BOOL m_fOneTimeApply; // flag on whether to apply GPO once or always
static unsigned int m_cfNodeType;
public:
CSnapIn(CComponentData *pComponent);
~CSnapIn();
//
// RSoP implementation methods
//
BOOL IsRSoP() {return m_pcd->IsRSoP();}
BSTR GetRSoPNamespace() {return m_pcd->GetRSoPNamespace();}
STDMETHODIMP SignalPolicyChanged(BOOL bMachine, BOOL bAdd, GUID *pGuidExtension,
GUID *pGuidSnapin);
STDMETHODIMP_(LPCTSTR) GetInsFile();
STDMETHODIMP_(CComponentData *) GetCompData() {return m_pcd;}
//
// IUnknown methods
//
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
//
// Implemented IComponent methods
//
STDMETHODIMP Initialize(LPCONSOLE lpConsole);
STDMETHODIMP Destroy(MMC_COOKIE cookie);
STDMETHODIMP Notify(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
STDMETHODIMP QueryDataObject(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT *ppDataObject);
STDMETHODIMP GetDisplayInfo(LPRESULTDATAITEM pResult);
STDMETHODIMP GetResultViewType(MMC_COOKIE cookie, LPOLESTR *ppViewType, long *pViewOptions);
STDMETHODIMP CompareObjects(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB);
//
// Implemented IExtendPropertySheet methods
//
STDMETHODIMP CreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider,
LONG_PTR handle, LPDATAOBJECT lpDataObject);
STDMETHODIMP QueryPagesFor(LPDATAOBJECT lpDataObject);
//
// Implemented IExtendContextMenu methods
//
STDMETHODIMP AddMenuItems(LPDATAOBJECT lpDataObject,
LPCONTEXTMENUCALLBACK piCallback, long *pInsertionAllowed);
STDMETHODIMP Command(long lCommandID, LPDATAOBJECT lpDataObject);
private:
HRESULT AddPrecedencePropPage(LPPROPERTYSHEETCALLBACK lpProvider,
LPPROPSHEETCOOKIE lpPropSheetCookie,
LPCTSTR pszTitle, long nPageID);
};