Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef _INC_DSKQUOTA_REGISTRY_H
#define _INC_DSKQUOTA_REGISTRY_H
#ifndef _WINDOWS_
# include <windows.h>
#endif
#ifndef _INC_DSKQUOTA_STRCLASS_H
# include "strclass.h"
#endif
#ifndef _INC_DSKQUOTA_CARRAY_H
# include "carray.h"
#endif
//
// Represents a single registry key. Provides basic functions for
// opening and closing the key as well as setting and querying for
// values in that key. Closure of the key handle is ensured through
// the destructor.
//
class RegKey { public: RegKey(void); RegKey(HKEY hkeyRoot, LPCTSTR pszSubKey); virtual ~RegKey(void);
operator HKEY(void) const { return m_hkey; }
HKEY GetHandle(void) const { return m_hkey; }
HRESULT Open(REGSAM samDesired, bool bCreate = false) const; void Attach(HKEY hkey); void Detach(void); void Close(void) const;
int GetValueBufferSize( LPCTSTR pszValueName) const;
bool IsOpen(void) const { return NULL != m_hkey; }
HRESULT WatchForChange(DWORD dwChangeFilter, bool bWatchSubtree = false); HRESULT WaitForChange(DWORD dwChangeFilter, bool bWatchSubtree = false);
//
// Retrieve REG_DWORD
//
HRESULT GetValue( LPCTSTR pszValueName, DWORD *pdwDataOut) const; //
// Retrieve REG_BINARY
//
HRESULT GetValue( LPCTSTR pszValueName, LPBYTE pbDataOut, int cbDataOut) const; //
// Retrieve REG_SZ
//
HRESULT GetValue( LPCTSTR pszValueName, CString *pstrDataOut) const; //
// Retrieve REG_MULTI_SZ
//
HRESULT GetValue( LPCTSTR pszValueName, CArray<CString> *prgstrOut) const; //
// Set REG_DWORD
//
HRESULT SetValue( LPCTSTR pszValueName, DWORD dwData); //
// Set REG_BINARY
//
HRESULT SetValue( LPCTSTR pszValueName, const LPBYTE pbData, int cbData); //
// Set REG_SZ
//
HRESULT SetValue( LPCTSTR pszValueName, LPCTSTR pszData); //
// Set REG_MULTI_SZ
//
HRESULT SetValue( LPCTSTR pszValueName, const CArray<CString>& rgstrData);
protected: virtual void OnChange(HKEY hkey);
private: HKEY m_hkeyRoot; mutable HKEY m_hkey; HANDLE m_hChangeEvent; DWORD m_dwChangeFilter; CString m_strSubKey; bool m_bWatchSubtree;
HRESULT SetValue( LPCTSTR pszValueName, DWORD dwValueType, const LPBYTE pbData, int cbData);
HRESULT GetValue( LPCTSTR pszValueName, DWORD dwTypeExpected, LPBYTE pbData, int cbData) const;
LPTSTR CreateDoubleNulTermList( const CArray<CString>& rgstrSrc) const;
static DWORD NotifyWaitThreadProc(LPVOID pvParam);
//
// Prevent copy.
//
RegKey(const RegKey& rhs); RegKey& operator = (const RegKey& rhs); };
#if DBG
class RegKeyChg : public RegKey { public: RegKeyChg(HKEY hkeyRoot, LPCTSTR pszSubKey); ~RegKeyChg(void);
protected: virtual void OnChange(HKEY hkey); };
#endif // #if DBG
#endif // _INC_DSKQUOTA_REGISTRY_H
|