/*++ 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 */