ReactOS 0.4.17-dev-357-ga8f14ff
CMemPropertyBag Class Reference
Inheritance diagram for CMemPropertyBag:
Collaboration diagram for CMemPropertyBag:

Public Member Functions

 CMemPropertyBag (DWORD dwMode)
 
STDMETHODIMP Read (_In_z_ LPCWSTR pszPropName, _Inout_ VARIANT *pvari, _Inout_opt_ IErrorLog *pErrorLog) override
 
STDMETHODIMP Write (_In_z_ LPCWSTR pszPropName, _In_ VARIANT *pvari) override
 
- Public Member Functions inherited from CBasePropertyBag
 CBasePropertyBag (DWORD dwMode)
 
virtual ~CBasePropertyBag ()
 
STDMETHODIMP QueryInterface (REFIID riid, void **ppvObject) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
- Public Member Functions inherited from IPropertyBag
HRESULT Read ([in] LPCOLESTR pszPropName, [in, out] VARIANT *pVar, [in] IErrorLog *pErrorLog)
 
HRESULT RemoteRead ([in] LPCOLESTR pszPropName, [out] VARIANT *pVar, [in] IErrorLog *pErrorLog, [in] DWORD varType, [in] IUnknown *pUnkObj)
 
HRESULT Write ([in] LPCOLESTR pszPropName, [in] VARIANT *pVar)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Protected Attributes

ATL::CSimpleMap< ATL::CStringW, ATL::CComVariant, CPropMapEqualm_PropMap
 
- Protected Attributes inherited from CBasePropertyBag
LONG m_cRefs
 
DWORD m_dwMode
 

Additional Inherited Members

- Public Types inherited from IPropertyBag
typedef IPropertyBagLPPROPERTYBAG
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 

Detailed Description

Definition at line 142 of file propbag.cpp.

Constructor & Destructor Documentation

◆ CMemPropertyBag()

CMemPropertyBag::CMemPropertyBag ( DWORD  dwMode)
inline

Definition at line 148 of file propbag.cpp.

148: CBasePropertyBag(dwMode) { }

Member Function Documentation

◆ Read()

STDMETHODIMP CMemPropertyBag::Read ( _In_z_ LPCWSTR  pszPropName,
_Inout_ VARIANT pvari,
_Inout_opt_ IErrorLog pErrorLog 
)
override

Definition at line 156 of file propbag.cpp.

160{
161 UNREFERENCED_PARAMETER(pErrorLog);
162
163 TRACE("%p: %s %p %p\n", this, debugstr_w(pszPropName), pvari, pErrorLog);
164
165 VARTYPE vt = V_VT(pvari);
166
167 ::VariantInit(pvari);
168
170 {
172 {
173 ERR("%p: 0x%X\n", this, m_dwMode);
174 return E_ACCESSDENIED;
175 }
176 }
177
178 if (!pszPropName || !pvari)
179 {
180 ERR("%p: %s %p %p\n", this, debugstr_w(pszPropName), pvari, pErrorLog);
181 return E_INVALIDARG;
182 }
183
184 INT iItem = m_PropMap.FindKey(pszPropName);
185 if (iItem == -1)
186 {
187 ERR("%p: %s %p %p\n", this, debugstr_w(pszPropName), pvari, pErrorLog);
188 return E_FAIL;
189 }
190
191 HRESULT hr = ::VariantCopy(pvari, &m_PropMap.GetValueAt(iItem));
192 if (FAILED(hr))
193 {
194 ERR("%p: 0x%08X %p\n", this, hr, pvari);
195 return hr;
196 }
197
198 hr = ::VariantChangeTypeForRead(pvari, vt);
199 if (FAILED(hr))
200 {
201 ERR("%p: 0x%08X %p\n", this, hr, pvari);
202 return hr;
203 }
204
205 return hr;
206}
#define ERR(fmt,...)
Definition: precomp.h:57
ATL::CSimpleMap< ATL::CStringW, ATL::CComVariant, CPropMapEqual > m_PropMap
Definition: propbag.cpp:145
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
unsigned short VARTYPE
Definition: compat.h:2254
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
Definition: suminfo.c:91
EXTERN_C ULONG WINAPI GetProcessOsVersion(void)
Definition: utils.cpp:1257
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
#define V_VT(A)
Definition: oleauto.h:211
#define MODE_CAN_READ(dwMode)
Definition: propbag.cpp:24
#define _WIN32_WINNT_VISTA
Definition: sdkddkver.h:25
#define TRACE(s)
Definition: solgame.cpp:4
int32_t INT
Definition: typedefs.h:58
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:568
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
Definition: variant.c:748
#define E_ACCESSDENIED
Definition: winerror.h:4116

◆ Write()

STDMETHODIMP CMemPropertyBag::Write ( _In_z_ LPCWSTR  pszPropName,
_In_ VARIANT pvari 
)
override

Definition at line 209 of file propbag.cpp.

212{
213 TRACE("%p: %s %p\n", this, debugstr_w(pszPropName), pvari);
214
216 {
218 {
219 ERR("%p: 0x%X\n", this, m_dwMode);
220 return E_ACCESSDENIED;
221 }
222 }
223
224 if (!pszPropName || !pvari)
225 {
226 ERR("%p: %s %p\n", this, debugstr_w(pszPropName), pvari);
227 return E_INVALIDARG;
228 }
229
230 ATL::CComVariant vari;
231 HRESULT hr = vari.Copy(pvari);
232 if (FAILED(hr))
233 {
234 ERR("%p: %s %p: 0x%08X\n", this, debugstr_w(pszPropName), pvari, hr);
235 return hr;
236 }
237
238 if (!m_PropMap.SetAt(pszPropName, vari))
239 {
240 ERR("%p: %s %p\n", this, debugstr_w(pszPropName), pvari);
241 return E_FAIL;
242 }
243
244 return hr;
245}
HRESULT Copy(_In_ const VARIANT *src)
Definition: atlcomcli.h:584
#define MODE_CAN_WRITE(dwMode)
Definition: propbag.cpp:26

Member Data Documentation

◆ m_PropMap

ATL::CSimpleMap<ATL::CStringW, ATL::CComVariant, CPropMapEqual> CMemPropertyBag::m_PropMap
protected

Definition at line 145 of file propbag.cpp.

Referenced by Read(), and Write().


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