Alexandre Julliard : wineboot: Add a wrapper function for RegSetValueExW.

Alexandre Julliard julliard at winehq.org
Thu Jan 28 11:15:36 CST 2010


Module: wine
Branch: master
Commit: 4e2827aa3362f428f021037ca2d0e5e4f53a6f5d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4e2827aa3362f428f021037ca2d0e5e4f53a6f5d

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Jan 28 13:08:59 2010 +0100

wineboot: Add a wrapper function for RegSetValueExW.

---

 programs/wineboot/wineboot.c |   50 ++++++++++++++++++++++-------------------
 1 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index 28c88a5..e6c6e08 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -158,6 +158,12 @@ done:
     return ret;
 }
 
+/* wrapper for RegSetValueExW */
+static DWORD set_reg_value( HKEY hkey, const WCHAR *name, const WCHAR *value )
+{
+    return RegSetValueExW( hkey, name, 0, REG_SZ, (BYTE *)value, (strlenW(value) + 1) * sizeof(WCHAR) );
+}
+
 /* create the volatile hardware registry keys */
 static void create_hardware_registry_keys(void)
 {
@@ -192,7 +198,7 @@ static void create_hardware_registry_keys(void)
                          KEY_ALL_ACCESS, NULL, &system_key, NULL ))
         return;
 
-    RegSetValueExW( system_key, IdentifierW, 0, REG_SZ, (const BYTE *)SysidW, sizeof(SysidW) );
+    set_reg_value( system_key, IdentifierW, SysidW );
 
     if (RegCreateKeyExW( system_key, fpuW, 0, NULL, REG_OPTION_VOLATILE,
                          KEY_ALL_ACCESS, NULL, &fpu_key, NULL ))
@@ -209,19 +215,16 @@ static void create_hardware_registry_keys(void)
         if (!RegCreateKeyExW( cpu_key, numW, 0, NULL, REG_OPTION_VOLATILE,
                               KEY_ALL_ACCESS, NULL, &hkey, NULL ))
         {
-            RegSetValueExW( hkey, IdentifierW, 0, REG_SZ,
-                            (const BYTE *)idW, (strlenW(idW) + 1) * sizeof(WCHAR) );
+            set_reg_value( hkey, IdentifierW, idW );
             /*TODO; report amd's properly*/
-            RegSetValueExW( hkey, VendorIdentifierW, 0, REG_SZ,
-                            (const BYTE *)VenidIntelW, sizeof(VenidIntelW) );
+            set_reg_value( hkey, VendorIdentifierW, VenidIntelW );
             RegSetValueExW( hkey, mhzKeyW, 0, REG_DWORD, (BYTE *)&power_info.MaxMhz, sizeof(DWORD) );
             RegCloseKey( hkey );
         }
         if (!RegCreateKeyExW( fpu_key, numW, 0, NULL, REG_OPTION_VOLATILE,
                               KEY_ALL_ACCESS, NULL, &hkey, NULL ))
         {
-            RegSetValueExW( hkey, IdentifierW, 0, REG_SZ,
-                            (const BYTE *)idW, (strlenW(idW) + 1) * sizeof(WCHAR) );
+            set_reg_value( hkey, IdentifierW, idW );
             RegCloseKey( hkey );
         }
     }
@@ -258,21 +261,21 @@ static void create_environment_registry_keys( void )
     if (RegCreateKeyW( HKEY_LOCAL_MACHINE, EnvironW, &env_key )) return;
 
     sprintfW( buffer, PercentDW, NtCurrentTeb()->Peb->NumberOfProcessors );
-    RegSetValueExW( env_key, NumProcW, 0, REG_SZ, (BYTE *)buffer, (strlenW(buffer) + 1) * sizeof(WCHAR) );
+    set_reg_value( env_key, NumProcW, buffer );
 
     /* TODO: currently hardcoded x86, add different processors */
-    RegSetValueExW( env_key, ProcArchW, 0, REG_SZ, (const BYTE *)x86W, sizeof(x86W) );
+    set_reg_value( env_key, ProcArchW, x86W );
 
     /* TODO: currently hardcoded Intel, add different processors */
     sprintfW( buffer, IntelCpuDescrW, sci.Level, HIBYTE(sci.Revision), LOBYTE(sci.Revision) );
-    RegSetValueExW( env_key, ProcIdW, 0, REG_SZ, (BYTE *)buffer, (strlenW(buffer) + 1) * sizeof(WCHAR) );
+    set_reg_value( env_key, ProcIdW, buffer );
 
     sprintfW( buffer, PercentDW, sci.Level );
-    RegSetValueExW( env_key, ProcLvlW, 0, REG_SZ, (BYTE *)buffer, (strlenW(buffer) + 1) * sizeof(WCHAR) );
+    set_reg_value( env_key, ProcLvlW, buffer );
 
     /* Properly report model/stepping */
     sprintfW( buffer, Percent04XW, sci.Revision );
-    RegSetValueExW( env_key, ProcRevW, 0, REG_SZ, (BYTE *)buffer, (strlenW(buffer) + 1) * sizeof(WCHAR) );
+    set_reg_value( env_key, ProcRevW, buffer );
 
     RegCloseKey( env_key );
 }
@@ -291,7 +294,7 @@ static void create_volatile_environment_registry_key(void)
     static const WCHAR ConsoleW[] = {'C','o','n','s','o','l','e',0};
     static const WCHAR EmptyW[] = {0};
     WCHAR path[MAX_PATH];
-    WCHAR computername[MAX_COMPUTERNAME_LENGTH + 1 + 2] = {'\\','\\'};
+    WCHAR computername[MAX_COMPUTERNAME_LENGTH + 1 + 2];
     DWORD size = MAX_COMPUTERNAME_LENGTH + 1;
     HKEY hkey;
     HRESULT hr;
@@ -301,32 +304,33 @@ static void create_volatile_environment_registry_key(void)
         return;
 
     hr = SHGetFolderPathW( NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path );
-    if (SUCCEEDED(hr))
-        RegSetValueExW( hkey, AppDataW, 0, REG_SZ, (const BYTE *)path, (strlenW(path) + 1) * sizeof(WCHAR) );
+    if (SUCCEEDED(hr)) set_reg_value( hkey, AppDataW, path );
 
-    RegSetValueExW( hkey, ClientNameW, 0, REG_SZ, (const BYTE *)ConsoleW, sizeof(ConsoleW) );
+    set_reg_value( hkey, ClientNameW, ConsoleW );
 
     /* Write the profile path's drive letter and directory components into
      * HOMEDRIVE and HOMEPATH respectively. */
     hr = SHGetFolderPathW( NULL, CSIDL_PROFILE, NULL, SHGFP_TYPE_CURRENT, path );
     if (SUCCEEDED(hr))
     {
-        RegSetValueExW( hkey, HomePathW, 0, REG_SZ, (const BYTE *)&path[2], (strlenW(path) + 1 - 2) * sizeof(WCHAR) );
+        set_reg_value( hkey, HomePathW, path + 2 );
         path[2] = '\0';
-        RegSetValueExW( hkey, HomeDriveW, 0, REG_SZ, (const BYTE *)path, 3 * sizeof(WCHAR) );
+        set_reg_value( hkey, HomeDriveW, path );
     }
 
-    RegSetValueExW( hkey, HomeShareW, 0, REG_SZ, (const BYTE *)EmptyW, sizeof(EmptyW) );
+    set_reg_value( hkey, HomeShareW, EmptyW );
 
     hr = SHGetFolderPathW( NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path );
     if (SUCCEEDED(hr))
-        RegSetValueExW( hkey, LocalAppDataW, 0, REG_SZ, (const BYTE *)path, (strlenW(path) + 1) * sizeof(WCHAR) );
+        set_reg_value( hkey, LocalAppDataW, path );
 
     if (GetComputerNameW(&computername[2], &size))
-        RegSetValueExW( hkey, LogonServerW, 0, REG_SZ, (const BYTE *)computername, (size + 1 + 2) * sizeof(WCHAR) );
-
-    RegSetValueExW( hkey, SessionNameW, 0, REG_SZ, (const BYTE *)ConsoleW, sizeof(ConsoleW) );
+    {
+        computername[0] = computername[1] = '\\';
+        set_reg_value( hkey, LogonServerW, computername );
+    }
 
+    set_reg_value( hkey, SessionNameW, ConsoleW );
     RegCloseKey( hkey );
 }
 




More information about the wine-cvs mailing list