ReactOS 0.4.17-dev-357-ga8f14ff
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 37 of file querysrc.cpp.

Constructor & Destructor Documentation

◆ ~CRegistryEnumBase()

CRegistryEnumBase::~CRegistryEnumBase ( )
virtual

Definition at line 125 of file querysrc.cpp.

126{
127 if (m_pszName && m_pszName != m_szBuf)
129 if (m_pSource)
130 m_pSource->Release();
131}
WCHAR m_szBuf[64]
Definition: querysrc.cpp:45
CRegistrySource * m_pSource
Definition: querysrc.cpp:42
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 151 of file querysrc.cpp.

152{
153 return _RegNext(m_dwIndex) && SUCCEEDED(SHStrDupW(m_pszName, ppwsz));
154}
virtual BOOL _RegNext(DWORD dwIndex)=0
HRESULT WINAPI SHStrDupW(const WCHAR *src, WCHAR **dest)
Definition: main.c:1692
#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 215 of file querysrc.cpp.

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

◆ Init()

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

Definition at line 133 of file querysrc.cpp.

134{
135 m_hKey = hKey;
136 m_pSource = pSource;
137 m_pSource->AddRef();
140 {
142 }
143 else
144 {
147 }
148 return m_pszName ? S_OK : E_OUTOFMEMORY;
149}
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 183 of file querysrc.cpp.

184{
185 if (!rgelt || (celt > 1 && !pceltFetched))
186 return E_INVALIDARG;
187
188 ULONG cFetched = 0;
189
190 while (cFetched < celt)
191 {
192 if (!_Next(&rgelt[cFetched]))
193 break;
194 ++m_dwIndex;
195 ++cFetched;
196 }
197
198 if (pceltFetched)
199 *pceltFetched = cFetched;
200
201 return (cFetched == celt) ? S_OK : S_FALSE;
202}
BOOL _Next(PWSTR *ppwsz)
Definition: querysrc.cpp:151
#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 156 of file querysrc.cpp.

157{
158 if (!ppv)
159 return E_POINTER;
160
161 if (riid == IID_IEnumString)
162 {
163 *ppv = static_cast<IEnumString*>(this);
164 AddRef();
165 return S_OK;
166 }
167 return E_NOINTERFACE;
168}
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 209 of file querysrc.cpp.

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

◆ Skip()

STDMETHODIMP CRegistryEnumBase::Skip ( ULONG  celt)
override

Implements IEnumString.

Definition at line 204 of file querysrc.cpp.

205{
206 return E_NOTIMPL;
207}

◆ 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 46 of file querysrc.cpp.

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

◆ m_cRefs

LONG CRegistryEnumBase::m_cRefs = 1
protected

Definition at line 40 of file querysrc.cpp.

Referenced by STDMETHODIMP_().

◆ m_dwIndex

DWORD CRegistryEnumBase::m_dwIndex = 0
protected

Definition at line 41 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 42 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 45 of file querysrc.cpp.

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


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