MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / DriverChangeNotify

Method DriverChangeNotify

Ext2Mgr/Ext2MgrDlg.cpp:1344–1413  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1342}
1343
1344VOID
1345CExt2MgrDlg::DriverChangeNotify(
1346 PEXT2_LETTER drvLetter,
1347 BOOL bArrival
1348 )
1349{
1350 ULONGLONG LetterMask = 0;
1351 ULONG i;
1352
1353 if (!m_bHandleChange) {
1354 return;
1355 }
1356
1357 if (bArrival) {
1358 if (!drvLetter->bUsed) {
1359 Ext2CleanDrvLetter(drvLetter);
1360 Ext2QueryDrvLetter(drvLetter);
1361 }
1362 }
1363
1364 if (drvLetter->Letter >= '0' && drvLetter->Letter <= '9') {
1365 LetterMask = ((ULONGLONG) 1) << (drvLetter->Letter - '0' + 32);
1366 } else if (drvLetter->Letter >= 'A' && drvLetter->Letter <= 'Z') {
1367 LetterMask = ((ULONGLONG) 1) << (drvLetter->Letter - 'A');
1368 }
1369
1370 if (drvLetter->bUsed) {
1371
1372 if (NULL != drvLetter->Extent) {
1373
1374 PEXT2_VOLUME Volume = &gVols[0];
1375 for (i=0; i < g_nVols && Volume != NULL; i++) {
1376 if (Ext2CompareExtents(drvLetter->Extent, Volume->Extent)) {
1377 if (bArrival) {
1378 Volume->DrvLetters |= LetterMask;
1379 } else {
1380 Volume->DrvLetters &= ~LetterMask;
1381 }
1382 UpdateVolume(Volume);
1383 break;
1384 }
1385 Volume = Volume->Next;
1386 }
1387 }
1388
1389 for (i=0; i < g_nCdroms; i++) {
1390 PEXT2_CDROM Cdrom = &gCdroms[i];
1391 if (!_stricmp(drvLetters->SymLink, Cdrom->Name)) {
1392 if (bArrival) {
1393 Cdrom->DrvLetters |= LetterMask;
1394 } else {
1395 Cdrom->DrvLetters &= ~LetterMask;
1396 }
1397 UpdateCdrom(Cdrom);
1398 break;
1399 }
1400 }
1401 }

Callers

nothing calls this directly

Calls 4

Ext2CleanDrvLetterFunction · 0.85
Ext2QueryDrvLetterFunction · 0.85
Ext2CompareExtentsFunction · 0.85
Ext2RemoveMountPointFunction · 0.85

Tested by

no test coverage detected