Leaked source code of windows server 2003
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.
|
|
//@doc
/******************************************************
** ** @module REGISTRY.H | Definition of RegistryKey class ** ** Description: ** ** History: ** Created 12/16/97 Matthew L. Coill (mlc) ** ** (c) 1986-1997 Microsoft Corporation. All Rights Reserved. ******************************************************/ #ifndef __REGISTRY_H__
#define __REGISTRY_H__
#include <windows.h>
#ifndef override
#define override
#endif
//
// @class RegistryKey class
//
class RegistryKey { //@access Constructor/Destructor
public: //@cmember constructor
RegistryKey(HKEY osKey) : m_OSRegistryKey(osKey), m_ShouldClose(FALSE), m_pReferenceCount(NULL) {}; RegistryKey(RegistryKey& rkey);
//@cmember destructor
~RegistryKey();
RegistryKey CreateSubkey(const TCHAR* subkeyName, const TCHAR* typeName = TEXT("REG_SZ")); RegistryKey OpenSubkey(const TCHAR* subkeyName, REGSAM access = KEY_READ); RegistryKey OpenNextSubkey(ULONG& ulCookie, TCHAR* subkeyName = NULL, REGSAM access = KEY_READ); RegistryKey OpenCreateSubkey(const TCHAR* subkeyName); HRESULT RemoveSubkey(const TCHAR* subkeyName);
HRESULT QueryValue(const TCHAR* valueName, BYTE* pEntryData, DWORD& dataSize); HRESULT SetValue(const TCHAR* valueName, const BYTE* pData, DWORD dataSize, DWORD dataType); DWORD GetNumSubkeys() const;
virtual RegistryKey& operator=(RegistryKey& rhs); BOOL operator==(const RegistryKey& comparee); BOOL operator!=(const RegistryKey& comparee);
void ShouldClose(BOOL closeable) { m_ShouldClose = closeable; } //@access private data members
private: HKEY m_OSRegistryKey; BOOL m_ShouldClose; // Should only close keys we create
UINT* m_pReferenceCount; };
//
// @class UnassignableRegistryKey class
//
class UnassignableRegistryKey : public RegistryKey { //@access Constructor/Destructor
public: //@cmember constructor
UnassignableRegistryKey(HKEY osKey) : RegistryKey(osKey) {};
//@access private data members
private: UnassignableRegistryKey(RegistryKey& rkey); override RegistryKey& operator=(RegistryKey& rhs) { return *this; } // vtable requires definition?
};
extern UnassignableRegistryKey c_InvalidKey; /* const unassignable, but not const immutable */
#endif __REGISTRY_H__
|