- if (Mode != TEST_MODE_LIST) {\r
- if (Lang[2] == '-') {\r
- //\r
- // Get the protocol pointer and call the function\r
- //\r
- Status = gBS->OpenProtocol(\r
- DriverHandleList[DriverHandleListLoop],\r
- &gEfiDriverDiagnostics2ProtocolGuid,\r
- (VOID**)&DriverDiagnostics2,\r
- gImageHandle,\r
+ if (AllChilds) {\r
+ ASSERT(ChildHandleList == NULL);\r
+ PARSE_HANDLE_DATABASE_MANAGED_CHILDREN(\r
+ DriverHandleList[DriverHandleListLoop], \r
+ ControllerHandleList[ControllerHandleListLoop],\r
+ &ChildHandleListCount,\r
+ &ChildHandleList);\r
+ }\r
+ for (ChildHandleListLoop = 0\r
+ ; (ChildHandleListLoop < ChildHandleListCount || ChildHandleList == NULL)\r
+ ; ChildHandleListLoop++\r
+ ){\r
+ Found = FALSE;\r
+ if (Mode != TestModeList) {\r
+ if (Lang == NULL || Lang[2] == '-') {\r
+ //\r
+ // Get the protocol pointer and call the function\r
+ //\r
+ Status = gBS->OpenProtocol(\r
+ DriverHandleList[DriverHandleListLoop],\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ (VOID**)&DriverDiagnostics2,\r
+ gImageHandle,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+ if (!EFI_ERROR(Status) && (DriverDiagnostics2 != NULL)) {\r
+ Language = GetBestLanguageForDriver(DriverDiagnostics2->SupportedLanguages, Lang, FALSE);\r
+ Found = TRUE;\r
+ Status = DriverDiagnostics2->RunDiagnostics(\r
+ DriverDiagnostics2,\r
+ ControllerHandleList[ControllerHandleListLoop],\r
+ ChildHandleList == NULL?NULL:ChildHandleList[ChildHandleListLoop],\r
+ (EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,\r
+ Language,\r
+ &ErrorType,\r
+ &OutBufferSize,\r
+ &OutBuffer);\r
+ FreePool(Language);\r
+ }\r
+ } \r
+ if (!Found && (Lang == NULL||(Lang!=NULL&&(Lang[2]!='-')))){\r
+ Status = gBS->OpenProtocol(\r
+ DriverHandleList[DriverHandleListLoop],\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ (VOID**)&DriverDiagnostics,\r
+ gImageHandle,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+ if (!EFI_ERROR(Status)) {\r
+ Language = GetBestLanguageForDriver(DriverDiagnostics->SupportedLanguages, Lang, FALSE);\r
+ Status = DriverDiagnostics->RunDiagnostics(\r
+ DriverDiagnostics,\r
+ ControllerHandleList[ControllerHandleListLoop],\r
+ ChildHandleList == NULL?NULL:ChildHandleList[ChildHandleListLoop],\r
+ (EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,\r
+ Language,\r
+ &ErrorType,\r
+ &OutBufferSize,\r
+ &OutBuffer);\r
+ FreePool(Language);\r
+ }\r
+ }\r
+ if (EFI_ERROR(Status)) {\r
+ Status2 = Status;\r
+ }\r
+ HandleIndex1 = ConvertHandleToHandleIndex(DriverHandleList[DriverHandleListLoop]);\r
+ HandleIndex2 = ConvertHandleToHandleIndex(ControllerHandleList[ControllerHandleListLoop]);\r
+ ShellPrintHiiEx(\r
+ -1,\r
+ -1,\r