MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / DisconnectSomeDevices

Function DisconnectSomeDevices

rEFIt_UEFI/refit/main.cpp:1324–1455  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1322}
1323
1324VOID 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)) {

Callers 1

LoadDriversFunction · 0.85

Calls 5

StriStrFunction · 0.85
efiStrErrorFunction · 0.50
FreePoolFunction · 0.50
ReadMethod · 0.45

Tested by

no test coverage detected