18 FLAGGED_BYTE_BLOB* pBlob =
91 :
public IQuerySourceOld
92 ,
public IObjectWithRegistryKeyOld
113 FLAGGED_BYTE_BLOB **ppBlob)
override;
171 return ::InterlockedIncrement(&
m_cRefs);
184 if (!rgelt || (celt > 1 && !pceltFetched))
189 while (cFetched < celt)
191 if (!
_Next(&rgelt[cFetched]))
198 *pceltFetched = cFetched;
228 DWORD cchKeyNameMax = 0;
229 RegQueryInfoKeyW(
m_hKey,
NULL,
NULL,
NULL,
NULL, &cchKeyNameMax,
NULL,
NULL,
NULL,
NULL,
231 return cchKeyNameMax + 1;
245 DWORD cchValueNameMax = 0;
248 return cchValueNameMax + 1;
275 if (
riid == IID_IQuerySourceOld)
277 *ppvObject =
static_cast<IQuerySourceOld*
>(
this);
282 if (
riid == IID_IObjectWithRegistryKeyOld)
284 *ppvObject =
static_cast<IObjectWithRegistryKeyOld*
>(
this);
295 return ::InterlockedIncrement(&
m_cRefs);
346 if (!valueName && !szData[0])
379 DWORD dwType, cbValue =
sizeof(*pdwValue);
399 FLAGGED_BYTE_BLOB **ppBlob)
409 if (keyName && *keyName &&
443 (*ppBlob)->fFlags = dwType;
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
HRESULT Init(HKEY hKey, CRegistrySource *pSource)
STDMETHODIMP Skip(ULONG celt) override
STDMETHODIMP Reset() override
STDMETHODIMP Clone(IEnumString **ppenum) override
CRegistrySource * m_pSource
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) override
virtual BOOL _RegNext(DWORD dwIndex)=0
STDMETHODIMP_(ULONG) Release() override
STDMETHODIMP_(ULONG) AddRef() override
virtual DWORD _MaxLen()=0
virtual ~CRegistryEnumBase()
STDMETHODIMP Next(ULONG celt, LPWSTR *rgelt, ULONG *pceltFetched) override
BOOL _RegNext(DWORD dwIndex) override
BOOL _RegNext(DWORD dwIndex) override
STDMETHODIMP QueryValueDirect(PCWSTR keyName, PCWSTR valueName, FLAGGED_BYTE_BLOB **ppBlob) override
STDMETHODIMP QueryValueExists(PCWSTR keyName, PCWSTR valueName) override
STDMETHODIMP OpenSource(PCWSTR keyName, BOOL bCreate, IQuerySourceOld **ppSource) override
STDMETHODIMP SetKey(HKEY hKey) override
HRESULT Init(HKEY hKey, PCWSTR pszSubKey, BOOL bCreate)
STDMETHODIMP EnumSources(IEnumString **ppEnum) override
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) override
STDMETHODIMP QueryValueString(PCWSTR keyName, PCWSTR valueName, PWSTR *ppszValue) override
virtual ~CRegistrySource()
STDMETHODIMP QueryValueDword(PCWSTR keyName, PCWSTR valueName, DWORD *pdwValue) override
STDMETHODIMP_(ULONG) Release() override
STDMETHODIMP SetValueDirect(PCWSTR keyName, PCWSTR valueName, DWORD dwType, DWORD cbData, LPCVOID pvData) override
STDMETHODIMP GetKey(HKEY *phKey) override
STDMETHODIMP_(ULONG) AddRef() override
STDMETHODIMP EnumValues(IEnumString **ppEnum) override
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
HKEY WINAPI SHRegDuplicateHKey(HKEY hKey)
DWORD WINAPI SHSetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, DWORD dwType, LPCVOID pvData, DWORD cbData)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define ERROR_FILE_NOT_FOUND
static ULONG WINAPI AddRef(IStream *iface)
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
const GUID IID_IEnumString
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
_In_opt_ LPCSTR pszSubKey
EXTERN_C HRESULT WINAPI QuerySourceCreateFromKey(_In_ HKEY hKey, _In_opt_ PCWSTR lpSubKey, _In_ BOOL bCreate, _In_ REFIID riid, _Outptr_ PVOID *ppv)
static HRESULT SHAllocBlob(ULONG cbData, const BYTE *pbData, FLAGGED_BYTE_BLOB **ppBlob)
_In_ int _In_ BOOL bCreate
#define E_DATATYPE_MISMATCH
static HRESULT HRESULT_FROM_WIN32(unsigned int x)