ReactOS 0.4.17-dev-243-g1369312
CRegistryEnumBase Class Referenceabstract
Inheritance diagram for CRegistryEnumBase:
Collaboration diagram for CRegistryEnumBase:

Public Member Functions

virtual ~CRegistryEnumBase ()
 
HRESULT Init (HKEY hKey, CRegistrySource *pSource)
 
STDMETHODIMP QueryInterface (REFIID riid, void **ppvObject) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
STDMETHODIMP Next (ULONG celt, LPWSTR *rgelt, ULONG *pceltFetched) override
 
STDMETHODIMP Skip (ULONG celt) override
 
STDMETHODIMP Reset () override
 
STDMETHODIMP Clone (IEnumString **ppenum) override
 
- Public Member Functions inherited from IEnumString
HRESULT Next ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] LPOLESTR *rgelt, [out] ULONG *pceltFetched)
 
HRESULT RemoteNext ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] LPOLESTR *rgelt, [out] ULONG *pceltFetched)
 
HRESULT Skip ([in] ULONG celt)
 
HRESULT Reset ()
 
HRESULT Clone ([out] IEnumString **ppenum)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Protected Member Functions

BOOL _Next (PWSTR *ppwsz)
 
virtual BOOL _RegNext (DWORD dwIndex)=0
 
virtual DWORD _MaxLen ()=0
 

Protected Attributes

LONG m_cRefs = 1
 
DWORD m_dwIndex = 0
 
CRegistrySourcem_pSource = NULL
 
HKEY m_hKey = NULL
 
PWSTR m_pszName = NULL
 
WCHAR m_szBuf [64] = {}
 
DWORD m_cchNameMax = 0
 

Additional Inherited Members

- Public Types inherited from IEnumString
typedef IEnumStringLPENUMSTRING
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 

Detailed Description

Definition at line 36 of file querysrc.cpp.

Constructor & Destructor Documentation

◆ ~CRegistryEnumBase()

CRegistryEnumBase::~CRegistryEnumBase ( )
virtual

Definition at line 124 of file querysrc.cpp.

125{
126 if (m_pszName && m_pszName != m_szBuf)
128 if (m_pSource)
129 m_pSource->Release();
130}
WCHAR m_szBuf[64]
Definition: querysrc.cpp:44
CRegistrySource * m_pSource
Definition: querysrc.cpp:41
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594

Member Function Documentation

◆ _MaxLen()

virtual DWORD CRegistryEnumBase::_MaxLen ( )
protectedpure virtual

Implemented in CRegistryEnumValues, and CRegistryEnumKeys.

Referenced by Init().

◆ _Next()

BOOL CRegistryEnumBase::_Next ( PWSTR ppwsz)
protected

Definition at line 150 of file querysrc.cpp.

151{
152 return _RegNext(m_dwIndex) && SUCCEEDED(SHStrDupW(m_pszName, ppwsz));
153}
virtual BOOL _RegNext(DWORD dwIndex)=0
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
Definition: string.c:2148
#define SUCCEEDED(hr)
Definition: intsafe.h:50

Referenced by Next().

◆ _RegNext()

virtual BOOL CRegistryEnumBase::_RegNext ( DWORD  dwIndex)
protectedpure virtual

Implemented in CRegistryEnumValues, and CRegistryEnumKeys.

Referenced by _Next().

◆ Clone()

STDMETHODIMP CRegistryEnumBase::Clone ( IEnumString **  ppenum)
override

Implements IEnumString.

Definition at line 214 of file querysrc.cpp.

215{
216 return E_NOTIMPL;
217}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ Init()

HRESULT CRegistryEnumBase::Init ( HKEY  hKey,
CRegistrySource pSource 
)

Definition at line 132 of file querysrc.cpp.

133{
134 m_hKey = hKey;
135 m_pSource = pSource;
136 m_pSource->AddRef();
139 {
141 }
142 else
143 {
146 }
147 return m_pszName ? S_OK : E_OUTOFMEMORY;
148}
virtual DWORD _MaxLen()=0
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
FxAutoRegKey hKey
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1390
#define S_OK
Definition: intsafe.h:52
#define LPTR
Definition: minwinbase.h:93
short WCHAR
Definition: pedump.c:58
#define _countof(array)
Definition: sndvol32.h:70
uint16_t * PWSTR
Definition: typedefs.h:56

Referenced by CRegistrySource::EnumSources(), and CRegistrySource::EnumValues().

◆ Next()

STDMETHODIMP CRegistryEnumBase::Next ( ULONG  celt,
LPWSTR rgelt,
ULONG pceltFetched 
)
override

Definition at line 182 of file querysrc.cpp.

183{
184 if (!rgelt || (celt > 1 && !pceltFetched))
185 return E_INVALIDARG;
186
187 ULONG cFetched = 0;
188
189 while (cFetched < celt)
190 {
191 if (!_Next(&rgelt[cFetched]))
192 break;
193 ++m_dwIndex;
194 ++cFetched;
195 }
196
197 if (pceltFetched)
198 *pceltFetched = cFetched;
199
200 return (cFetched == celt) ? S_OK : S_FALSE;
201}
BOOL _Next(PWSTR *ppwsz)
Definition: querysrc.cpp:150
#define E_INVALIDARG
Definition: ddrawi.h:101
uint32_t ULONG
Definition: typedefs.h:59
#define S_FALSE
Definition: winerror.h:3451

◆ QueryInterface()

HRESULT CRegistryEnumBase::QueryInterface ( REFIID  riid,
void **  ppvObject 
)
override

Implements IUnknown.

Definition at line 155 of file querysrc.cpp.

156{
157 if (!ppv)
158 return E_POINTER;
159
160 if (riid == IID_IEnumString)
161 {
162 *ppv = static_cast<IEnumString*>(this);
163 AddRef();
164 return S_OK;
165 }
166 return E_NOINTERFACE;
167}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
ULONG AddRef()
const GUID IID_IEnumString
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_POINTER
Definition: winerror.h:3480

◆ Reset()

STDMETHODIMP CRegistryEnumBase::Reset ( )
override

Implements IEnumString.

Definition at line 208 of file querysrc.cpp.

209{
210 m_dwIndex = 0;
211 return S_OK;
212}

◆ Skip()

STDMETHODIMP CRegistryEnumBase::Skip ( ULONG  celt)
override

Implements IEnumString.

Definition at line 203 of file querysrc.cpp.

204{
205 return E_NOTIMPL;
206}

◆ STDMETHODIMP_() [1/2]

CRegistryEnumBase::STDMETHODIMP_ ( ULONG  )
override

◆ STDMETHODIMP_() [2/2]

CRegistryEnumBase::STDMETHODIMP_ ( ULONG  )
override

Member Data Documentation

◆ m_cchNameMax

DWORD CRegistryEnumBase::m_cchNameMax = 0
protected

Definition at line 45 of file querysrc.cpp.

Referenced by CRegistryEnumValues::_RegNext(), CRegistryEnumKeys::_RegNext(), and Init().

◆ m_cRefs

LONG CRegistryEnumBase::m_cRefs = 1
protected

Definition at line 39 of file querysrc.cpp.

Referenced by STDMETHODIMP_().

◆ m_dwIndex

DWORD CRegistryEnumBase::m_dwIndex = 0
protected

Definition at line 40 of file querysrc.cpp.

Referenced by _Next(), Next(), and Reset().

◆ m_hKey

HKEY CRegistryEnumBase::m_hKey = NULL
protected

◆ m_pSource

CRegistrySource* CRegistryEnumBase::m_pSource = NULL
protected

Definition at line 41 of file querysrc.cpp.

Referenced by Init(), and ~CRegistryEnumBase().

◆ m_pszName

PWSTR CRegistryEnumBase::m_pszName = NULL
protected

◆ m_szBuf

WCHAR CRegistryEnumBase::m_szBuf[64] = {}
protected

Definition at line 44 of file querysrc.cpp.

Referenced by Init(), and ~CRegistryEnumBase().


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