int regsubkey_ctr_addkey | ( | REGSUBKEY_CTR * | ctr, | |
const char * | keyname | |||
) |
reg_objects.c の 44 行で定義されています。
参照先 REGSUBKEY_CTR::num_subkeys・regsubkey_ctr_key_exists()・REGSUBKEY_CTR::subkeys・talloc_strdup().
参照元 _reg_create_key_ex()・add_new_svc_name()・copy_registry_tree()・eventlog_add_source()・eventlog_init_keys()・init_registry_data()・key_driver_fetch_keys()・key_print_fetch_keys()・key_printers_fetch_keys()・reg_load_tree()・regdb_fetch_keys()・shares_subkey_info()・write_registry_tree().
00045 { 00046 if ( !keyname ) 00047 return ctr->num_subkeys; 00048 00049 /* make sure the keyname is not already there */ 00050 00051 if ( regsubkey_ctr_key_exists( ctr, keyname ) ) 00052 return ctr->num_subkeys; 00053 00054 /* allocate a space for the char* in the array */ 00055 00056 if (ctr->subkeys == NULL) { 00057 ctr->subkeys = TALLOC_P(ctr, char *); 00058 } else { 00059 ctr->subkeys = TALLOC_REALLOC_ARRAY(ctr, ctr->subkeys, char *, ctr->num_subkeys+1); 00060 } 00061 00062 if (!ctr->subkeys) { 00063 ctr->num_subkeys = 0; 00064 return 0; 00065 } 00066 00067 /* allocate the string and save it in the array */ 00068 00069 ctr->subkeys[ctr->num_subkeys] = talloc_strdup( ctr, keyname ); 00070 ctr->num_subkeys++; 00071 00072 return ctr->num_subkeys; 00073 }
int regsubkey_ctr_delkey | ( | REGSUBKEY_CTR * | ctr, | |
const char * | keyname | |||
) |
reg_objects.c の 79 行で定義されています。
参照先 REGSUBKEY_CTR::num_subkeys・strequal()・REGSUBKEY_CTR::subkeys.
参照元 _reg_delete_key().
00080 { 00081 int i; 00082 00083 if ( !keyname ) 00084 return ctr->num_subkeys; 00085 00086 /* make sure the keyname is actually already there */ 00087 00088 for ( i=0; i<ctr->num_subkeys; i++ ) { 00089 if ( strequal( ctr->subkeys[i], keyname ) ) 00090 break; 00091 } 00092 00093 if ( i == ctr->num_subkeys ) 00094 return ctr->num_subkeys; 00095 00096 /* update if we have any keys left */ 00097 ctr->num_subkeys--; 00098 if ( i < ctr->num_subkeys ) 00099 memmove( &ctr->subkeys[i], &ctr->subkeys[i+1], sizeof(char*) * (ctr->num_subkeys-i) ); 00100 00101 return ctr->num_subkeys; 00102 }
BOOL regsubkey_ctr_key_exists | ( | REGSUBKEY_CTR * | ctr, | |
const char * | keyname | |||
) |
reg_objects.c の 108 行で定義されています。
参照先 REGSUBKEY_CTR::num_subkeys・strequal()・REGSUBKEY_CTR::subkeys.
参照元 eventlog_add_source()・key_printers_store_keys()・regdb_store_keys()・regsubkey_ctr_addkey()・svcctl_init_keys().
00109 { 00110 int i; 00111 00112 if (!ctr->subkeys) { 00113 return False; 00114 } 00115 00116 for ( i=0; i<ctr->num_subkeys; i++ ) { 00117 if ( strequal( ctr->subkeys[i],keyname ) ) 00118 return True; 00119 } 00120 00121 return False; 00122 }
int regsubkey_ctr_numkeys | ( | REGSUBKEY_CTR * | ctr | ) |
reg_objects.c の 128 行で定義されています。
参照先 REGSUBKEY_CTR::num_subkeys.
参照元 add_printers_by_registry()・get_subkey_information()・key_driver_fetch_keys()・key_print_fetch_keys()・key_printers_fetch_keys()・key_printers_store_keys()・reg_write_tree()・regdb_store_keys()・regdb_store_keys_internal()・regfio_write_key().
00129 { 00130 return ctr->num_subkeys; 00131 }
char* regsubkey_ctr_specific_key | ( | REGSUBKEY_CTR * | ctr, | |
uint32 | key_index | |||
) |
reg_objects.c の 137 行で定義されています。
参照元 add_printers_by_registry()・fetch_reg_keys_specific()・get_subkey_information()・key_printers_store_keys()・reg_write_tree()・regdb_store_keys()・regdb_store_keys_internal()・regfio_write_key().
00138 { 00139 if ( ! (key_index < ctr->num_subkeys) ) 00140 return NULL; 00141 00142 return ctr->subkeys[key_index]; 00143 }
int regval_ctr_numvals | ( | REGVAL_CTR * | ctr | ) |
reg_objects.c の 153 行で定義されています。
参照元 _spoolss_enumprinterdata()・_spoolss_enumprinterdataex()・convert_values_to_printer_info_2()・current_version()・driver_arch_fetch_values()・get_remote_printer_publishing_data()・get_value_information()・hkpt_params()・key_forms_fetch_values()・key_printers_fetch_values()・key_printers_store_values()・netlogon_params()・pack_values()・perflib_009_params()・perflib_params()・prod_options()・regdb_fetch_values()・regdb_pack_values()・regfio_write_key()・spoolss_hnd_enumprinterdataex()・tcpip_params().
00154 { 00155 return ctr->num_values; 00156 }
REGISTRY_VALUE* dup_registry_value | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 163 行で定義されています。
参照先 REGISTRY_VALUE::data_p・memdup()・REGISTRY_VALUE::size.
参照元 _reg_query_value()・fetch_reg_values_specific().
00164 { 00165 REGISTRY_VALUE *copy = NULL; 00166 00167 if ( !val ) 00168 return NULL; 00169 00170 if ( !(copy = SMB_MALLOC_P( REGISTRY_VALUE)) ) { 00171 DEBUG(0,("dup_registry_value: malloc() failed!\n")); 00172 return NULL; 00173 } 00174 00175 /* copy all the non-pointer initial data */ 00176 00177 memcpy( copy, val, sizeof(REGISTRY_VALUE) ); 00178 00179 copy->size = 0; 00180 copy->data_p = NULL; 00181 00182 if ( val->data_p && val->size ) 00183 { 00184 if ( !(copy->data_p = (uint8 *)memdup( val->data_p, 00185 val->size )) ) { 00186 DEBUG(0,("dup_registry_value: memdup() failed for [%d] bytes!\n", 00187 val->size)); 00188 SAFE_FREE( copy ); 00189 return NULL; 00190 } 00191 copy->size = val->size; 00192 } 00193 00194 return copy; 00195 }
void free_registry_value | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 201 行で定義されています。
参照元 _reg_enum_value()・_reg_query_value().
00202 { 00203 if ( !val ) 00204 return; 00205 00206 SAFE_FREE( val->data_p ); 00207 SAFE_FREE( val ); 00208 00209 return; 00210 }
uint8* regval_data_p | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 215 行で定義されています。
参照元 _reg_enum_value()・_spoolss_enumprinterdata()・_spoolss_enumprinterdataex()・convert_values_to_printer_info_2()・create_vk_record()・get_printer_dataex()・is_printer_published()・key_printers_store_values()・pack_values()・reg_init_regval_buffer()・regdb_pack_values()・regval_dword()・regval_sz()・svcctl_get_secdesc()・svcctl_lookup_description()・svcctl_lookup_dispname()・sync_eventlog_params().
00216 { 00217 return val->data_p; 00218 }
uint32 regval_size | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 223 行で定義されています。
参照先 REGISTRY_VALUE::size.
参照元 _reg_enum_value()・_spoolss_enumprinterdata()・_spoolss_enumprinterdataex()・convert_values_to_printer_info_2()・create_vk_record()・get_printer_dataex()・is_printer_published()・key_printers_store_values()・pack_values()・reg_init_regval_buffer()・regdb_pack_values()・regfio_write_key()・regval_sz()・svcctl_get_secdesc()・svcctl_lookup_description()・svcctl_lookup_dispname().
00224 { 00225 return val->size; 00226 }
char* regval_name | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 231 行で定義されています。
参照先 REGISTRY_VALUE::valuename.
参照元 _spoolss_enumprinterdata()・_spoolss_enumprinterdataex()・convert_values_to_printer_info_2()・create_vk_record()・key_printers_store_values()・pack_values()・regdb_pack_values()・regfio_write_key().
00232 { 00233 return val->valuename; 00234 }
uint32 regval_type | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 239 行で定義されています。
参照先 REGISTRY_VALUE::type.
参照元 _spoolss_enumprinterdata()・_spoolss_enumprinterdataex()・create_vk_record()・get_printer_dataex()・is_printer_published()・key_printers_store_values()・pack_values()・regdb_pack_values().
00240 { 00241 return val->type; 00242 }
REGISTRY_VALUE* regval_ctr_specific_value | ( | REGVAL_CTR * | ctr, | |
uint32 | idx | |||
) |
reg_objects.c の 249 行で定義されています。
参照先 REGVAL_CTR::values.
参照元 _reg_query_value()・_spoolss_enumprinterdata()・_spoolss_enumprinterdataex()・convert_values_to_printer_info_2()・fetch_reg_values_specific()・get_value_information()・key_printers_fetch_values()・key_printers_store_values()・pack_values()・regdb_pack_values()・regfio_write_key()・spoolss_hnd_enumprinterdataex().
00250 { 00251 if ( !(idx < ctr->num_values) ) 00252 return NULL; 00253 00254 return ctr->values[idx]; 00255 }
BOOL regval_ctr_key_exists | ( | REGVAL_CTR * | ctr, | |
const char * | value | |||
) |
reg_objects.c の 261 行で定義されています。
参照先 REGVAL_CTR::num_values・strequal()・REGISTRY_VALUE::valuename・REGVAL_CTR::values.
参照元 eventlog_init_keys()・init_registry_data().
00262 { 00263 int i; 00264 00265 for ( i=0; i<ctr->num_values; i++ ) { 00266 if ( strequal( ctr->values[i]->valuename, value) ) 00267 return True; 00268 } 00269 00270 return False; 00271 }
int regval_ctr_addvalue | ( | REGVAL_CTR * | ctr, | |
const char * | name, | |||
uint16 | type, | |||
const char * | data_p, | |||
size_t | size | |||
) |
reg_objects.c の 276 行で定義されています。
参照先 REGISTRY_VALUE::data_p・REGVAL_CTR::num_values・regval_ctr_delvalue()・REGISTRY_VALUE::size・REGISTRY_VALUE::type・REGVAL_CTR::values.
参照元 _reg_query_value()・_reg_set_value()・add_new_svc_name()・add_printer_data()・copy_registry_tree()・current_version()・eventlog_add_source()・eventlog_init_keys()・fill_in_driver_values()・fill_in_printer_values()・fill_service_values()・hkpt_params()・init_registry_data()・key_forms_fetch_values()・map_bool_into_ctr()・map_dword_into_ctr()・map_single_multi_sz_into_ctr()・map_sz_into_ctr()・netlogon_params()・perflib_009_params()・perflib_params()・prod_options()・reg_load_tree()・regdb_unpack_values()・rpccli_spoolss_enumprinterdataex()・store_printer_guid()・svcctl_set_secdesc()・tcpip_params()・unpack_values()・write_registry_tree().
00278 { 00279 if ( !name ) 00280 return ctr->num_values; 00281 00282 /* Delete the current value (if it exists) and add the new one */ 00283 00284 regval_ctr_delvalue( ctr, name ); 00285 00286 /* allocate a slot in the array of pointers */ 00287 00288 if ( ctr->num_values == 0 ) { 00289 ctr->values = TALLOC_P( ctr, REGISTRY_VALUE *); 00290 } else { 00291 ctr->values = TALLOC_REALLOC_ARRAY( ctr, ctr->values, REGISTRY_VALUE *, ctr->num_values+1 ); 00292 } 00293 00294 if (!ctr->values) { 00295 ctr->num_values = 0; 00296 return 0; 00297 } 00298 00299 /* allocate a new value and store the pointer in the arrya */ 00300 00301 ctr->values[ctr->num_values] = TALLOC_P( ctr, REGISTRY_VALUE); 00302 if (!ctr->values[ctr->num_values]) { 00303 ctr->num_values = 0; 00304 return 0; 00305 } 00306 00307 /* init the value */ 00308 00309 fstrcpy( ctr->values[ctr->num_values]->valuename, name ); 00310 ctr->values[ctr->num_values]->type = type; 00311 if (size) { 00312 ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP( 00313 ctr, data_p, size ); 00314 if (!ctr->values[ctr->num_values]->data_p) { 00315 ctr->num_values = 0; 00316 return 0; 00317 } 00318 } else { 00319 ctr->values[ctr->num_values]->data_p = NULL; 00320 } 00321 ctr->values[ctr->num_values]->size = size; 00322 ctr->num_values++; 00323 00324 return ctr->num_values; 00325 }
int regval_ctr_copyvalue | ( | REGVAL_CTR * | ctr, | |
REGISTRY_VALUE * | val | |||
) |
reg_objects.c の 331 行で定義されています。
参照先 REGISTRY_VALUE::data_p・REGVAL_CTR::num_values・REGISTRY_VALUE::size・REGISTRY_VALUE::type・REGISTRY_VALUE::valuename・REGVAL_CTR::values.
参照元 key_printers_fetch_values().
00332 { 00333 if ( val ) { 00334 /* allocate a slot in the array of pointers */ 00335 00336 if ( ctr->num_values == 0 ) { 00337 ctr->values = TALLOC_P( ctr, REGISTRY_VALUE *); 00338 } else { 00339 ctr->values = TALLOC_REALLOC_ARRAY( ctr, ctr->values, REGISTRY_VALUE *, ctr->num_values+1 ); 00340 } 00341 00342 if (!ctr->values) { 00343 ctr->num_values = 0; 00344 return 0; 00345 } 00346 00347 /* allocate a new value and store the pointer in the arrya */ 00348 00349 ctr->values[ctr->num_values] = TALLOC_P( ctr, REGISTRY_VALUE); 00350 if (!ctr->values[ctr->num_values]) { 00351 ctr->num_values = 0; 00352 return 0; 00353 } 00354 00355 /* init the value */ 00356 00357 fstrcpy( ctr->values[ctr->num_values]->valuename, val->valuename ); 00358 ctr->values[ctr->num_values]->type = val->type; 00359 if (val->size) { 00360 ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP( 00361 ctr, val->data_p, val->size ); 00362 if (!ctr->values[ctr->num_values]->data_p) { 00363 ctr->num_values = 0; 00364 return 0; 00365 } 00366 } else { 00367 ctr->values[ctr->num_values]->data_p = NULL; 00368 } 00369 ctr->values[ctr->num_values]->size = val->size; 00370 ctr->num_values++; 00371 } 00372 00373 return ctr->num_values; 00374 }
int regval_ctr_delvalue | ( | REGVAL_CTR * | ctr, | |
const char * | name | |||
) |
reg_objects.c の 381 行で定義されています。
参照先 REGVAL_CTR::num_values・strequal()・REGISTRY_VALUE::valuename・REGVAL_CTR::values.
参照元 _reg_delete_value()・delete_printer_data()・map_bool_into_ctr()・map_dword_into_ctr()・map_single_multi_sz_into_ctr()・map_sz_into_ctr()・regval_ctr_addvalue()・store_printer_guid().
00382 { 00383 int i; 00384 00385 for ( i=0; i<ctr->num_values; i++ ) { 00386 if ( strequal( ctr->values[i]->valuename, name ) ) 00387 break; 00388 } 00389 00390 /* just return if we don't find it */ 00391 00392 if ( i == ctr->num_values ) 00393 return ctr->num_values; 00394 00395 /* If 'i' was not the last element, just shift everything down one */ 00396 ctr->num_values--; 00397 if ( i < ctr->num_values ) 00398 memmove( &ctr->values[i], &ctr->values[i+1], sizeof(REGISTRY_VALUE*)*(ctr->num_values-i) ); 00399 00400 return ctr->num_values; 00401 }
REGISTRY_VALUE* regval_ctr_getvalue | ( | REGVAL_CTR * | ctr, | |
const char * | name | |||
) |
reg_objects.c の 408 行で定義されています。
参照先 REGVAL_CTR::num_values・strequal()・REGISTRY_VALUE::valuename・REGVAL_CTR::values.
参照元 _ntsvcs_get_device_reg_property()・delete_printer_data()・eventlog_add_source()・fill_svc_config()・get_printer_data()・is_printer_published()・svcctl_get_secdesc()・svcctl_lookup_description()・svcctl_lookup_dispname()・sync_eventlog_params().
00409 { 00410 int i; 00411 00412 /* search for the value */ 00413 00414 for ( i=0; i<ctr->num_values; i++ ) { 00415 if ( strequal( ctr->values[i]->valuename, name ) ) 00416 return ctr->values[i]; 00417 } 00418 00419 return NULL; 00420 }
uint32 regval_dword | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 426 行で定義されています。
参照先 regval_data_p().
00427 { 00428 uint32 data; 00429 00430 data = IVAL( regval_data_p(val), 0 ); 00431 00432 return data; 00433 }
char* regval_sz | ( | REGISTRY_VALUE * | val | ) |
reg_objects.c の 439 行で定義されています。
参照先 regval_data_p()・regval_size()・rpcstr_pull().
参照元 fill_svc_config().
00440 { 00441 static pstring data; 00442 00443 rpcstr_pull( data, regval_data_p(val), sizeof(data), regval_size(val), 0 ); 00444 00445 return data; 00446 }