mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-11-04 01:58:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			294 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			294 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* GIO - GLib Input, Output and Streaming Library
 | 
						|
 *
 | 
						|
 * Copyright (C) 2014 Руслан Ижбулатов <lrn1986@gmail.com>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: LGPL-2.1-or-later
 | 
						|
 *
 | 
						|
 * This library is free software; you can redistribute it and/or
 | 
						|
 * modify it under the terms of the GNU Lesser General Public
 | 
						|
 * License as published by the Free Software Foundation; either
 | 
						|
 * version 2.1 of the License, or (at your option) any later version.
 | 
						|
 *
 | 
						|
 * This library is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
 * Lesser General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU Lesser General
 | 
						|
 * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
 | 
						|
 *
 | 
						|
 */
 | 
						|
#ifndef __G_WIN32_REGISTRY_KEY_H__
 | 
						|
#define __G_WIN32_REGISTRY_KEY_H__
 | 
						|
 | 
						|
#include <gio/gio.h>
 | 
						|
 | 
						|
#ifdef G_PLATFORM_WIN32
 | 
						|
 | 
						|
G_BEGIN_DECLS
 | 
						|
 | 
						|
#define G_TYPE_WIN32_REGISTRY_KEY            (g_win32_registry_key_get_type ())
 | 
						|
#define G_WIN32_REGISTRY_KEY(o)              (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_WIN32_REGISTRY_KEY, GWin32RegistryKey))
 | 
						|
#define G_WIN32_REGISTRY_KEY_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_WIN32_REGISTRY_KEY, GWin32RegistryKeyClass))
 | 
						|
#define G_IS_WIN32_REGISTRY_KEY(o)           (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_WIN32_REGISTRY_KEY))
 | 
						|
#define G_IS_WIN32_REGISTRY_KEY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_WIN32_REGISTRY_KEY))
 | 
						|
#define G_WIN32_REGISTRY_KEY_GET_CLASS(o)    (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_WIN32_REGISTRY_KEY, GWin32RegistryKeyClass))
 | 
						|
 | 
						|
typedef enum {
 | 
						|
  G_WIN32_REGISTRY_VALUE_NONE = 0,
 | 
						|
  G_WIN32_REGISTRY_VALUE_BINARY = 1,
 | 
						|
  G_WIN32_REGISTRY_VALUE_UINT32LE = 2,
 | 
						|
  G_WIN32_REGISTRY_VALUE_UINT32BE = 3,
 | 
						|
#if G_BYTE_ORDER == G_BIG_ENDIAN
 | 
						|
  G_WIN32_REGISTRY_VALUE_UINT32 = G_WIN32_REGISTRY_VALUE_UINT32BE,
 | 
						|
#else
 | 
						|
  G_WIN32_REGISTRY_VALUE_UINT32 = G_WIN32_REGISTRY_VALUE_UINT32LE,
 | 
						|
#endif
 | 
						|
  G_WIN32_REGISTRY_VALUE_EXPAND_STR = 4,
 | 
						|
  G_WIN32_REGISTRY_VALUE_LINK = 5,
 | 
						|
  G_WIN32_REGISTRY_VALUE_MULTI_STR = 6,
 | 
						|
  G_WIN32_REGISTRY_VALUE_UINT64LE = 7,
 | 
						|
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
 | 
						|
  G_WIN32_REGISTRY_VALUE_UINT64 = G_WIN32_REGISTRY_VALUE_UINT64LE,
 | 
						|
#endif
 | 
						|
  G_WIN32_REGISTRY_VALUE_STR = 8
 | 
						|
} GWin32RegistryValueType;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
  G_WIN32_REGISTRY_WATCH_NAME = 1 << 0,
 | 
						|
  G_WIN32_REGISTRY_WATCH_ATTRIBUTES = 1 << 1,
 | 
						|
  G_WIN32_REGISTRY_WATCH_VALUES = 1 << 2,
 | 
						|
  G_WIN32_REGISTRY_WATCH_SECURITY = 1 << 3,
 | 
						|
} GWin32RegistryKeyWatcherFlags;
 | 
						|
 | 
						|
typedef struct _GWin32RegistryKey GWin32RegistryKey;
 | 
						|
typedef struct _GWin32RegistryKeyClass GWin32RegistryKeyClass;
 | 
						|
typedef struct _GWin32RegistryKeyPrivate GWin32RegistryKeyPrivate;
 | 
						|
typedef struct _GWin32RegistrySubkeyIter GWin32RegistrySubkeyIter;
 | 
						|
typedef struct _GWin32RegistryValueIter GWin32RegistryValueIter;
 | 
						|
 | 
						|
struct _GWin32RegistryKey {
 | 
						|
  GObject parent_instance;
 | 
						|
 | 
						|
  /*< private >*/
 | 
						|
  GWin32RegistryKeyPrivate *priv;
 | 
						|
};
 | 
						|
 | 
						|
struct _GWin32RegistryKeyClass {
 | 
						|
  GObjectClass parent_class;
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * GWin32RegistryKeyWatchCallbackFunc:
 | 
						|
 * @key: A #GWin32RegistryKey that was watched.
 | 
						|
 * @user_data: The @user_data #gpointer passed to g_win32_registry_key_watch().
 | 
						|
 *
 | 
						|
 * The type of the callback passed to g_win32_registry_key_watch().
 | 
						|
 *
 | 
						|
 * The callback is invoked after a change matching the watch flags and arguments
 | 
						|
 * occurs. If the children of the key were watched also, there is no way to know
 | 
						|
 * which one of them triggered the callback.
 | 
						|
 *
 | 
						|
 * Since: 2.42
 | 
						|
 */
 | 
						|
typedef void (*GWin32RegistryKeyWatchCallbackFunc) (GWin32RegistryKey  *key,
 | 
						|
                                                    gpointer            user_data);
 | 
						|
 | 
						|
#define G_TYPE_WIN32_REGISTRY_SUBKEY_ITER (g_win32_registry_subkey_iter_get_type ())
 | 
						|
 | 
						|
struct _GWin32RegistrySubkeyIter {
 | 
						|
  /*< private >*/
 | 
						|
  GWin32RegistryKey *key;
 | 
						|
  gint               counter;
 | 
						|
  gint               subkey_count;
 | 
						|
 | 
						|
  gunichar2         *subkey_name;
 | 
						|
  gsize              subkey_name_size;
 | 
						|
  gsize              subkey_name_len;
 | 
						|
 | 
						|
  gchar             *subkey_name_u8;
 | 
						|
};
 | 
						|
 | 
						|
#define G_TYPE_WIN32_REGISTRY_VALUE_ITER (g_win32_registry_value_iter_get_type ())
 | 
						|
 | 
						|
struct _GWin32RegistryValueIter {
 | 
						|
  /*< private >*/
 | 
						|
  GWin32RegistryKey       *key;
 | 
						|
  gint                     counter;
 | 
						|
  gint                     value_count;
 | 
						|
 | 
						|
  gunichar2               *value_name;
 | 
						|
  gsize                    value_name_size;
 | 
						|
  gsize                    value_name_len;
 | 
						|
  GWin32RegistryValueType  value_type;
 | 
						|
  guint8                  *value_data;
 | 
						|
  gsize                    value_data_size;
 | 
						|
  gsize                    value_actual_data_size;
 | 
						|
  GWin32RegistryValueType  value_expanded_type;
 | 
						|
  gunichar2               *value_data_expanded;
 | 
						|
  gsize                    value_data_expanded_charsize;
 | 
						|
 | 
						|
  gchar                   *value_name_u8;
 | 
						|
  gsize                    value_name_u8_len;
 | 
						|
  gchar                   *value_data_u8;
 | 
						|
  gsize                    value_data_u8_size;
 | 
						|
  gchar                   *value_data_expanded_u8;
 | 
						|
  gsize                    value_data_expanded_u8_size;
 | 
						|
};
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GWin32RegistrySubkeyIter *g_win32_registry_subkey_iter_copy     (const GWin32RegistrySubkeyIter *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
void                      g_win32_registry_subkey_iter_free     (GWin32RegistrySubkeyIter       *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
void                      g_win32_registry_subkey_iter_assign   (GWin32RegistrySubkeyIter       *iter,
 | 
						|
                                                                 const GWin32RegistrySubkeyIter *other);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GType                     g_win32_registry_subkey_iter_get_type (void) G_GNUC_CONST;
 | 
						|
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GWin32RegistryValueIter  *g_win32_registry_value_iter_copy      (const GWin32RegistryValueIter *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
void                      g_win32_registry_value_iter_free      (GWin32RegistryValueIter       *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
void                      g_win32_registry_value_iter_assign    (GWin32RegistryValueIter       *iter,
 | 
						|
                                                                 const GWin32RegistryValueIter *other);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GType                     g_win32_registry_value_iter_get_type  (void) G_GNUC_CONST;
 | 
						|
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GType              g_win32_registry_key_get_type             (void);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GWin32RegistryKey *g_win32_registry_key_new                  (const gchar                    *path,
 | 
						|
                                                              GError                        **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GWin32RegistryKey *g_win32_registry_key_new_w                (const gunichar2                *path,
 | 
						|
                                                              GError                        **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GWin32RegistryKey *g_win32_registry_key_get_child            (GWin32RegistryKey              *key,
 | 
						|
                                                              const gchar                    *subkey,
 | 
						|
                                                              GError                        **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
GWin32RegistryKey *g_win32_registry_key_get_child_w          (GWin32RegistryKey              *key,
 | 
						|
                                                              const gunichar2                *subkey,
 | 
						|
                                                              GError                        **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_subkey_iter_init           (GWin32RegistrySubkeyIter       *iter,
 | 
						|
                                                              GWin32RegistryKey              *key,
 | 
						|
                                                              GError                        **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
void             g_win32_registry_subkey_iter_clear          (GWin32RegistrySubkeyIter       *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gsize            g_win32_registry_subkey_iter_n_subkeys      (GWin32RegistrySubkeyIter       *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_subkey_iter_next           (GWin32RegistrySubkeyIter       *iter,
 | 
						|
                                                              gboolean                        skip_errors,
 | 
						|
                                                              GError                        **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_subkey_iter_get_name       (GWin32RegistrySubkeyIter        *iter,
 | 
						|
                                                              const gchar                    **subkey_name,
 | 
						|
                                                              gsize                           *subkey_name_len,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_subkey_iter_get_name_w     (GWin32RegistrySubkeyIter        *iter,
 | 
						|
                                                              const gunichar2                **subkey_name,
 | 
						|
                                                              gsize                           *subkey_name_len,
 | 
						|
                                                              GError                         **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_value_iter_init            (GWin32RegistryValueIter         *iter,
 | 
						|
                                                              GWin32RegistryKey               *key,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
void             g_win32_registry_value_iter_clear           (GWin32RegistryValueIter         *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gsize            g_win32_registry_value_iter_n_values        (GWin32RegistryValueIter         *iter);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_value_iter_next            (GWin32RegistryValueIter         *iter,
 | 
						|
                                                              gboolean                         skip_errors,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_value_iter_get_value_type  (GWin32RegistryValueIter         *iter,
 | 
						|
                                                              GWin32RegistryValueType         *value_type,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_value_iter_get_name        (GWin32RegistryValueIter         *iter,
 | 
						|
                                                              gchar                          **value_name,
 | 
						|
                                                              gsize                           *value_name_len,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_value_iter_get_name_w      (GWin32RegistryValueIter         *iter,
 | 
						|
                                                              gunichar2                      **value_name,
 | 
						|
                                                              gsize                           *value_name_len,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_value_iter_get_data        (GWin32RegistryValueIter         *iter,
 | 
						|
                                                              gboolean                         auto_expand,
 | 
						|
                                                              gpointer                        *value_data,
 | 
						|
                                                              gsize                           *value_data_size,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_value_iter_get_data_w      (GWin32RegistryValueIter         *iter,
 | 
						|
                                                              gboolean                         auto_expand,
 | 
						|
                                                              gpointer                        *value_data,
 | 
						|
                                                              gsize                           *value_data_size,
 | 
						|
                                                              GError                         **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_66
 | 
						|
gboolean         g_win32_registry_key_get_value              (GWin32RegistryKey               *key,
 | 
						|
                                                              const gchar * const             *mui_dll_dirs,
 | 
						|
                                                              gboolean                         auto_expand,
 | 
						|
                                                              const gchar                     *value_name,
 | 
						|
                                                              GWin32RegistryValueType         *value_type,
 | 
						|
                                                              gpointer                        *value_data,
 | 
						|
                                                              gsize                           *value_data_size,
 | 
						|
                                                              GError                         **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_66
 | 
						|
gboolean         g_win32_registry_key_get_value_w            (GWin32RegistryKey               *key,
 | 
						|
                                                              const gunichar2 * const         *mui_dll_dirs,
 | 
						|
                                                              gboolean                         auto_expand,
 | 
						|
                                                              const gunichar2                 *value_name,
 | 
						|
                                                              GWin32RegistryValueType         *value_type,
 | 
						|
                                                              gpointer                        *value_data,
 | 
						|
                                                              gsize                           *value_data_size,
 | 
						|
                                                              GError                         **error);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
const gchar     *g_win32_registry_key_get_path               (GWin32RegistryKey               *key);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
const gunichar2 *g_win32_registry_key_get_path_w             (GWin32RegistryKey               *key);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_key_watch                  (GWin32RegistryKey               *key,
 | 
						|
                                                              gboolean                         watch_children,
 | 
						|
                                                              GWin32RegistryKeyWatcherFlags    watch_flags,
 | 
						|
                                                              GWin32RegistryKeyWatchCallbackFunc callback,
 | 
						|
                                                              gpointer                         user_data,
 | 
						|
                                                              GError                         **error);
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
gboolean         g_win32_registry_key_has_changed            (GWin32RegistryKey               *key);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_46
 | 
						|
void             g_win32_registry_key_erase_change_indicator (GWin32RegistryKey               *key);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_66
 | 
						|
const gunichar2 * const *g_win32_registry_get_os_dirs_w (void);
 | 
						|
 | 
						|
GIO_AVAILABLE_IN_2_66
 | 
						|
const gchar * const     *g_win32_registry_get_os_dirs   (void);
 | 
						|
 | 
						|
G_END_DECLS
 | 
						|
 | 
						|
#endif /* G_PLATFORM_WIN32 */
 | 
						|
 | 
						|
#endif /* __G_WIN32_REGISTRY_KEY_H__ */
 |