registry/reg_dynamic.c

ソースコードを見る。

データ構造

struct  reg_dyn_values

関数

static int netlogon_params (REGVAL_CTR *regvals)
static int prod_options (REGVAL_CTR *regvals)
static int tcpip_params (REGVAL_CTR *regvals)
static int perflib_params (REGVAL_CTR *regvals)
static int perflib_009_params (REGVAL_CTR *regvals)
static int hkpt_params (REGVAL_CTR *regvals)
static int current_version (REGVAL_CTR *values)
int fetch_dynamic_reg_values (REGISTRY_KEY *key, REGVAL_CTR *val)
BOOL check_dynamic_reg_values (REGISTRY_KEY *key)

変数

static struct reg_dyn_values dynamic_values []


関数

static int netlogon_params ( REGVAL_CTR regvals  )  [static]

reg_dynamic.c36 行で定義されています。

参照先 pdb_get_account_policy()regval_ctr_addvalue()regval_ctr_numvals().

00037 {
00038         uint32 dwValue;
00039         
00040         if ( !pdb_get_account_policy(AP_REFUSE_MACHINE_PW_CHANGE, &dwValue) )
00041                 dwValue = 0;
00042                 
00043         regval_ctr_addvalue( regvals, "RefusePasswordChange", REG_DWORD,
00044                 (char*)&dwValue, sizeof(dwValue) );
00045 
00046         return regval_ctr_numvals( regvals );
00047 }

static int prod_options ( REGVAL_CTR regvals  )  [static]

reg_dynamic.c52 行で定義されています。

参照先 push_ucs2()regval_ctr_addvalue()regval_ctr_numvals()ROLE_DOMAIN_BDCROLE_DOMAIN_MEMBERROLE_DOMAIN_PDCROLE_STANDALONE.

00053 {
00054         const char              *value_ascii = "";
00055         fstring                 value;
00056         int                     value_length;
00057         
00058         switch (lp_server_role()) {
00059                 case ROLE_DOMAIN_PDC:
00060                 case ROLE_DOMAIN_BDC:
00061                         value_ascii = "LanmanNT";
00062                         break;
00063                 case ROLE_STANDALONE:
00064                         value_ascii = "ServerNT";
00065                         break;
00066                 case ROLE_DOMAIN_MEMBER:
00067                         value_ascii = "WinNT";
00068                         break;
00069         }
00070                 
00071         value_length = push_ucs2( value, value, value_ascii, sizeof(value), 
00072                 STR_TERMINATE|STR_NOALIGN );
00073         regval_ctr_addvalue( regvals, "ProductType", REG_SZ, value, 
00074                 value_length );
00075         
00076         return regval_ctr_numvals( regvals );
00077 }

static int tcpip_params ( REGVAL_CTR regvals  )  [static]

reg_dynamic.c82 行で定義されています。

参照先 get_mydnsdomname()myhostname()push_ucs2()regval_ctr_addvalue()regval_ctr_numvals().

00083 {
00084         fstring                 value;
00085         int                     value_length;
00086         char                    *hname;
00087         fstring                 mydomainname;
00088         
00089 
00090         hname = myhostname();
00091         value_length = push_ucs2( value, value, hname, sizeof(value), STR_TERMINATE|STR_NOALIGN);               
00092         regval_ctr_addvalue( regvals, "Hostname",REG_SZ, value, value_length );
00093         
00094         get_mydnsdomname( mydomainname );               
00095         value_length = push_ucs2( value, value, mydomainname, sizeof(value), STR_TERMINATE|STR_NOALIGN);                
00096         regval_ctr_addvalue( regvals, "Domain", REG_SZ, value, value_length );
00097                 
00098         return regval_ctr_numvals( regvals );
00099 }

static int perflib_params ( REGVAL_CTR regvals  )  [static]

reg_dynamic.c104 行で定義されています。

参照先 reg_perfcount_get_base_index()reg_perfcount_get_last_counter()reg_perfcount_get_last_help()regval_ctr_addvalue()regval_ctr_numvals().

00105 {
00106         int base_index = -1;
00107         int last_counter = -1;
00108         int last_help = -1;
00109         int version = 0x00010001;
00110         
00111         base_index = reg_perfcount_get_base_index();
00112         regval_ctr_addvalue(regvals, "Base Index", REG_DWORD, (char *)&base_index, sizeof(base_index));
00113         last_counter = reg_perfcount_get_last_counter(base_index);
00114         regval_ctr_addvalue(regvals, "Last Counter", REG_DWORD, (char *)&last_counter, sizeof(last_counter));
00115         last_help = reg_perfcount_get_last_help(last_counter);
00116         regval_ctr_addvalue(regvals, "Last Help", REG_DWORD, (char *)&last_help, sizeof(last_help));
00117         regval_ctr_addvalue(regvals, "Version", REG_DWORD, (char *)&version, sizeof(version));
00118 
00119         return regval_ctr_numvals( regvals );
00120 }

static int perflib_009_params ( REGVAL_CTR regvals  )  [static]

reg_dynamic.c125 行で定義されています。

参照先 reg_perfcount_get_base_index()reg_perfcount_get_counter_help()reg_perfcount_get_counter_names()regval_ctr_addvalue()regval_ctr_numvals().

00126 {
00127         int base_index;
00128         int buffer_size;
00129         char *buffer = NULL;
00130 
00131         base_index = reg_perfcount_get_base_index();
00132         buffer_size = reg_perfcount_get_counter_names(base_index, &buffer);
00133         regval_ctr_addvalue(regvals, "Counter", REG_MULTI_SZ, buffer, buffer_size);
00134         if(buffer_size > 0)
00135                 SAFE_FREE(buffer);
00136         buffer_size = reg_perfcount_get_counter_help(base_index, &buffer);
00137         regval_ctr_addvalue(regvals, "Help", REG_MULTI_SZ, buffer, buffer_size);
00138         if(buffer_size > 0)
00139                 SAFE_FREE(buffer);
00140         
00141         return regval_ctr_numvals( regvals );
00142 }

static int hkpt_params ( REGVAL_CTR regvals  )  [static]

reg_dynamic.c147 行で定義されています。

参照先 reg_perfcount_get_base_index()reg_perfcount_get_counter_help()reg_perfcount_get_counter_names()regval_ctr_addvalue()regval_ctr_numvals().

00148 {
00149         uint32 base_index;
00150         uint32 buffer_size;
00151         char *buffer = NULL;
00152 
00153         /* This is ALMOST the same as perflib_009_params, but HKPT has
00154            a "Counters" entry instead of a "Counter" key. <Grrrr> */
00155            
00156         base_index = reg_perfcount_get_base_index();
00157         buffer_size = reg_perfcount_get_counter_names(base_index, &buffer);
00158         regval_ctr_addvalue(regvals, "Counters", REG_MULTI_SZ, buffer, buffer_size);
00159         
00160         if(buffer_size > 0)
00161                 SAFE_FREE(buffer);
00162                 
00163         buffer_size = reg_perfcount_get_counter_help(base_index, &buffer);
00164         regval_ctr_addvalue(regvals, "Help", REG_MULTI_SZ, buffer, buffer_size);
00165         if(buffer_size > 0)
00166                 SAFE_FREE(buffer);
00167         
00168         return regval_ctr_numvals( regvals );
00169 }

static int current_version ( REGVAL_CTR values  )  [static]

reg_dynamic.c174 行で定義されています。

参照先 fstr_sprintf()push_ucs2()regval_ctr_addvalue()regval_ctr_numvals()values.

00175 {
00176         const char *sysroot_string = "c:\\Windows";
00177         fstring sysversion;
00178         fstring value;
00179         uint32 value_length;
00180         
00181         value_length = push_ucs2( value, value, sysroot_string, sizeof(value), 
00182                 STR_TERMINATE|STR_NOALIGN );
00183         regval_ctr_addvalue( values, "SystemRoot", REG_SZ, value, value_length );
00184         
00185         fstr_sprintf( sysversion, "%d.%d", lp_major_announce_version(), lp_minor_announce_version() );
00186         value_length = push_ucs2( value, value, sysversion, sizeof(value), 
00187                 STR_TERMINATE|STR_NOALIGN );
00188         regval_ctr_addvalue( values, "CurrentVersion", REG_SZ, value, value_length );
00189         
00190                 
00191         return regval_ctr_numvals( values );
00192 }

int fetch_dynamic_reg_values ( REGISTRY_KEY key,
REGVAL_CTR val 
)

reg_dynamic.c214 行で定義されています。

参照先 dynamic_valuesreg_dyn_values::fetch_values_RegistryKey::namenormalize_reg_path()reg_dyn_values::path.

参照元 fetch_reg_values().

00215 {
00216         int i;
00217         pstring path;
00218         
00219         pstrcpy( path, key->name );
00220         normalize_reg_path( path );
00221         
00222         for ( i=0; dynamic_values[i].path; i++ ) {
00223                 if ( strcmp( path, dynamic_values[i].path ) == 0 )
00224                         return dynamic_values[i].fetch_values( val );
00225         }
00226         
00227         return -1;
00228 }

BOOL check_dynamic_reg_values ( REGISTRY_KEY key  ) 

reg_dynamic.c233 行で定義されています。

参照先 dynamic_values_RegistryKey::namenormalize_reg_path()reg_dyn_values::path.

参照元 store_reg_values().

00234 {
00235         int i;
00236         pstring path;
00237         
00238         pstrcpy( path, key->name );
00239         normalize_reg_path( path );
00240         
00241         for ( i=0; dynamic_values[i].path; i++ ) {
00242                 /* can't write to dynamic keys */
00243                 if ( strcmp( path, dynamic_values[i].path ) == 0 )
00244                         return True;
00245         }
00246         
00247         return False;
00248 }


変数

struct reg_dyn_values dynamic_values[] [static]

初期値:

 {
        { "HKLM/SYSTEM/CURRENTCONTROLSET/SERVICES/NETLOGON/PARAMETERS", &netlogon_params  },
        { "HKLM/SYSTEM/CURRENTCONTROLSET/CONTROL/PRODUCTOPTIONS",       &prod_options     },
        { "HKLM/SYSTEM/CURRENTCONTROLSET/SERVICES/TCPIP/PARAMETERS",    &tcpip_params     },
        { "HKLM/SOFTWARE/MICROSOFT/WINDOWS NT/CURRENTVERSION/PERFLIB",  &perflib_params   }, 
        { "HKLM/SOFTWARE/MICROSOFT/WINDOWS NT/CURRENTVERSION/PERFLIB/009", &perflib_009_params }, 
        { "HKLM/SOFTWARE/MICROSOFT/WINDOWS NT/CURRENTVERSION",          &current_version }, 
        { "HKPT", &hkpt_params },
        { NULL, NULL }
}

reg_dynamic.c200 行で定義されています。

参照元 check_dynamic_reg_values()fetch_dynamic_reg_values().


Sambaに対してSat Aug 29 21:24:05 2009に生成されました。  doxygen 1.4.7