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);
18 extern TCHAR AFSConfigKeyName[] = TEXT("SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters");
20 void Config_GetGlobalDriveList (DRIVEMAPLIST *pDriveList)
22 // Read the GlobalAutoMapper registry key
23 TCHAR szDriveToMapTo[5];
30 TCHAR szSubMount[256];
36 memset(pDriveList, 0, sizeof(DRIVEMAPLIST));
38 lstrcpy(szKeyName, AFSConfigKeyName);
39 lstrcat(szKeyName, TEXT("\\GlobalAutoMapper"));
41 dwResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_QUERY_VALUE, &hKey);
42 if (dwResult != ERROR_SUCCESS)
45 // Get the drive map list so we can lookup the paths that go with our submounts
46 DRIVEMAPLIST DriveMapList;
47 memset(&DriveMapList, 0, sizeof(DRIVEMAPLIST));
48 QueryDriveMapList (&DriveMapList);
51 dwDriveSize = sizeof(szDriveToMapTo);
52 dwSubMountSize = sizeof(szSubMount);
54 dwResult = RegEnumValue(hKey, dwIndex++, szDriveToMapTo, &dwDriveSize, 0, &dwType, (BYTE*)szSubMount, &dwSubMountSize);
55 if (dwResult != ERROR_SUCCESS)
58 szDriveToMapTo[0] = _totupper(szDriveToMapTo[0]);
60 int nCurDrive = szDriveToMapTo[0] - TEXT('A');
62 pDriveList->aDriveMap[nCurDrive].chDrive = szDriveToMapTo[0];
63 lstrcpy(pDriveList->aDriveMap[nCurDrive].szSubmount, szSubMount);
65 // Find the path that goes with this submount
66 SubmountToPath (&DriveMapList, pDriveList->aDriveMap[nCurDrive].szMapping, szSubMount, FALSE);
69 FreeDriveMapList(&DriveMapList);
74 BOOL Config_ReadNum (LPCTSTR pszLHS, DWORD *pdwRHS)
77 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
80 DWORD dwSize = sizeof(*pdwRHS);
81 if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pdwRHS, &dwSize) != ERROR_SUCCESS)
92 BOOL Config_ReadString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax)
95 if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
98 DWORD dwSize = sizeof(TCHAR) * cchMax;
99 if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pszRHS, &dwSize) != ERROR_SUCCESS)
110 void Config_WriteNum (LPCTSTR pszLHS, DWORD dwRHS)
114 if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
116 RegSetValueEx (hk, pszLHS, NULL, REG_DWORD, (PBYTE)&dwRHS, sizeof(dwRHS));
122 void Config_WriteString (LPCTSTR pszLHS, LPCTSTR pszRHS)
126 if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
128 RegSetValueEx (hk, pszLHS, NULL, REG_SZ, (PBYTE)pszRHS, sizeof(TCHAR) * (1+lstrlen(pszRHS)));