ReactOS 0.4.17-dev-804-g023d8af
CSnapin.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Management Console
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Retrieve / store information about a snapin
5 * COPYRIGHT: Copyright 2017-2019 Mark Jansen (mark.jansen@reactos.org)
6 * Copyright 2026 Eric Kohl (eric.kohl@reactos.org)
7 */
8
9#include "precomp.h"
10
11// https://web.archive.org/web/20010614160959/msdn.microsoft.com/library/psdk/mmc/mmc12apx02_8jc5.htm
12// https://msdn.microsoft.com/en-us/library/aa814846(v=vs.85).aspx
13
14
15// https://msdn.microsoft.com/en-us/library/aa815510(v=vs.85).aspx
16// MMC initializes a snap-in by calling the Initialize method of the IComponentData object.
17// During initialization, IComponentData should query the console for its IConsoleNamespace and IConsole interfaces using
18// the console's IUnknown interface pointer that is passed into the call to Initialize.
19// The snap-in should then cache the returned pointers and use them for calling IConsoleNamespace and IConsole interface methods.
20
21
23 :m_CacheEntry(CacheEntry)
24{
25 if (displayName)
27 else
29}
30
32{
33}
34
35const CAtlString& CSnapin::Name() const { return m_CacheEntry->Name(); }
38const CAtlString& CSnapin::Version() const { return m_CacheEntry->Version(); }
40
42{
43 return m_CacheEntry;
44}
45
47{
48#if 0
49 CComPtr<IComponentData> spComponentData;
50 HRESULT hr = CoCreateInstance(m_Guid, NULL, CLSCTX_INPROC, IID_PPV_ARG(IComponentData, &spComponentData));
51
52 if (SUCCEEDED(hr))
53 {
54 //CComPtr<IExtendPropertySheet> spPropertySheet;
55 }
56#endif
57}
58
60{
61#if 0
62 CComPtr<IComponentData> spComponentData;
63 HRESULT hr = CoCreateInstance(m_Guid, NULL, CLSCTX_INPROC, IID_PPV_ARG(IComponentData, &spComponentData));
64
65 if (SUCCEEDED(hr))
66 {
67 hr = spComponentData->Initialize(console);
68 // CComponentData::CreatePropertyPages(
69 if (SUCCEEDED(hr))
70 {
71 SCOPEDATAITEM item = { 0 };
72 item.mask = SDI_STR | SDI_IMAGE | SDI_OPENIMAGE;
73
74 hr = spComponentData->GetDisplayInfo(&item);
75
76 printf("%S\n", item.displayname);
77
78
79 CComPtr<IDataObject> spDataObject;
80
81 hr = spComponentData->QueryDataObject(NULL, CCT_SCOPE, &spDataObject);
82
83 if (SUCCEEDED(hr))
84 {
85 //spDataObject->
86 }
87 }
88 }
89#endif
90}
#define IID_PPV_ARG(Itype, ppType)
const CAtlString & Description() const
const CAtlString & Version() const
const CAtlString & Provider() const
const CAtlString & Name() const
void OnAccept(IConsole *console)
Definition: CSnapin.cpp:59
~CSnapin()
Definition: CSnapin.cpp:31
void OnAdd(IConsole *console)
Definition: CSnapin.cpp:46
CAtlString m_DisplayName
Definition: CSnapin.h:27
const CAtlString & Name() const
Definition: CSnapin.cpp:35
const CAtlString & Provider() const
Definition: CSnapin.cpp:36
const CAtlString & DisplayName() const
Definition: CSnapin.cpp:39
CSnapinCacheEntry * m_CacheEntry
Definition: CSnapin.h:26
const CAtlString & Description() const
Definition: CSnapin.cpp:37
CSnapinCacheEntry * GetCacheEntry()
Definition: CSnapin.cpp:41
CSnapin(CSnapinCacheEntry *CacheEntry, PWSTR displayName=NULL)
Definition: CSnapin.cpp:22
const CAtlString & Version() const
Definition: CSnapin.cpp:38
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define printf
Definition: freeldr.h:103
#define SUCCEEDED(hr)
Definition: intsafe.h:50
@ CCT_SCOPE
Definition: mmc.idl:88
char displayName[]
Definition: tftpd.cpp:35
uint16_t * PWSTR
Definition: typedefs.h:56