| 1322 | } |
| 1323 | |
| 1324 | VOID DisconnectSomeDevices(VOID) |
| 1325 | { |
| 1326 | EFI_STATUS Status; |
| 1327 | UINTN HandleCount; |
| 1328 | UINTN Index, Index2; |
| 1329 | EFI_HANDLE *Handles ; |
| 1330 | EFI_HANDLE *ControllerHandles; |
| 1331 | UINTN ControllerHandleCount; |
| 1332 | EFI_BLOCK_IO_PROTOCOL *BlockIo = NULL; |
| 1333 | // EFI_DISK_IO_PROTOCOL *DiskIo = NULL; |
| 1334 | EFI_PCI_IO_PROTOCOL *PciIo = NULL; |
| 1335 | // EFI_FILE_PROTOCOL *RootFP = NULL; |
| 1336 | // EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *VolumeFS = NULL; |
| 1337 | PCI_TYPE00 Pci; |
| 1338 | CHAR16 *DriverName; |
| 1339 | EFI_COMPONENT_NAME_PROTOCOL *CompName; |
| 1340 | |
| 1341 | if (gDriversFlags.PartitionLoaded) { |
| 1342 | DBG("Partition driver loaded: "); |
| 1343 | // get all BlockIo handles |
| 1344 | HandleCount = 0; |
| 1345 | Handles = NULL; |
| 1346 | |
| 1347 | Status = gBS->LocateHandleBuffer(ByProtocol, &gEfiBlockIoProtocolGuid, NULL, &HandleCount, &Handles); |
| 1348 | if (Status == EFI_SUCCESS) { |
| 1349 | for (Index = 0; Index < HandleCount; Index++) { |
| 1350 | Status = gBS->HandleProtocol(Handles[Index], &gEfiBlockIoProtocolGuid, (VOID **) &BlockIo); |
| 1351 | if (EFI_ERROR(Status)) { |
| 1352 | continue; |
| 1353 | } |
| 1354 | if (BlockIo->Media->BlockSize == 2048) { |
| 1355 | // disconnect CD controller |
| 1356 | Status = gBS->DisconnectController(Handles[Index], NULL, NULL); |
| 1357 | DBG("CD disconnect %s", efiStrError(Status)); |
| 1358 | } |
| 1359 | } |
| 1360 | /* for (Index = 0; Index < HandleCount; Index++) { |
| 1361 | Status = gBS->DisconnectController(Handles[Index], NULL, NULL); |
| 1362 | } */ |
| 1363 | FreePool(Handles); |
| 1364 | } |
| 1365 | DBG("\n"); |
| 1366 | } |
| 1367 | |
| 1368 | if ((gDriversFlags.HFSLoaded) || (gDriversFlags.APFSLoaded)) { |
| 1369 | if (gDriversFlags.HFSLoaded) { |
| 1370 | DBG("HFS+ driver loaded\n"); |
| 1371 | } |
| 1372 | if (gDriversFlags.APFSLoaded) { |
| 1373 | DBG("APFS driver loaded\n"); |
| 1374 | } |
| 1375 | |
| 1376 | // get all FileSystem handles |
| 1377 | ControllerHandleCount = 0; |
| 1378 | ControllerHandles = NULL; |
| 1379 | |
| 1380 | Status = gBS->LocateHandleBuffer(ByProtocol, &gEfiSimpleFileSystemProtocolGuid, NULL, &ControllerHandleCount, &ControllerHandles); |
| 1381 | /* if (!EFI_ERROR(Status)) { |
no test coverage detected