| 5421 | } |
| 5422 | |
| 5423 | VOID |
| 5424 | Ext2AutoRemoveDeadLetters() |
| 5425 | { |
| 5426 | ULONGLONG LetterMask = Ext2DrvLetters[0]; |
| 5427 | DWORD i, j; |
| 5428 | PEXT2_DISK disk; |
| 5429 | PEXT2_PARTITION part; |
| 5430 | PEXT2_CDROM cdrom; |
| 5431 | |
| 5432 | if (LetterMask != -1) { |
| 5433 | AfxMessageBox("Different Mask"); |
| 5434 | } |
| 5435 | |
| 5436 | for (i = 0; i < g_nDisks; i++) { |
| 5437 | disk = &gDisks[i]; |
| 5438 | if (disk->DataParts == NULL) { |
| 5439 | continue; |
| 5440 | } |
| 5441 | for (j=0; j < disk->NumParts; j++) { |
| 5442 | part = &disk->DataParts[j]; |
| 5443 | if (part) { |
| 5444 | LetterMask &= ~(part->DrvLetters); |
| 5445 | } |
| 5446 | } |
| 5447 | } |
| 5448 | |
| 5449 | for (i = 0; i < g_nCdroms; i++) { |
| 5450 | cdrom = &gCdroms[i]; |
| 5451 | LetterMask &= ~(cdrom->DrvLetters); |
| 5452 | } |
| 5453 | |
| 5454 | for (i=0; i < 10; i++) { |
| 5455 | if (drvDigits[i].bUsed && (drvDigits[i].Extent == NULL) && |
| 5456 | (LetterMask & (((ULONGLONG) 1) << (i + 32)) ) ) { |
| 5457 | if (drvDigits[i].bInvalid && drvDigits[i].DrvType == DRIVE_FIXED) { |
| 5458 | LetterMask &= (~(((ULONGLONG) 1) << (i + 32))); |
| 5459 | Ext2RemoveMountPoint(&drvDigits[i], FALSE); |
| 5460 | Ext2RemoveDosSymLink(drvDigits[i].Letter); |
| 5461 | } |
| 5462 | } |
| 5463 | } |
| 5464 | |
| 5465 | for (i=2; i <26; i++) { |
| 5466 | if (drvLetters[i].bUsed && (drvLetters[i].Extent == NULL) && |
| 5467 | (LetterMask & (((ULONGLONG) 1) << i)) ) { |
| 5468 | if (drvLetters[i].bInvalid && drvLetters[i].DrvType == DRIVE_FIXED) { |
| 5469 | LetterMask &= (~(((ULONGLONG) 1) << i)); |
| 5470 | Ext2RemoveMountPoint(&drvLetters[i], FALSE); |
| 5471 | Ext2RemoveDosSymLink(drvLetters[i].Letter); |
| 5472 | } |
| 5473 | } |
| 5474 | } |
| 5475 | |
| 5476 | // Ext2DrvLetters[0] = LetterMask; |
| 5477 | } |
| 5478 | |
| 5479 | BOOL |
| 5480 | Ext2RemoveDosSymLink(CHAR drvChar) |
no test coverage detected