void Config_FixGatewayDrives (void) { // Zip through the user's network drives and reconnect // them as necessary. // for (TCHAR chDrive = chDRIVE_A; chDrive <= chDRIVE_Z; ++chDrive) { TCHAR szSubmount[ MAX_PATH ]; if (!GetDriveSubmount (chDrive, szSubmount)) continue; // We've got a mapping into AFS! Remove it, rather forcefully. // TCHAR szDrive[] = "@:"; szDrive[0] = chDrive; WNetCancelConnection (szDrive, TRUE); } // Now recreate our drive mappings, based on the user's already- // specified preferences. // DRIVEMAPLIST List; QueryDriveMapList (&List); for (size_t ii = 0; ii < 26; ++ii) { if (!List.aDriveMap[ii].szMapping[0]) continue; ActivateDriveMap (List.aDriveMap[ii].chDrive, List.aDriveMap[ii].szMapping, List.aDriveMap[ii].szSubmount, List.aDriveMap[ii].fPersistent); } }
void QueryDriveMapList_FindNetworkDrives (PDRIVEMAPLIST pList, BOOL *pfFoundNew) { for (TCHAR chDrive = chDRIVE_A; chDrive <= chDRIVE_Z; ++chDrive) { TCHAR szSubmount[ MAX_PATH ]; if (!GetDriveSubmount (chDrive, szSubmount)) continue; // We've got a mapping! Drive {chDrive} is mapped to submount // {szSubmount}. See if that submount makes sense. // if (!IsWindowsNT()) { size_t iDrive = chDrive - chDRIVE_A; if (pList->aDriveMap[ iDrive ].szMapping[0] != TEXT('\0')) { pList->aDriveMap[ iDrive ].fActive = TRUE; lstrcpy (pList->aDriveMap[ iDrive ].szSubmount, szSubmount); } continue; } else // (IsWindowsNT()) { TCHAR szAfsPath[ MAX_PATH ]; if (!SubmountToPath (pList, szAfsPath, szSubmount, TRUE)) continue; // Okay, we know that drive {chDrive} is mapped to afs path {szAfsPath}. // If this drive is a global afs drive, then reject it. Otherwise, look // at pList->aDriveMap, to see if this drive mapping is already in our // list. If not, add it and set pfFoundNew. // if (DriveIsGlobalAfsDrive(chDrive)) continue; size_t iDrive = chDrive - chDRIVE_A; if (lstrcmpi (pList->aDriveMap[ iDrive ].szMapping, szAfsPath)) { *pfFoundNew = TRUE; pList->aDriveMap[ iDrive ].fPersistent = TRUE; } pList->aDriveMap[ iDrive ].fActive = TRUE; pList->aDriveMap[ iDrive ].chDrive = chDrive; lstrcpy (pList->aDriveMap[ iDrive ].szSubmount, szSubmount); AdjustAfsPath (pList->aDriveMap[ iDrive ].szMapping, szAfsPath, TRUE, TRUE); } } }