ReactOS 0.4.17-dev-940-g8bd6e85
CSnapin Class Reference

#include <CSnapin.h>

Collaboration diagram for CSnapin:

Public Member Functions

 CSnapin (CSnapinCacheEntry *CacheEntry, PWSTR displayName=NULL)
 
 ~CSnapin ()
 
const CAtlString & Name () const
 
const CAtlString & Provider () const
 
const CAtlString & Description () const
 
const CAtlString & Version () const
 
const CAtlString & DisplayName () const
 
CSnapinCacheEntry * CacheEntry ()
 
void OnAdd (IConsole *console)
 
void OnAccept (IConsole *console)
 
VOID SaveNode (MscFile *mscFile, IXMLDOMElement *pParentNode)
 

Public Attributes

CAtlList< CSnapin * > m_SubNodes
 

Private Member Functions

void RemoveAllSubnodes ()
 

Private Attributes

CSnapinCacheEntry * m_CacheEntry
 
CAtlString m_DisplayName
 

Detailed Description

Definition at line 23 of file CSnapin.h.

Constructor & Destructor Documentation

◆ CSnapin()

CSnapin::CSnapin ( CSnapinCacheEntry *  CacheEntry,
PWSTR  displayName = NULL 
)

Definition at line 22 of file CSnapin.cpp.

24{
25 if (displayName)
27 else
29}
const CAtlString & Name() const
CAtlString m_DisplayName
Definition: CSnapin.h:27
CSnapinCacheEntry * CacheEntry()
Definition: CSnapin.cpp:42
CSnapinCacheEntry * m_CacheEntry
Definition: CSnapin.h:26
char displayName[]
Definition: tftpd.cpp:35

◆ ~CSnapin()

CSnapin::~CSnapin ( )

Definition at line 31 of file CSnapin.cpp.

32{
34}
void RemoveAllSubnodes()
Definition: CSnapin.cpp:48

Member Function Documentation

◆ CacheEntry()

CSnapinCacheEntry * CSnapin::CacheEntry ( )

Definition at line 42 of file CSnapin.cpp.

43{
44 return m_CacheEntry;
45}

Referenced by SaveNode().

◆ Description()

const CAtlString & CSnapin::Description ( ) const

Definition at line 38 of file CSnapin.cpp.

38{ return m_CacheEntry->Description(); }
const CAtlString & Description() const

◆ DisplayName()

const CAtlString & CSnapin::DisplayName ( ) const

Definition at line 40 of file CSnapin.cpp.

40{ return m_DisplayName; }

Referenced by CMainWnd::OnWindowsNew().

◆ Name()

const CAtlString & CSnapin::Name ( ) const

Definition at line 36 of file CSnapin.cpp.

36{ return m_CacheEntry->Name(); }

◆ OnAccept()

void CSnapin::OnAccept ( IConsole *  console)

Definition at line 76 of file CSnapin.cpp.

77{
78#if 0
79 CComPtr<IComponentData> spComponentData;
80 HRESULT hr = CoCreateInstance(m_Guid, NULL, CLSCTX_INPROC, IID_PPV_ARG(IComponentData, &spComponentData));
81
82 if (SUCCEEDED(hr))
83 {
84 hr = spComponentData->Initialize(console);
85 // CComponentData::CreatePropertyPages(
86 if (SUCCEEDED(hr))
87 {
88 SCOPEDATAITEM item = { 0 };
89 item.mask = SDI_STR | SDI_IMAGE | SDI_OPENIMAGE;
90
91 hr = spComponentData->GetDisplayInfo(&item);
92
93 printf("%S\n", item.displayname);
94
95
96 CComPtr<IDataObject> spDataObject;
97
98 hr = spComponentData->QueryDataObject(NULL, CCT_SCOPE, &spDataObject);
99
100 if (SUCCEEDED(hr))
101 {
102 //spDataObject->
103 }
104 }
105 }
106#endif
107}
#define IID_PPV_ARG(Itype, ppType)
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

◆ OnAdd()

void CSnapin::OnAdd ( IConsole *  console)

Definition at line 62 of file CSnapin.cpp.

63{
64#if 0
65 CComPtr<IComponentData> spComponentData;
66 HRESULT hr = CoCreateInstance(m_Guid, NULL, CLSCTX_INPROC, IID_PPV_ARG(IComponentData, &spComponentData));
67
68 if (SUCCEEDED(hr))
69 {
70 //CComPtr<IExtendPropertySheet> spPropertySheet;
71 }
72#endif
73}

◆ Provider()

const CAtlString & CSnapin::Provider ( ) const

Definition at line 37 of file CSnapin.cpp.

37{ return m_CacheEntry->Provider(); }
const CAtlString & Provider() const

◆ RemoveAllSubnodes()

void CSnapin::RemoveAllSubnodes ( )
private

Definition at line 48 of file CSnapin.cpp.

49{
50 CSnapin *SubNode;
51 POSITION pos = m_SubNodes.GetHeadPosition();
52 while (pos != NULL)
53 {
54 SubNode = (CSnapin*)m_SubNodes.GetNext(pos);
55 if (SubNode)
56 delete SubNode;
57 }
58 m_SubNodes.RemoveAll();
59}
CAtlList< CSnapin * > m_SubNodes
Definition: CSnapin.h:42

Referenced by ~CSnapin().

◆ SaveNode()

VOID CSnapin::SaveNode ( MscFile *  mscFile,
IXMLDOMElement *  pParentNode 
)

Definition at line 110 of file CSnapin.cpp.

111{
112 IXMLDOMElement *pNodeElement = NULL;
113 IXMLDOMElement *pNodesElement = NULL;
114 IXMLDOMElement *pStringElement = NULL;
115 IXMLDOMElement *pBitmapsElement = NULL;
116 IXMLDOMElement *pComponentDatasElement = NULL;
117 IXMLDOMElement *pComponentDataElement = NULL;
118 IXMLDOMElement *pComponentsElement = NULL;
120 CSnapin *SubNode;
121 HRESULT hr = S_OK;
122
123 /* <Node ID="3" ImageIdx="0" CLSID="{C96401CC-0E17-11D3-885B-00C04F72C717}" Preload="true"> */
124 CHK_HR(mscFile->CreateAndAddElementNode(L"Node", pParentNode, &pNodeElement));
125 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ID", L"0", pNodeElement)); /* FIXME */
126 CHK_HR(mscFile->CreateAndAddAttributeNode(L"ImageIdx", L"0", pNodeElement)); /* FIXME */
127 CHK_HR(mscFile->CreateAndAddAttributeNode(L"CLSID", CacheEntry()->GuidString().GetString(), pNodeElement));
128 CHK_HR(mscFile->CreateAndAddAttributeNode(L"Preload", L"true", pNodeElement)); /* FIXME */
129
130 /* <Nodes> */
131 CHK_HR(mscFile->CreateAndAddElementNode(L"Nodes", pNodeElement, &pNodesElement));
132 pos = m_SubNodes.GetHeadPosition();
133 while (pos != NULL)
134 {
135 SubNode = (CSnapin*)m_SubNodes.GetNext(pos);
136 if (SubNode)
137 SubNode->SaveNode(mscFile, pNodesElement);
138 }
139 SAFE_RELEASE(pNodesElement); /* </Nodes> */
140
141 /* <String Name="Name" ID="2"/> */
142 CHK_HR(mscFile->CreateAndAddElementNode(L"String", pNodeElement, &pStringElement));
143 CHK_HR(mscFile->CreateAndAddAttributeNode(L"Name", m_DisplayName.GetString(), pStringElement)); /* FIXME */
144 SAFE_RELEASE(pStringElement); /* </String> */
145
146 /* <Bitmaps> */
147 CHK_HR(mscFile->CreateAndAddElementNode(L"Bitmaps", pNodeElement, &pBitmapsElement));
148/*
149 <BinaryData Name="Small" BinaryRefIndex="3"/>
150 <BinaryData Name="Large" BinaryRefIndex="4"/>
151*/
152 SAFE_RELEASE(pBitmapsElement); /* </Bitmaps> */
153
154 /* <ComponentDatas> */
155 CHK_HR(mscFile->CreateAndAddElementNode(L"ComponentDatas", pNodeElement, &pComponentDatasElement));
156 /* <ComponentData> */
157 CHK_HR(mscFile->CreateAndAddElementNode(L"ComponentData", pComponentDatasElement, &pComponentDataElement));
158/*
159 <GUID Name="Snapin">{C96401CC-0E17-11D3-885B-00C04F72C717}</GUID>
160 <Stream BinaryRefIndex="5"/>
161*/
162 SAFE_RELEASE(pComponentDataElement); /* </ComponentData> */
163 SAFE_RELEASE(pComponentDatasElement); /* </ComponentDatas> */
164
165 /* <Components /> */
166 CHK_HR(mscFile->CreateAndAddElementNode(L"Components", pNodeElement, &pComponentsElement));
167 SAFE_RELEASE(pComponentsElement); /* </Components> */
168
169CleanUp:
170 SAFE_RELEASE(pNodeElement); /* </Node> */
171}
static HRESULT GetString(ASSOCSTR Str, UINT Flags, LPCWSTR pszAssoc, LPCWSTR pszExtra, PWSTR Out, HKEY hProgId=NULL)
PXSTR GetString() noexcept
Definition: atlsimpstr.h:367
VOID SaveNode(MscFile *mscFile, IXMLDOMElement *pParentNode)
Definition: CSnapin.cpp:110
HRESULT CreateAndAddAttributeNode(PCWSTR wszName, PCWSTR wszValue, IXMLDOMElement *pParent)
Definition: mscfile.cpp:135
HRESULT CreateAndAddElementNode(PCWSTR wszName, IXMLDOMNode *pParent, IXMLDOMElement **ppElement=NULL)
Definition: mscfile.cpp:199
#define L(x)
Definition: resources.c:13
#define S_OK
Definition: intsafe.h:52
static PWSTR GuidString
Definition: apphelp.c:93
#define SAFE_RELEASE(p)
Definition: mscfile.h:15
#define CHK_HR(stmt)
Definition: mscfile.h:9

Referenced by CMainWnd::SaveMscFile(), and SaveNode().

◆ Version()

const CAtlString & CSnapin::Version ( ) const

Definition at line 39 of file CSnapin.cpp.

39{ return m_CacheEntry->Version(); }
const CAtlString & Version() const

Member Data Documentation

◆ m_CacheEntry

CSnapinCacheEntry* CSnapin::m_CacheEntry
private

Definition at line 26 of file CSnapin.h.

Referenced by CacheEntry(), CSnapin(), Description(), Name(), Provider(), and Version().

◆ m_DisplayName

CAtlString CSnapin::m_DisplayName
private

Definition at line 27 of file CSnapin.h.

Referenced by CSnapin(), DisplayName(), and SaveNode().

◆ m_SubNodes

CAtlList<CSnapin*> CSnapin::m_SubNodes

The documentation for this class was generated from the following files: