2 * Configuration Read/Modify Functions ________________________________________
4 * Temporarily these just modify the local Registry.
5 * In the near future, they will modify the Registry on the
6 * gateway, if a gateway is being used.
16 BOOL Config_ReadString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax);
19 * REGISTRY ___________________________________________________________________
23 extern const TCHAR AFSDConfigKeyName[] = TEXT("SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters");
24 extern const TCHAR AFSClientKeyName[] = TEXT("SOFTWARE\\OpenAFS\\Client");
26 void Config_GetGlobalDriveList (DRIVEMAPLIST *pDriveList)
28 // Read the GlobalAutoMapper registry key
29 TCHAR szDriveToMapTo[5];
36 TCHAR szSubMount[256];
42 memset(pDriveList, 0, sizeof(DRIVEMAPLIST));
44 lstrcpy(szKeyName, AFSDConfigKeyName);
45 lstrcat(szKeyName, TEXT("\\GlobalAutoMapper"));
47 dwResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_QUERY_VALUE, &hKey);
48 if (dwResult != ERROR_SUCCESS)
51 // Get the drive map list so we can lookup the paths that go with our submounts
52 DRIVEMAPLIST DriveMapList;
53 memset(&DriveMapList, 0, sizeof(DRIVEMAPLIST));
54 QueryDriveMapList (&DriveMapList);
57 dwDriveSize = sizeof(szDriveToMapTo);
58 dwSubMountSize = sizeof(szSubMount);
60 dwResult = RegEnumValue(hKey, dwIndex++, szDriveToMapTo, &dwDriveSize, 0, &dwType, (BYTE*)szSubMount, &dwSubMountSize);
61 if (dwResult != ERROR_SUCCESS)
64 szDriveToMapTo[0] = _totupper(szDriveToMapTo[0]);
66 int nCurDrive = szDriveToMapTo[0] - TEXT('A');
68 pDriveList->aDriveMap[nCurDrive].chDrive = szDriveToMapTo[0];
69 lstrcpy(pDriveList->aDriveMap[nCurDrive].szSubmount, szSubMount);
71 // Find the path that goes with this submount
72 SubmountToPath (&DriveMapList, pDriveList->aDriveMap[nCurDrive].szMapping, szSubMount, FALSE);
75 FreeDriveMapList(&DriveMapList);
80 BOOL Config_ReadGlobalNum (LPCTSTR pszLHS, DWORD *pdwRHS)
83 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
86 DWORD dwSize = sizeof(*pdwRHS);
87 if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pdwRHS, &dwSize) != ERROR_SUCCESS)
98 BOOL Config_ReadGlobalString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax)
101 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
104 DWORD dwSize = sizeof(TCHAR) * cchMax;
105 if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pszRHS, &dwSize) != ERROR_SUCCESS)
116 void Config_WriteGlobalNum (LPCTSTR pszLHS, DWORD dwRHS)
120 if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
122 RegSetValueEx (hk, pszLHS, NULL, REG_DWORD, (PBYTE)&dwRHS, sizeof(dwRHS));
128 void Config_WriteGlobalString (LPCTSTR pszLHS, LPCTSTR pszRHS)
132 if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
134 RegSetValueEx (hk, pszLHS, NULL, REG_SZ, (PBYTE)pszRHS, sizeof(TCHAR) * (1+lstrlen(pszRHS)));
140 BOOL Config_ReadUserNum (LPCTSTR pszLHS, DWORD *pdwRHS)
143 if (RegOpenKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
144 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
147 DWORD dwSize = sizeof(*pdwRHS);
148 if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pdwRHS, &dwSize) != ERROR_SUCCESS)
159 BOOL Config_ReadUserString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax)
162 if (RegOpenKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
163 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
166 DWORD dwSize = sizeof(TCHAR) * cchMax;
167 if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pszRHS, &dwSize) != ERROR_SUCCESS)
178 void Config_WriteUserNum (LPCTSTR pszLHS, DWORD dwRHS)
182 if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
184 RegSetValueEx (hk, pszLHS, NULL, REG_DWORD, (PBYTE)&dwRHS, sizeof(dwRHS));
190 void Config_WriteUserString (LPCTSTR pszLHS, LPCTSTR pszRHS)
194 if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
196 RegSetValueEx (hk, pszLHS, NULL, REG_SZ, (PBYTE)pszRHS, sizeof(TCHAR) * (1+lstrlen(pszRHS)));