Line data Source code
1 : /* 2 : * Unix SMB/CIFS implementation. 3 : * Virtual Windows Registry Layer 4 : * Copyright (C) Gerald Carter 2002-2005 5 : * Copyright (C) Michael Adam 2008 6 : * 7 : * This program is free software; you can redistribute it and/or modify 8 : * it under the terms of the GNU General Public License as published by 9 : * the Free Software Foundation; either version 3 of the License, or 10 : * (at your option) any later version. 11 : * 12 : * This program is distributed in the hope that it will be useful, 13 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 : * GNU General Public License for more details. 16 : * 17 : * You should have received a copy of the GNU General Public License 18 : * along with this program; if not, see <http://www.gnu.org/licenses/>. 19 : */ 20 : 21 : /* 22 : * HKPT parameters registry backend. 23 : * 24 : * This replaces the former dynamic hkpt parameters overlay. 25 : */ 26 : 27 : #include "includes.h" 28 : #include "registry.h" 29 : #include "reg_perfcount.h" 30 : #include "reg_objects.h" 31 : 32 : #undef DBGC_CLASS 33 : #define DBGC_CLASS DBGC_REGISTRY 34 : 35 : extern struct registry_ops regdb_ops; 36 : 37 0 : static int hkpt_params_fetch_values(const char *key, struct regval_ctr *regvals) 38 : { 39 0 : uint32_t base_index; 40 0 : uint32_t buffer_size; 41 0 : char *buffer = NULL; 42 : 43 : /* This is ALMOST the same as perflib_009_params, but HKPT has 44 : a "Counters" entry instead of a "Counter" key. <Grrrr> */ 45 : 46 0 : base_index = reg_perfcount_get_base_index(); 47 0 : buffer_size = reg_perfcount_get_counter_names(base_index, &buffer); 48 0 : regval_ctr_addvalue(regvals, "Counters", REG_MULTI_SZ, (uint8_t *)buffer, 49 : buffer_size); 50 : 51 0 : if(buffer_size > 0) { 52 0 : SAFE_FREE(buffer); 53 : } 54 : 55 0 : buffer_size = reg_perfcount_get_counter_help(base_index, &buffer); 56 0 : regval_ctr_addvalue(regvals, "Help", REG_MULTI_SZ, (uint8_t *)buffer, buffer_size); 57 0 : if(buffer_size > 0) { 58 0 : SAFE_FREE(buffer); 59 : } 60 : 61 0 : return regval_ctr_numvals( regvals ); 62 : } 63 : 64 0 : static int hkpt_params_fetch_subkeys(const char *key, 65 : struct regsubkey_ctr *subkey_ctr) 66 : { 67 0 : return regdb_ops.fetch_subkeys(key, subkey_ctr); 68 : } 69 : 70 : struct registry_ops hkpt_params_reg_ops = { 71 : .fetch_values = hkpt_params_fetch_values, 72 : .fetch_subkeys = hkpt_params_fetch_subkeys, 73 : };