2 Main file for NULL named library for level 1 shell command functions.
4 Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #include "UefiShellDriver1CommandsLib.h"
17 STATIC CONST CHAR16 mFileName
[] = L
"Driver1Commands";
18 EFI_HANDLE gShellDriver1HiiHandle
= NULL
;
19 CONST EFI_GUID gShellDriver1HiiGuid
= \
21 0xaf0b742, 0x63ec, 0x45bd, {0x8d, 0xb6, 0x71, 0xad, 0x7f, 0x2f, 0xe8, 0xe8} \
27 ShellCommandGetManFileNameDriver1 (
34 Constructor for the Shell Driver1 Commands library.
36 @param ImageHandle the image handle of the process
37 @param SystemTable the EFI System Table pointer
39 @retval EFI_SUCCESS the shell command handlers were installed sucessfully
40 @retval EFI_UNSUPPORTED the shell level required was not found.
44 UefiShellDriver1CommandsLibConstructor (
45 IN EFI_HANDLE ImageHandle
,
46 IN EFI_SYSTEM_TABLE
*SystemTable
49 // check or bit of the profiles mask
51 if (PcdGet8(PcdShellProfileMask
) && BIT0
== 0) {
52 return (EFI_UNSUPPORTED
);
56 // install our shell command handlers that are always installed
58 ShellCommandRegisterCommandName(L
"connect", ShellCommandRunConnect
, ShellCommandGetManFileNameDriver1
, 0, L
"Driver1", TRUE
);
59 ShellCommandRegisterCommandName(L
"devices", ShellCommandRunDevices
, ShellCommandGetManFileNameDriver1
, 0, L
"Driver1", TRUE
);
60 ShellCommandRegisterCommandName(L
"openinfo", ShellCommandRunOpenInfo
, ShellCommandGetManFileNameDriver1
, 0, L
"Driver1", TRUE
);
62 ShellCommandRegisterCommandName(L"devtree", ShellCommandRunDevTree , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
63 ShellCommandRegisterCommandName(L"dh", ShellCommandRunDH , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
64 ShellCommandRegisterCommandName(L"disconnect", ShellCommandRunDisconnect , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
65 ShellCommandRegisterCommandName(L"drivers", ShellCommandRunDrivers , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
66 ShellCommandRegisterCommandName(L"drvcfg", ShellCommandRunDrvCfg , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
67 ShellCommandRegisterCommandName(L"drvdiag", ShellCommandRunDrvDiag , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
68 ShellCommandRegisterCommandName(L"reconnect", ShellCommandRunReconnect , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
69 ShellCommandRegisterCommandName(L"unload", ShellCommandRunUnload , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);
73 // install the HII stuff.
75 gShellDriver1HiiHandle
= HiiAddPackages (&gShellDriver1HiiGuid
, gImageHandle
, UefiShellDriver1CommandsLibStrings
, NULL
);
76 if (gShellDriver1HiiHandle
== NULL
) {
77 return (EFI_DEVICE_ERROR
);
84 Destructory for the library. free any resources.
88 UefiShellDriver1CommandsLibDestructor (
89 IN EFI_HANDLE ImageHandle
,
90 IN EFI_SYSTEM_TABLE
*SystemTable
93 if (gShellDriver1HiiHandle
!= NULL
) {
94 HiiRemovePackages(gShellDriver1HiiHandle
);
101 GetHandleListByPotocol (
102 IN CONST EFI_GUID
*ProtocolGuid
104 EFI_HANDLE
*HandleList
;
112 // We cannot use LocateHandleBuffer since we need that NULL item on the ends of the list!
114 if (ProtocolGuid
== NULL
) {
115 Status
= gBS
->LocateHandle(AllHandles
, NULL
, NULL
, &Size
, HandleList
);
116 if (Status
== EFI_BUFFER_TOO_SMALL
) {
117 HandleList
= AllocatePool(Size
+ sizeof(EFI_HANDLE
));
118 Status
= gBS
->LocateHandle(AllHandles
, NULL
, NULL
, &Size
, HandleList
);
119 HandleList
[Size
/sizeof(EFI_HANDLE
)] = NULL
;
122 Status
= gBS
->LocateHandle(ByProtocol
, (EFI_GUID
*)ProtocolGuid
, NULL
, &Size
, HandleList
);
123 if (Status
== EFI_BUFFER_TOO_SMALL
) {
124 HandleList
= AllocatePool(Size
+ sizeof(EFI_HANDLE
));
125 Status
= gBS
->LocateHandle(ByProtocol
, (EFI_GUID
*)ProtocolGuid
, NULL
, &Size
, HandleList
);
126 HandleList
[Size
/sizeof(EFI_HANDLE
)] = NULL
;
129 if (EFI_ERROR(Status
)) {
130 if (HandleList
!= NULL
) {
131 FreePool(HandleList
);