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.
70 lines
2.1 KiB
70 lines
2.1 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
|
//
|
|
// File: cscentry.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef __cscentry_h
|
|
#define __cscentry_h
|
|
|
|
#include <comctrlp.h> // DPA
|
|
#include "util.h" // LocalAllocString, LocalFreeString
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
// CSCEntry
|
|
//
|
|
//
|
|
class CSCEntry
|
|
{
|
|
public:
|
|
CSCEntry(REFGUID rguid) : m_pszName(NULL), m_Guid(rguid) {}
|
|
~CSCEntry() { LocalFreeString(&m_pszName); }
|
|
|
|
BOOL Initialize(LPCTSTR pszName) { return LocalAllocString(&m_pszName, pszName); }
|
|
|
|
LPCTSTR Name() const { return m_pszName; }
|
|
REFGUID Guid() const { return m_Guid; }
|
|
|
|
private:
|
|
LPTSTR m_pszName; // E.g. full pathname or sharename
|
|
GUID m_Guid; // GUID used to identify this entry
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
// CSCEntryLog
|
|
//
|
|
//
|
|
class CSCEntryLog
|
|
{
|
|
public:
|
|
CSCEntryLog() : m_hdpa(NULL), m_hkRoot(NULL), m_bCSInited(FALSE) {}
|
|
~CSCEntryLog();
|
|
|
|
HRESULT Initialize(HKEY hkRoot, LPCTSTR pszSubkey);
|
|
|
|
// Access entries
|
|
CSCEntry* Get(LPCTSTR pszName);
|
|
CSCEntry* Get(REFGUID rguid);
|
|
|
|
// Add Entries
|
|
CSCEntry* Add(LPCTSTR pszName); // Returns existing entry or creates new entry
|
|
|
|
// Access Registry
|
|
HKEY OpenKey(LPCTSTR pszSubkey, REGSAM samDesired);
|
|
|
|
private:
|
|
HKEY m_hkRoot; // KEY_ENUMERATE_SUB_KEYS | KEY_CREATE_SUB_KEY
|
|
HDPA m_hdpa; // Holds the entry log in memory
|
|
CRITICAL_SECTION m_csDPA; // Protect access to m_hdpa
|
|
BOOL m_bCSInited;
|
|
|
|
HKEY OpenKeyInternal(LPTSTR pszSubkey, REGSAM samDesired);
|
|
CSCEntry* CreateFromKey(LPTSTR pszSubkey);
|
|
HRESULT ReadRegKeys(); // fills m_hdpa
|
|
};
|
|
|
|
#endif
|