+\r
+ //\r
+ // Skip handles that do not have device path protocol\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ TheHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ NULL,\r
+ NULL,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_TEST_PROTOCOL\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ continue;\r
+ }\r
+\r
+ //\r
+ // Skip handles that do have parents\r
+ //\r
+ ParentControllerHandleBuffer = NULL;\r
+ Status = PARSE_HANDLE_DATABASE_PARENTS (\r
+ TheHandle,\r
+ &ParentControllerHandleCount,\r
+ &ParentControllerHandleBuffer\r
+ );\r
+ SHELL_FREE_NON_NULL (ParentControllerHandleBuffer);\r
+ if (ParentControllerHandleCount > 0) {\r
+ continue;\r
+ }\r
+\r
+ //\r
+ // Start a devtree from TheHandle that has a device path and no parents\r
+ //\r