windows-nt/Source/XPSP1/NT/base/fs/sis/groveler/registry.h
2020-09-26 16:20:57 +08:00

166 lines
2.5 KiB
C++

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
registry.h
Abstract:
SIS Groveler registry interface headers
Authors:
John Douceur, 1998
Environment:
User Mode
Revision History:
--*/
#ifndef _INC_REGISTRY
#define _INC_REGISTRY
#ifndef _DEF_ENTRY_INFO
#define _DEF_ENTRY_INFO
enum EntryType
{
entry_bool,
entry_char,
entry_int,
entry_int64,
entry_double
};
struct EntrySpec
{
const _TCHAR *identifier;
EntryType type;
const _TCHAR *default_value;
void *pointer;
};
#endif /* _DEF_ENTRY_INFO */
class Registry
{
public:
static bool read(
HKEY base_key,
const _TCHAR *path,
int num_entries,
EntrySpec *entries);
static bool write(
HKEY base_key,
const _TCHAR *path,
int num_entries,
EntrySpec *entries);
static bool overwrite(
HKEY base_key,
const _TCHAR *path,
int num_entries,
EntrySpec *entries);
static bool write_defaults(
HKEY base_key,
const _TCHAR *path,
int num_entries,
EntrySpec *entries);
static bool overwrite_defaults(
HKEY base_key,
const _TCHAR *path,
int num_entries,
EntrySpec *entries);
static bool read_string_set(
HKEY base_key,
const _TCHAR *path,
int *num_strings,
_TCHAR ***strings,
BYTE **buffer);
static bool write_string_set(
HKEY base_key,
const _TCHAR *path,
int num_strings,
_TCHAR **strings,
_TCHAR **identifiers);
static bool overwrite_string_set(
HKEY base_key,
const _TCHAR *path,
int num_strings,
_TCHAR **strings,
_TCHAR **identifiers);
static void create_key_ex(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition);
static void open_key_ex(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD ulOptions,
REGSAM samDesired,
PHKEY phkResult);
static void close_key(
HKEY hKey);
static void query_value_ex(
HKEY hKey,
LPCTSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData);
static void set_value_ex(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData);
private:
enum {id_buffer_length = 256};
static void load_string_into_value(
EntryType type,
const _TCHAR *string,
void *value);
static void store_value_in_string(
EntryType type,
void *value,
_TCHAR *string);
Registry() {}
~Registry() {}
static _TCHAR id_buffer[id_buffer_length];
};
#endif /* _INC_REGISTRY */