Contributed-under: TianoCore Contribution Agreement 1.0

Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Jaben Carsey <Jaben.carsey@intel.com>

1) ShellPkg/Library/UefiHandleParsingLib
    a. UefiHandleParsingLib.c – ConvertHandleToHandleIndex() and ConvertHandleIndexToHandle()
        i. Update to work correctly when handles are destroyed due to driver disconnect operations.  Same handle index is never reused.
    b. UefiHandleParsingLib.c – ParseHandleDatabaseByRelationshipWithType() and ParseHandleDatabaseForChildControllers()
        i. Expand to handle Service Binding Protocol usage such as Network stack.
2) ShellPkg/Library/UefiShellDriver1CommandsLib
    a. DevTree.c – Fix bug where the same handle is shown more than once.
    b. Dh.c – Fix use of GetDriverName() and GetDriverImageName().  The status returned must always be evaluated. 
    c. Disconnect.c – Remove requirement that a handle being disconnected must support Device Path Protocol.  This prevents driver model handles without device paths from being disconnected (i.e. Network Stack)
    d. OpenInfo.c – Fix bug when showing open info about a ControllerHandle that has been destroyed due to a disconnect or an unload operation.
    e. UefiShellDriver1CommandsLib.uni – Fix “drivers” command formatting when handle indexes have more than 2 characters.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13786 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
mdkinney
2012-10-05 22:26:25 +00:00
parent c42c9cac8c
commit f330ff35dc
6 changed files with 241 additions and 124 deletions

View File

@ -1,7 +1,7 @@
/** @file
Main file for Dh shell Driver1 function.
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@ -394,11 +394,14 @@ DisplayDriverModelHandle (
Language,
&DriverName
);
if (DriverName == NULL) {
if (EFI_ERROR (Status)) {
Status = GetDriverImageName (
DriverBindingHandleBuffer[Index],
&DriverName
);
if (EFI_ERROR (Status)) {
DriverName = NULL;
}
}
if (Image) {
@ -537,6 +540,9 @@ DisplayDriverModelHandle (
}
Status = GetDriverName (Handle, Language, &DriverName);
if (EFI_ERROR (Status)) {
DriverName = NULL;
}
ShellPrintHiiEx(
-1,
@ -548,11 +554,13 @@ DisplayDriverModelHandle (
DriverName!=NULL?DriverName:L"<Unknown>"
);
SHELL_FREE_NON_NULL(DriverName);
DriverName = NULL;
Status = GetDriverImageName (
Handle,
&DriverName
);
if (EFI_ERROR (Status)) {
DriverName = NULL;
}
ShellPrintHiiEx(
-1,
-1,