/* GIO - GLib Input, Output and Streaming Library * * Copyright (C) 2014 Руслан Ижбулатов * * 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 . * */ #ifndef __G_WIN32_REGISTRY_KEY_H__ #define __G_WIN32_REGISTRY_KEY_H__ #include #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; }; GLIB_AVAILABLE_IN_2_46 GWin32RegistrySubkeyIter *g_win32_registry_subkey_iter_copy (const GWin32RegistrySubkeyIter *iter); GLIB_AVAILABLE_IN_2_46 void g_win32_registry_subkey_iter_free (GWin32RegistrySubkeyIter *iter); GLIB_AVAILABLE_IN_2_46 void g_win32_registry_subkey_iter_assign (GWin32RegistrySubkeyIter *iter, const GWin32RegistrySubkeyIter *other); GLIB_AVAILABLE_IN_2_46 GType g_win32_registry_subkey_iter_get_type (void) G_GNUC_CONST; GLIB_AVAILABLE_IN_2_46 GWin32RegistryValueIter *g_win32_registry_value_iter_copy (const GWin32RegistryValueIter *iter); GLIB_AVAILABLE_IN_2_46 void g_win32_registry_value_iter_free (GWin32RegistryValueIter *iter); GLIB_AVAILABLE_IN_2_46 void g_win32_registry_value_iter_assign (GWin32RegistryValueIter *iter, const GWin32RegistryValueIter *other); GLIB_AVAILABLE_IN_2_46 GType g_win32_registry_value_iter_get_type (void) G_GNUC_CONST; GLIB_AVAILABLE_IN_2_46 GType g_win32_registry_key_get_type (void); GLIB_AVAILABLE_IN_2_46 GWin32RegistryKey *g_win32_registry_key_new (const gchar *path, GError **error); GLIB_AVAILABLE_IN_2_46 GWin32RegistryKey *g_win32_registry_key_new_w (const gunichar2 *path, GError **error); GLIB_AVAILABLE_IN_2_46 GWin32RegistryKey *g_win32_registry_key_get_child (GWin32RegistryKey *key, const gchar *subkey, GError **error); GLIB_AVAILABLE_IN_2_46 GWin32RegistryKey *g_win32_registry_key_get_child_w (GWin32RegistryKey *key, const gunichar2 *subkey, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_subkey_iter_init (GWin32RegistrySubkeyIter *iter, GWin32RegistryKey *key, GError **error); GLIB_AVAILABLE_IN_2_46 void g_win32_registry_subkey_iter_clear (GWin32RegistrySubkeyIter *iter); GLIB_AVAILABLE_IN_2_46 gsize g_win32_registry_subkey_iter_n_subkeys (GWin32RegistrySubkeyIter *iter); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_subkey_iter_next (GWin32RegistrySubkeyIter *iter, gboolean skip_errors, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_subkey_iter_get_name (GWin32RegistrySubkeyIter *iter, gchar **subkey_name, gsize *subkey_name_len, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_subkey_iter_get_name_w (GWin32RegistrySubkeyIter *iter, gunichar2 **subkey_name, gsize *subkey_name_len, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_value_iter_init (GWin32RegistryValueIter *iter, GWin32RegistryKey *key, GError **error); GLIB_AVAILABLE_IN_2_46 void g_win32_registry_value_iter_clear (GWin32RegistryValueIter *iter); GLIB_AVAILABLE_IN_2_46 gsize g_win32_registry_value_iter_n_values (GWin32RegistryValueIter *iter); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_value_iter_next (GWin32RegistryValueIter *iter, gboolean skip_errors, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_value_iter_get_value_type (GWin32RegistryValueIter *iter, GWin32RegistryValueType *value_type, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_value_iter_get_name (GWin32RegistryValueIter *iter, gchar **value_name, gsize *value_name_len, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_value_iter_get_name_w (GWin32RegistryValueIter *iter, gunichar2 **value_name, gsize *value_name_len, GError **error); GLIB_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); GLIB_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); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_key_get_value (GWin32RegistryKey *key, gboolean auto_expand, const gchar *value_name, GWin32RegistryValueType *value_type, gpointer *value_data, gsize *value_data_size, GError **error); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_key_get_value_w (GWin32RegistryKey *key, gboolean auto_expand, const gunichar2 *value_name, GWin32RegistryValueType *value_type, gpointer *value_data, gsize *value_data_size, GError **error); GLIB_AVAILABLE_IN_2_46 const gchar *g_win32_registry_key_get_path (GWin32RegistryKey *key); GLIB_AVAILABLE_IN_2_46 const gunichar2 *g_win32_registry_key_get_path_w (GWin32RegistryKey *key); GLIB_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); GLIB_AVAILABLE_IN_2_46 gboolean g_win32_registry_key_has_changed (GWin32RegistryKey *key); GLIB_AVAILABLE_IN_2_46 void g_win32_registry_key_erase_change_indicator (GWin32RegistryKey *key); G_END_DECLS #endif /* G_PLATFORM_WIN32 */ #endif /* __G_WIN32_REGISTRY_KEY_H__ */